From 963df628c693f91ee86303ddbab65987a780e427 Mon Sep 17 00:00:00 2001 From: chudov Date: Wed, 6 Apr 2011 04:15:19 +0000 Subject: [PATCH] AR v2 & misc --- CUEControls/FileSystemTreeView.cs | 16 +- CUETools.AccurateRip/AccurateRip.cs | 150 +++++++---- CUETools.CDImage/CDImage.cs | 5 + CUETools.CTDB.EACPlugin/Options.Designer.cs | 5 +- CUETools.CTDB.EACPlugin/Options.cs | 5 + CUETools.Codecs/Codecs.cs | 90 +++++++ CUETools.Processor/Processor.cs | 3 +- .../AccurateRipVerifyTest.cs | 206 ++++++++------- CUETools/CUETools.sln | 245 ++++++++++++++++++ 9 files changed, 576 insertions(+), 149 deletions(-) diff --git a/CUEControls/FileSystemTreeView.cs b/CUEControls/FileSystemTreeView.cs index 8df3c3a..44d5d5c 100644 --- a/CUEControls/FileSystemTreeView.cs +++ b/CUEControls/FileSystemTreeView.cs @@ -486,13 +486,17 @@ namespace CUEControls /// the location of the event protected override void OnItemDrag(ItemDragEventArgs e) { - if (e.Item != null && e.Item is FileSystemTreeNodeFileSystemInfo) + if (e.Item != null && e.Item is FileSystemTreeNode) { - string[] arr = new string[1]; - arr[0] = (e.Item as FileSystemTreeNodeFileSystemInfo).File.FullName; - DataObject dobj = new DataObject(DataFormats.FileDrop, arr); - DragDropEffects effects = DoDragDrop(dobj, DragDropEffects.All); - return; + var item = e.Item as FileSystemTreeNode; + if (item.Path != null && File.Exists(item.Path)) + { + string[] arr = new string[1]; + arr[0] = item.Path; + DataObject dobj = new DataObject(DataFormats.FileDrop, arr); + DragDropEffects effects = DoDragDrop(dobj, DragDropEffects.All); + return; + } } base.OnItemDrag(e); diff --git a/CUETools.AccurateRip/AccurateRip.cs b/CUETools.AccurateRip/AccurateRip.cs index 8721ece..01b8dca 100644 --- a/CUETools.AccurateRip/AccurateRip.cs +++ b/CUETools.AccurateRip/AccurateRip.cs @@ -167,9 +167,11 @@ namespace CUETools.AccurateRip if (ARStatus != null) return 0U; uint conf = 0; + int trno = iTrack + _toc.FirstAudio - 1; for (int di = 0; di < (int)AccDisks.Count; di++) - if (iTrack + _toc.FirstAudio - 1 < AccDisks[di].tracks.Count - && CRC(iTrack) == AccDisks[di].tracks[iTrack + _toc.FirstAudio - 1].CRC) + if (trno < AccDisks[di].tracks.Count + && (CRC(iTrack) == AccDisks[di].tracks[trno].CRC + || CRCV2(iTrack) == AccDisks[di].tracks[trno].CRC)) conf += AccDisks[di].tracks[iTrack + _toc.FirstAudio - 1].count; return conf; } @@ -186,6 +188,7 @@ namespace CUETools.AccurateRip return worstTotal == 0xffff ? 0 : worstTotal; } + // TODO: Replace min(sum) with sum(min)!!! public uint WorstConfidence() { uint worstConfidence = 0xffff; @@ -203,11 +206,13 @@ namespace CUETools.AccurateRip if (ARStatus != null) return 0U; uint conf = 0; - for (int iDisk = 0; iDisk < AccDisks.Count; iDisk++) + int trno = iTrack + _toc.FirstAudio - 1; + for (int di = 0; di < AccDisks.Count; di++) for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++) - if (iTrack + _toc.FirstAudio - 1 < AccDisks[iDisk].tracks.Count - && CRC(iTrack, oi) == AccDisks[iDisk].tracks[iTrack + _toc.FirstAudio - 1].CRC) - conf += AccDisks[iDisk].tracks[iTrack + _toc.FirstAudio - 1].count; + if (trno < AccDisks[di].tracks.Count + && (CRC(iTrack, oi) == AccDisks[di].tracks[trno].CRC + || oi == 0 && CRCV2(iTrack) == AccDisks[di].tracks[trno].CRC)) + conf += AccDisks[di].tracks[iTrack + _toc.FirstAudio - 1].count; return conf; } @@ -216,9 +221,11 @@ namespace CUETools.AccurateRip if (ARStatus != null) return 0U; uint conf = 0; + int trno = iTrack + _toc.FirstAudio - 1; for (int di = 0; di < (int)AccDisks.Count; di++) - if (iTrack +_toc.FirstAudio - 1 < AccDisks[di].tracks.Count - && CRC(iTrack, oi) == AccDisks[di].tracks[iTrack + _toc.FirstAudio - 1].CRC) + if (trno < AccDisks[di].tracks.Count + && (CRC(iTrack, oi) == AccDisks[di].tracks[trno].CRC + || oi == 0 && CRCV2(iTrack) == AccDisks[di].tracks[trno].CRC)) conf += AccDisks[di].tracks[iTrack + _toc.FirstAudio - 1].count; return conf; } @@ -245,6 +252,15 @@ namespace CUETools.AccurateRip return CRC(iTrack, 0); } + public uint CRCV2(int iTrack) + { + int offs0 = iTrack == 0 ? 5 * 588 - 1 : 0; + int offs1 = iTrack == _toc.AudioTracks - 1 ? 20 * 588 - 5 * 588 : 0; + uint crcA1 = _CRCAR[iTrack + 1, offs1] - (offs0 > 0 ? _CRCAR[iTrack + 1, offs0] : 0); + uint crcA2 = _CRCV2[iTrack + 1, offs1] - (offs0 > 0 ? _CRCV2[iTrack + 1, offs0] : 0); + return crcA1 + crcA2; + } + public uint CRC(int iTrack, int oi) { int offs0 = iTrack == 0 ? 5 * 588 + oi - 1 : oi; @@ -311,17 +327,6 @@ namespace CUETools.AccurateRip return CRC32(iTrack, 0); } - public uint GetCRC32(uint crcA, int lenA, uint crcB, int lenB) - { - int lenAXB = (int)_toc.AudioLength * 588 * 4; - int lenXB = lenAXB - lenA; - int lenX = lenXB - lenB; - uint crcAXB = CRC32(0, 0) ^ _CRCMASK[0]; - uint crcXB = Crc32.Combine(crcA, crcAXB, lenXB); - uint crcX = Crc32.Substract(crcXB, crcB, lenB); - return Crc32.Combine(0xffffffff, crcX, lenX) ^ 0xffffffff; - } - public uint CRC32(int iTrack, int oi) { if (_CacheCRC32[iTrack, _arOffsetRange + oi] == 0) @@ -469,6 +474,9 @@ namespace CUETools.AccurateRip internal byte[] parity; internal ushort[] leadin; internal ushort[] leadout; + private uint[] leadinCrc; + private uint[] leadoutCrc; + private uint preLeadoutCrc; private int stride = 1, laststride = 1, stridecount = 1, npar = 1; private bool calcSyn = false; private bool calcParity = false; @@ -492,27 +500,43 @@ namespace CUETools.AccurateRip throw new ArgumentOutOfRangeException(); // stride - 2 * actualOffset // laststride + 2 * actualOffset - fixed (uint* crct = Crc32.table) - { - // calculate leadin CRC - uint crc0 = 0; - for (int off = 0; off < prefixLen; off++) - { - ushort dd = leadin[off]; - crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ dd)]; - crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ (dd >> 8))]; - } - // calculate leadout CRC - uint crc2 = 0; - for (int off = suffixLen - 1; off >= 0; off--) - { - ushort dd = leadout[off]; - crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ dd)]; - crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ (dd >> 8))]; - } + int lenAXB = (int)_toc.AudioLength * 588 * 4; - return GetCRC32(crc0, prefixLen * 2, crc2, suffixLen * 2); + if (leadinCrc == null) + { + leadinCrc = new uint[leadin.Length + 1]; + leadoutCrc = new uint[leadout.Length + 1]; + + fixed (uint* crct = Crc32.table) + { + // calculate leadin CRC + uint crc0 = 0; + leadinCrc[0] = crc0; + for (int off = 0; off < leadin.Length; off++) + { + ushort dd = leadin[off]; + crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ dd)]; + crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ (dd >> 8))]; + leadinCrc[off + 1] = crc0; + } + // calculate leadout CRC + uint crc2 = 0; + leadoutCrc[0] = crc2; + for (int off = leadout.Length - 1; off >= 0; off--) + { + ushort dd = leadout[off]; + crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ dd)]; + crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ (dd >> 8))]; + leadoutCrc[leadout.Length - off] = crc2; + } + } + preLeadoutCrc = CRC32(0, 0) ^ _CRCMASK[0]; + preLeadoutCrc = Crc32.Substract(preLeadoutCrc, leadoutCrc[leadout.Length], leadout.Length * 2); } + + uint crcXE = Crc32.Combine(leadinCrc[prefixLen], preLeadoutCrc, lenAXB - prefixLen * 2 - leadout.Length * 2); + uint crcX = Crc32.Combine(crcXE, leadoutCrc[leadout.Length - suffixLen], (leadout.Length - suffixLen) * 2); + return Crc32.Combine(0xffffffff, crcX, lenAXB - prefixLen * 2 - suffixLen * 2) ^ 0xffffffff; } public uint CTDBCRC(int actualOffset) @@ -613,6 +637,7 @@ namespace CUETools.AccurateRip uint crc32 = _CRC32[_currentTrack, 0]; uint crcwn = _CRCWN[_currentTrack, 0]; int crcnl = _CRCNL[_currentTrack, 0]; + uint crcv2 = _CRCV2[_currentTrack, 0]; int peak = _Peak[_currentTrack]; for (int i = 0; i < count; i++) @@ -624,11 +649,14 @@ namespace CUETools.AccurateRip _CRC32[_currentTrack, offs + i] = crc32; _CRCWN[_currentTrack, offs + i] = crcwn; _CRCNL[_currentTrack, offs + i] = crcnl; + _CRCV2[_currentTrack, offs + i] = crcv2; } uint sample = *(pSampleBuff++); crcsm += sample; - crcar += sample * (uint)(_samplesDoneTrack + i + 1); + ulong calccrc = sample * (ulong)(_samplesDoneTrack + i + 1); + crcar += (uint)calccrc; + crcv2 += (uint)(calccrc >> 32); uint lo = sample & 0xffff; crc32 = (crc32 >> 8) ^ t[(byte)(crc32 ^ lo)]; @@ -668,6 +696,7 @@ namespace CUETools.AccurateRip _CRC32[_currentTrack, 0] = crc32; _CRCWN[_currentTrack, 0] = crcwn; _CRCNL[_currentTrack, 0] = crcnl; + _CRCV2[_currentTrack, 0] = crcv2; _Peak[_currentTrack] = peak; } @@ -780,6 +809,7 @@ namespace CUETools.AccurateRip continue; uint crcar = _CRCAR[iTrack, 0]; + uint crcv2 = _CRCV2[iTrack, 0]; uint crcsm = _CRCSM[iTrack, 0]; uint crc32 = _CRC32[iTrack, 0]; uint crcwn = _CRCWN[iTrack, 0]; @@ -789,6 +819,7 @@ namespace CUETools.AccurateRip _CRCNL[iTrack, 0] = crcnl + part._CRCNL[iTrack, 0]; _CRC32[iTrack, 0] = Crc32.Combine(crc32, part._CRC32[iTrack, 0], 4 * (trEnd - trStart)); _CRCWN[iTrack, 0] = Crc32.Combine(crcwn, part._CRCWN[iTrack, 0], 4 * (trEnd - trStart) - 2 * part._CRCNL[iTrack, 0]); + _CRCV2[iTrack, 0] = crcv2 + part._CRCV2[iTrack, 0]; for (int i = 1; i < 31 * 588; i++) { int currentOffset; @@ -808,6 +839,7 @@ namespace CUETools.AccurateRip continue; _CRCAR[iTrack, i] = crcar + part._CRCAR[iTrack, i]; + _CRCV2[iTrack, i] = crcv2 + part._CRCV2[iTrack, i]; _CRCSM[iTrack, i] = crcsm + part._CRCSM[iTrack, i]; _CRCNL[iTrack, i] = crcnl + part._CRCNL[iTrack, i]; _CRC32[iTrack, i] = Crc32.Combine(crc32, part._CRC32[iTrack, i], 4 * (currentOffset - trStart)); @@ -832,6 +864,7 @@ namespace CUETools.AccurateRip _CRCWN = new uint[_toc.AudioTracks + 1, 31 * 588]; _CacheCRCWN = new uint[_toc.AudioTracks + 1, 31 * 588]; _CRCNL = new int[_toc.AudioTracks + 1, 31 * 588]; + _CRCV2 = new uint[_toc.AudioTracks + 1, 31 * 588]; _Peak = new int[_toc.AudioTracks + 1]; syndrome = new ushort[calcSyn ? stride : 1, npar]; parity = new byte[stride * npar * 2]; @@ -1025,11 +1058,30 @@ namespace CUETools.AccurateRip get { throw new Exception("unsupported"); } } - public void GenerateLog(TextWriter sw, int oi) + public void GenerateLog(TextWriter sw, int oi, bool v2) { uint maxTotal = 0; for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) maxTotal = Math.Max(maxTotal, Total(iTrack)); + + uint maxConf = 0; + for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) + { + uint crcOI = v2 ? CRCV2(iTrack) : CRC(iTrack, oi); + for (int di = 0; di < (int)AccDisks.Count; di++) + { + int trno = iTrack + _toc.FirstAudio - 1; + if (trno < AccDisks[di].tracks.Count + && crcOI == AccDisks[di].tracks[trno].CRC + && 0 != AccDisks[di].tracks[trno].CRC + ) + maxConf = Math.Max(maxConf, AccDisks[di].tracks[trno].count); + } + } + if (maxConf == 0 && v2) + return; + if (v2) + sw.WriteLine("AccurateRip v2:"); string ifmt = maxTotal < 10 ? ":0" : maxTotal < 100 ? ":00" : ":000"; //string ifmt = maxTotal < 10 ? ",1" : maxTotal < 100 ? ",2" : ",3"; for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) @@ -1037,7 +1089,7 @@ namespace CUETools.AccurateRip uint count = 0; uint partials = 0; uint conf = 0; - uint crcOI = CRC(iTrack, oi); + uint crcOI = v2 ? CRCV2(iTrack) : CRC(iTrack, oi); uint crc450OI = CRC450(iTrack, oi); for (int di = 0; di < (int)AccDisks.Count; di++) { @@ -1055,13 +1107,13 @@ namespace CUETools.AccurateRip string status; if (conf > 0) status = "Accurately ripped"; - else if (count == 0 && CRC(iTrack, oi) == 0) + else if (count == 0 && crcOI == 0) status = "Silent track"; else if (partials > 0) status = "No match but offset"; else status = "No match"; - sw.WriteLine(String.Format(" {0:00} [{1:x8}] ({3" + ifmt + "}/{2" + ifmt + "}) {4}", iTrack + 1, CRC(iTrack, oi), count, conf, status)); + sw.WriteLine(String.Format(" {0:00} [{1:x8}] ({3" + ifmt + "}/{2" + ifmt + "}) {4}", iTrack + 1, crcOI, count, conf, status)); } } @@ -1073,7 +1125,8 @@ namespace CUETools.AccurateRip if (verbose) { sw.WriteLine("Track [ CRC ] Status"); - GenerateLog(sw, 0); + GenerateLog(sw, 0, false); + GenerateLog(sw, 0, true); uint offsets_match = 0; for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++) { @@ -1098,7 +1151,7 @@ namespace CUETools.AccurateRip break; } sw.WriteLine("Offsetted by {0}:", oi); - GenerateLog(sw, oi); + GenerateLog(sw, oi, false); } } offsets_match = 0; @@ -1133,7 +1186,7 @@ namespace CUETools.AccurateRip break; } sw.WriteLine("Offsetted by {0}:", oi); - GenerateLog(sw, oi); + GenerateLog(sw, oi, false); } } } @@ -1151,7 +1204,9 @@ namespace CUETools.AccurateRip { int trno = iTrack + _toc.FirstAudio - 1; if (trno < AccDisks[iDisk].tracks.Count - && CRC(iTrack, oi) == AccDisks[iDisk].tracks[trno].CRC + && (CRC(iTrack, oi) == AccDisks[iDisk].tracks[trno].CRC + || oi == 0 && CRCV2(iTrack) == AccDisks[iDisk].tracks[trno].CRC + ) && (AccDisks[iDisk].tracks[trno].CRC != 0 || oi == 0)) { conf += AccDisks[iDisk].tracks[trno].count; @@ -1376,6 +1431,7 @@ namespace CUETools.AccurateRip int _currentTrack; private List _accDisks; internal uint[,] _CRCAR; + private uint[,] _CRCV2; internal uint[,] _CRCSM; internal uint[,] _CRC32; internal uint[,] _CRCWN; diff --git a/CUETools.CDImage/CDImage.cs b/CUETools.CDImage/CDImage.cs index f0fda06..a2e2ad4 100644 --- a/CUETools.CDImage/CDImage.cs +++ b/CUETools.CDImage/CDImage.cs @@ -253,6 +253,11 @@ namespace CUETools.CDImage _tracks.Add(new CDTrack(src._tracks[i])); } + public CDImageLayout(string trackoffsets) + : this(trackoffsets.Split(' ').Length - 1, trackoffsets.Split(' ').Length - 1, 1, trackoffsets) + { + } + public CDImageLayout(int trackcount, int audiotracks, int firstaudio, string trackoffsets) { _audioTracks = audiotracks; diff --git a/CUETools.CTDB.EACPlugin/Options.Designer.cs b/CUETools.CTDB.EACPlugin/Options.Designer.cs index 4e51b02..ef068d4 100644 --- a/CUETools.CTDB.EACPlugin/Options.Designer.cs +++ b/CUETools.CTDB.EACPlugin/Options.Designer.cs @@ -56,10 +56,11 @@ namespace AudioDataPlugIn this.linkLabel1.AutoSize = true; this.linkLabel1.Location = new System.Drawing.Point(12, 39); this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(111, 13); + this.linkLabel1.Size = new System.Drawing.Size(164, 13); this.linkLabel1.TabIndex = 3; this.linkLabel1.TabStop = true; - this.linkLabel1.Text = "http://db.cuetools.net"; + this.linkLabel1.Text = "http://db.cuetools.net/about.php"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); // // Options // diff --git a/CUETools.CTDB.EACPlugin/Options.cs b/CUETools.CTDB.EACPlugin/Options.cs index 0138db5..f793363 100644 --- a/CUETools.CTDB.EACPlugin/Options.cs +++ b/CUETools.CTDB.EACPlugin/Options.cs @@ -15,5 +15,10 @@ namespace AudioDataPlugIn { InitializeComponent(); } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(linkLabel1.Text); + } } } diff --git a/CUETools.Codecs/Codecs.cs b/CUETools.Codecs/Codecs.cs index 460d38a..cf0621a 100644 --- a/CUETools.Codecs/Codecs.cs +++ b/CUETools.Codecs/Codecs.cs @@ -997,6 +997,96 @@ namespace CUETools.Codecs public string Path { get { return null; } } } + public class NoiseGenerator : IAudioSource + { + private long _sampleOffset, _sampleCount; + private AudioPCMConfig pcm; + private Random rnd; + private byte[] temp; + private int tempOffs; + + public NoiseGenerator(AudioPCMConfig pcm, long sampleCount, int seed, int offset) + { + if (offset < 0) + throw new ArgumentOutOfRangeException("offset", "offset cannot be negative"); + + this._sampleOffset = 0; + this._sampleCount = sampleCount; + this.pcm = pcm; + this.rnd = new Random(seed); + this.temp = new byte[8192 * pcm.BlockAlign]; + this.tempOffs = temp.Length; + int byteOff = offset * pcm.BlockAlign; + for (int k = 0; k < byteOff / temp.Length; k++) + rnd.NextBytes(temp); + if (byteOff % temp.Length > 0) + rnd.NextBytes(new byte[byteOff % temp.Length]); + } + + public NoiseGenerator(long sampleCount) + : this(AudioPCMConfig.RedBook, sampleCount, 0, 0) + { + } + + public long Length + { + get + { + return _sampleCount; + } + } + + public long Remaining + { + get + { + return _sampleCount - _sampleOffset; + } + } + + public long Position + { + get + { + return _sampleOffset; + } + set + { + _sampleOffset = value; + } + } + + public AudioPCMConfig PCM { get { return pcm; } } + + public int Read(AudioBuffer buff, int maxLength) + { + buff.Prepare(this, maxLength); + + int buffOffs = 0; + while (buffOffs < buff.ByteLength) + { + if (tempOffs == temp.Length) + { + rnd.NextBytes(temp); + tempOffs = 0; + } + int chunk = Math.Min(buff.ByteLength - buffOffs, temp.Length - tempOffs); + Array.Copy(temp, tempOffs, buff.Bytes, buffOffs, chunk); + buffOffs += chunk; + tempOffs += chunk; + } + + _sampleOffset += buff.Length; + return buff.Length; + } + + public void Close() + { + } + + public string Path { get { return null; } } + } + [AudioDecoderClass("builtin wav", "wav")] public class WAVReader : IAudioSource { diff --git a/CUETools.Processor/Processor.cs b/CUETools.Processor/Processor.cs index 5645168..af93108 100644 --- a/CUETools.Processor/Processor.cs +++ b/CUETools.Processor/Processor.cs @@ -4255,7 +4255,8 @@ string status = processor.Go(); uint confidence = 0; for (int di = 0; di < (int)_arVerify.AccDisks.Count; di++) - if (_arVerify.CRC(iTrack, offset) == _arVerify.AccDisks[di].tracks[iTrack].CRC) + if (_arVerify.CRC(iTrack, offset) == _arVerify.AccDisks[di].tracks[iTrack].CRC + || offset == 0 && _arVerify.CRCV2(iTrack) == _arVerify.AccDisks[di].tracks[iTrack].CRC) confidence += _arVerify.AccDisks[di].tracks[iTrack].count; if (confidence >= minConfidence) diff --git a/CUETools/CUETools.TestCodecs/AccurateRipVerifyTest.cs b/CUETools/CUETools.TestCodecs/AccurateRipVerifyTest.cs index 4cb4bf0..e85b282 100644 --- a/CUETools/CUETools.TestCodecs/AccurateRipVerifyTest.cs +++ b/CUETools/CUETools.TestCodecs/AccurateRipVerifyTest.cs @@ -19,8 +19,6 @@ namespace CUETools.TestCodecs private TestContext testContextInstance; - private CDImageLayout toc; - private CDImageLayout toc2; private AccurateRipVerify ar; private AccurateRipVerify ar2; @@ -39,6 +37,26 @@ namespace CUETools.TestCodecs testContextInstance = value; } } + + private static AccurateRipVerify VerifyNoise(string trackoffsets, int seed, int offset) + { + return VerifyNoise(new CDImageLayout(trackoffsets), seed, offset); + } + + private static AccurateRipVerify VerifyNoise(CDImageLayout toc, int seed, int offset) + { + var src = new NoiseGenerator(AudioPCMConfig.RedBook, toc.AudioLength * 588, seed, offset); + var buff = new AudioBuffer(src, 588 * 10); + var ar = new AccurateRipVerify(toc, null); + var rnd = new Random(seed); + while (src.Remaining > 0) + { + src.Read(buff, rnd.Next(1, buff.Size)); + ar.Write(buff); + } + return ar; + } + #region Additional test attributes // //You can use the following additional attributes as you write your tests: @@ -62,32 +80,8 @@ namespace CUETools.TestCodecs [TestInitialize()] public void MyTestInitialize() { - toc = new CDImageLayout(); - toc.AddTrack(new CDTrack(1, 13, 55, true, false)); - toc.AddTrack(new CDTrack(2, 68, 31, true, false)); - toc.AddTrack(new CDTrack(3, 99, 37, true, false)); - toc[1][0].Start = 0; - ar = new AccurateRipVerify(toc, null); - - toc2 = new CDImageLayout(); - toc2.AddTrack(new CDTrack(1, 0, toc.AudioLength, true, false)); - toc2.AddTrack(new CDTrack(2, toc.AudioLength, 750, true, false)); - ar2 = new AccurateRipVerify(toc2, null); - - Random rnd = new Random(2314); - for (int sector = 0; sector < toc2.AudioLength; sector++) - { - AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 588); - buff.Length = 588; - for (int i = 0; i < buff.Length; i++) - { - buff.Samples[i, 0] = rnd.Next(-32768, 32767); - buff.Samples[i, 1] = rnd.Next(-32768, 32767); - } - if (sector < toc.AudioLength) - ar.Write(buff); - ar2.Write(buff); - } + ar = VerifyNoise("13 68 99 136", 2314, 0); + ar2 = VerifyNoise("0 136 886", 2314, 0); } //Use TestCleanup to run code after each test has run @@ -106,12 +100,12 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRC32Test() { - Assert.AreEqual(2884775698, ar.CRC32(0), "CRC32[0] was not set correctly."); - Assert.AreEqual(0474131972, ar.CRC32(1), "CRC32[1] was not set correctly."); - Assert.AreEqual(1685633822, ar.CRC32(2), "CRC32[2] was not set correctly."); - Assert.AreEqual(2747309238, ar.CRC32(3), "CRC32[3] was not set correctly."); + Assert.AreEqual(3791227907, ar.CRC32(0), "CRC32[0] was not set correctly."); + Assert.AreEqual(0321342250, ar.CRC32(1), "CRC32[1] was not set correctly."); + Assert.AreEqual(0037001035, ar.CRC32(2), "CRC32[2] was not set correctly."); + Assert.AreEqual(0516255430, ar.CRC32(3), "CRC32[3] was not set correctly."); - Assert.AreEqual(2884775698, ar2.CRC32(1), "CRC32[1](2) was not set correctly."); + Assert.AreEqual(3791227907, ar2.CRC32(1), "CRC32[1](2) was not set correctly."); } /// @@ -120,16 +114,16 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRC32Test1() { - Assert.AreEqual(2802501111, ar.CRC32(0, 13), "CRC32[0][13] was not set correctly."); - Assert.AreEqual(1987827634, ar.CRC32(0, -7), "CRC32[0][-7] was not set correctly."); - Assert.AreEqual(1624004597, ar.CRC32(1, 13), "CRC32[1][13] was not set correctly."); - Assert.AreEqual(2300462193, ar.CRC32(1, -7), "CRC32[1][-7] was not set correctly."); - Assert.AreEqual(0685357040, ar.CRC32(2, 15), "CRC32[2][15] was not set correctly."); - Assert.AreEqual(4050516109, ar.CRC32(2, -1), "CRC32[2][-1] was not set correctly."); - Assert.AreEqual(1860362251, ar.CRC32(3, 15), "CRC32[3][15] was not set correctly."); - Assert.AreEqual(0761448415, ar.CRC32(3, -1), "CRC32[3][-1] was not set correctly."); + Assert.AreEqual(2953798997, ar.CRC32(0, 13), "CRC32[0][13] was not set correctly."); + Assert.AreEqual(0480843614, ar.CRC32(0, -7), "CRC32[0][-7] was not set correctly."); + Assert.AreEqual(1228729415, ar.CRC32(1, 13), "CRC32[1][13] was not set correctly."); + Assert.AreEqual(3364131728, ar.CRC32(1, -7), "CRC32[1][-7] was not set correctly."); + Assert.AreEqual(1905873074, ar.CRC32(2, 15), "CRC32[2][15] was not set correctly."); + Assert.AreEqual(0611805314, ar.CRC32(2, -1), "CRC32[2][-1] was not set correctly."); + Assert.AreEqual(4242272536, ar.CRC32(3, 15), "CRC32[3][15] was not set correctly."); + Assert.AreEqual(4236330757, ar.CRC32(3, -1), "CRC32[3][-1] was not set correctly."); - Assert.AreEqual(1987827634, ar2.CRC32(1, -7), "CRC32[1,13](2) was not set correctly."); + Assert.AreEqual(0480843614, ar2.CRC32(1, -7), "CRC32[1,13](2) was not set correctly."); } /// @@ -138,12 +132,12 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRCTest1() { - Assert.AreEqual(0095215819, ar.CRC(0, -1), "CRC[0][-1] was not set correctly."); - Assert.AreEqual(4179900079, ar.CRC(0, 99), "CRC[0][99] was not set correctly."); - Assert.AreEqual(3756565509, ar.CRC(1, -3), "CRC[1][-3] was not set correctly."); - Assert.AreEqual(1882341590, ar.CRC(1, 11), "CRC[1][11] was not set correctly."); - Assert.AreEqual(4121006760, ar.CRC(2, -4), "CRC[2][-4] was not set correctly."); - Assert.AreEqual(3648746406, ar.CRC(2, 55), "CRC[2][55] was not set correctly."); + Assert.AreEqual(0123722587, ar.CRC(0, -1), "CRC[0][-1] was not set correctly."); + Assert.AreEqual(1975220196, ar.CRC(0, 99), "CRC[0][99] was not set correctly."); + Assert.AreEqual(1519928474, ar.CRC(1, -3), "CRC[1][-3] was not set correctly."); + Assert.AreEqual(2114385036, ar.CRC(1, 11), "CRC[1][11] was not set correctly."); + Assert.AreEqual(1521167728, ar.CRC(2, -4), "CRC[2][-4] was not set correctly."); + Assert.AreEqual(0301435197, ar.CRC(2, 55), "CRC[2][55] was not set correctly."); } /// @@ -152,9 +146,44 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRCTest() { - Assert.AreEqual(1190199900, ar.CRC(0), "CRC[0] was not set correctly."); - Assert.AreEqual(1914801336, ar.CRC(1), "CRC[1] was not set correctly."); - Assert.AreEqual(1759975763, ar.CRC(2), "CRC[2] was not set correctly."); + Assert.AreEqual(3727147246, ar.CRC(0), "CRC[0] was not set correctly."); + Assert.AreEqual(2202235240, ar.CRC(1), "CRC[1] was not set correctly."); + Assert.AreEqual(3752629998, ar.CRC(2), "CRC[2] was not set correctly."); + } + + /// + ///A test for CRCV2 + /// + [TestMethod()] + public void CRCV2Test() + { + Assert.AreEqual(3988391122, ar.CRCV2(0), "CRCV2[0] was not set correctly."); + Assert.AreEqual(2284845104, ar.CRCV2(1), "CRCV2[1] was not set correctly."); + Assert.AreEqual(3841231027, ar.CRCV2(2), "CRCV2[2] was not set correctly."); + } + + /// + ///A test for ARCRC offset + /// + [TestMethod()] + public void CRCTestOffset() + { + var ar0 = VerifyNoise("13 68 99 136", 723722, 0); + for (int offs = 1; offs < 588 * 5; offs += 17) + { + var ar1 = VerifyNoise("13 68 99 136", 723722, offs); + for (int track = 0; track < 3; track++) + { + Assert.AreEqual(ar0.CRC(track, offs), ar1.CRC(track), "CRC with offset " + offs + " was not set correctly."); + Assert.AreEqual(ar0.CRC(track), ar1.CRC(track, -offs), "CRC with offset " + (-offs) + " was not set correctly."); + Assert.AreEqual(ar0.CRC450(track, offs), ar1.CRC450(track, 0), "CRC450 with offset " + offs + " was not set correctly."); + Assert.AreEqual(ar0.CRC450(track, 0), ar1.CRC450(track, -offs), "CRC450 with offset " + (-offs) + " was not set correctly."); + if (track != 2) + Assert.AreEqual(ar0.CRC32(track + 1, offs), ar1.CRC32(track + 1), "CRC32 with offset " + (offs) + " was not set correctly."); + if (track != 0) + Assert.AreEqual(ar0.CRC32(track + 1), ar1.CRC32(track + 1, -offs), "CRC32 with offset " + (-offs) + " was not set correctly."); + } + } } /// @@ -163,8 +192,8 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRCWONULLTest1() { - Assert.AreEqual(3376349517, ar.CRCWONULL(2, 19), "CRC32WONULL[2][19] was not set correctly."); - Assert.AreEqual(0162318931, ar.CRCWONULL(2, -2), "CRC32WONULL[2][-2] was not set correctly."); + Assert.AreEqual(0812984565, ar.CRCWONULL(2, 19), "CRC32WONULL[2][19] was not set correctly."); + Assert.AreEqual(2390392664, ar.CRCWONULL(2, -2), "CRC32WONULL[2][-2] was not set correctly."); } /// @@ -173,11 +202,11 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRCWONULLTest() { - Assert.AreEqual(0509527097, ar.CRCWONULL(0), "CRC32WONULL[0] was not set correctly."); - Assert.AreEqual(0474131972, ar.CRCWONULL(1), "CRC32WONULL[1] was not set correctly."); - Assert.AreEqual(1405611463, ar.CRCWONULL(2), "CRC32WONULL[2] was not set correctly."); - Assert.AreEqual(2747309238, ar.CRCWONULL(3), "CRC32WONULL[3] was not set correctly."); - Assert.AreEqual(0509527097, ar2.CRCWONULL(1), "CRC32WONULL[1](2) was not set correctly."); + Assert.AreEqual(0404551290, ar.CRCWONULL(0), "CRC32WONULL[0] was not set correctly."); + Assert.AreEqual(0224527589, ar.CRCWONULL(1), "CRC32WONULL[1] was not set correctly."); + Assert.AreEqual(0557159190, ar.CRCWONULL(2), "CRC32WONULL[2] was not set correctly."); + Assert.AreEqual(0516255430, ar.CRCWONULL(3), "CRC32WONULL[3] was not set correctly."); + Assert.AreEqual(0404551290, ar2.CRCWONULL(1), "CRC32WONULL[1](2) was not set correctly."); } /// @@ -186,9 +215,9 @@ namespace CUETools.TestCodecs [TestMethod()] public void CRC450Test() { - Assert.AreEqual(1480802016, ar2.CRC450(1, 00), "CRC450[1,00] was not set correctly."); - Assert.AreEqual(2012115554, ar2.CRC450(1, 55), "CRC450[1,55] was not set correctly."); - Assert.AreEqual(1483829604, ar2.CRC450(1, -3), "CRC450[1,-3] was not set correctly."); + Assert.AreEqual(2224430043, ar2.CRC450(1, 00), "CRC450[1,00] was not set correctly."); + Assert.AreEqual(1912726337, ar2.CRC450(1, 55), "CRC450[1,55] was not set correctly."); + Assert.AreEqual(1251460151, ar2.CRC450(1, -3), "CRC450[1,-3] was not set correctly."); } @@ -198,39 +227,30 @@ namespace CUETools.TestCodecs [TestMethod()] public void OffsetSafeCRCRecordTest() { - OffsetSafeCRCRecord[] records = new OffsetSafeCRCRecord[5000]; - for (int i = 0; i < records.Length; i++) - { - var arv = new AccurateRipVerify(toc, null); - Random rnd = new Random(2314); - Random rnd2 = new Random(2314); - for (int k = 0; k < i; k++) - { - rnd.Next(-32768, 32767); - rnd.Next(-32768, 32767); - } - int chunk; - for (int k = 0; k < toc.AudioLength * 588; k += chunk) - { - chunk = Math.Min(512 + rnd2.Next(512), (int)toc.AudioLength * 588 - k); - AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, chunk); - buff.Length = chunk; - for (int s = 0; s < chunk; s++) - { - buff.Samples[s, 0] = rnd.Next(-32768, 32767); - buff.Samples[s, 1] = rnd.Next(-32768, 32767); - } - arv.Write(buff); - } - records[i] = arv.OffsetSafeCRC; - arv.Close(); - } + //OffsetSafeCRCRecord[] records = new OffsetSafeCRCRecord[5000]; + var record0 = VerifyNoise("13 68 99 136", 2314, 0).OffsetSafeCRC; - for (int i = 0; i < records.Length; i++) + Assert.AreEqual( + "8+lTDqEZidfayuC0LoxnL9Oluf4ywo1muFBu115XBgf254fKIdfVWZOcsQraS4eI\r\n" + + "NoLn7W3t0a16i745nEvikfw27ZsMR7gWPrXgXdsI2OdtjWTRL2Vra2dLe3WOl/Ru\r\n" + + "wFa1jqbB3+xHiB8XNi+5VKRh3fj1o5RSXS6tOZUvBUFFqoyuZK/DkeIyZ4gkotYO\r\n" + + "MZSsx2JBr2tdBzHZMssUmfvWUrfJZAQD8wMv1epy7q0Mk3W/QetVz6cZZ+6rRctf\r\n" + + "PGqvWBgNfS/+e7LBo/49KYd16kEofaX8LuuNB/7YJ85a3W71soQovwWLkjm32Xqo\r\n" + + "KpaUagu9QED1WEx7frfu95vYsQLV+vq6zULP6QOznUpU6n6LuMPQa5WNA4+chigC\r\n" + + "71GFeKTSO3bnS3xg8FMMqRtcTJleWF/7Bs3DkUZnxbkp4g8iZYZ3eMDc7A04AiYx\r\n" + + "3tYvDi9WiEZMRWpvuHfoBzWU7HbfOk5+32yg8TyNyVlPq1cfFn/jwQrfNyztTyav\r\n" + + "96ZJS2aBroYAw2We5RC2oekmi+N75L6+eQB/4iZOxB9aGP1sALd/UZaJqZP8FcmW\r\n" + + "FJOXlBi/KW68TJvujz+2w/P7EaZ0L7llQAtoHwoJniuNN5WYXBlescGc+vyYr5df\r\n" + + "jrul+QMmQ4xMi10mglq7CMLVfZZFFgBdvGBrn1tL9bg=\r\n", + VerifyNoise("13 68 99 136", 2314, 13).OffsetSafeCRC.Base64); + + for (int offset = 0; offset < 5000; offset += (offset < 256 ? 1 : 37)) { - int real_off = -i; + var record = VerifyNoise("13 68 99 136", 2314, offset).OffsetSafeCRC; + + int real_off = -offset; int off; - bool found = records[0].FindOffset(records[i], out off); + bool found = record0.FindOffset(record, out off); if (real_off > 4096 || real_off < -4096) { Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off)); @@ -240,8 +260,8 @@ namespace CUETools.TestCodecs Assert.IsTrue(found, string.Format("FindOffset failed to detect offset, real offset {0}", real_off)); Assert.AreEqual(real_off, off, string.Format("FindOffset returned {0}, should be {1}", off, real_off)); } - real_off = i; - found = records[i].FindOffset(records[0], out off); + real_off = offset; + found = record.FindOffset(record0, out off); if (real_off > 4096 || real_off < -4096) { Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off)); diff --git a/CUETools/CUETools.sln b/CUETools/CUETools.sln index 61b0cf2..529239a 100644 --- a/CUETools/CUETools.sln +++ b/CUETools/CUETools.sln @@ -175,16 +175,22 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.FLACL.cmd", "..\CU EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenCLNet", "..\..\ATI Stream\OpenCL.Net 0.6\source\OpenCLNet\OpenCLNet.csproj", "{758285C6-1ACA-458A-9906-EE6701D5AF87}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interop", "Interop", "{86BBE3FC-E4E5-4190-B675-C6745EAF4E64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CTDB.EACPlugin", "..\CUETools.CTDB.EACPlugin\CUETools.CTDB.EACPlugin.csproj", "{816D964C-9772-46C5-AF1D-49E8C78A1E7C}" +EndProject Global GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = CUETools1.vsmdi EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 Release|x86 = Release|x86 @@ -192,81 +198,109 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Win32.ActiveCfg = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x64.ActiveCfg = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x86.ActiveCfg = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.Build.0 = Release|Any CPU + {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Win32.ActiveCfg = Release|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x64.ActiveCfg = Release|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x86.ActiveCfg = Release|Any CPU {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Any CPU.ActiveCfg = Debug|x64 + {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.Build.0 = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.ActiveCfg = Debug|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.Build.0 = Debug|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.ActiveCfg = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.Build.0 = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x86.ActiveCfg = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Any CPU.ActiveCfg = Release|x64 + {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.Build.0 = Release|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.ActiveCfg = Release|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.Build.0 = Release|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.ActiveCfg = Release|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.Build.0 = Release|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x86.ActiveCfg = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Any CPU.ActiveCfg = Debug|x64 + {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.Build.0 = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.ActiveCfg = Debug|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.Build.0 = Debug|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.ActiveCfg = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.Build.0 = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x86.ActiveCfg = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Any CPU.ActiveCfg = Release|x64 + {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.Build.0 = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.ActiveCfg = Release|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.Build.0 = Release|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.ActiveCfg = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.Build.0 = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x86.ActiveCfg = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Any CPU.ActiveCfg = Debug|x64 + {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.Build.0 = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.ActiveCfg = Debug|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.Build.0 = Debug|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.ActiveCfg = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.Build.0 = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x86.ActiveCfg = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Any CPU.ActiveCfg = Release|Win32 + {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.Build.0 = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.ActiveCfg = Release|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.Build.0 = Release|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.ActiveCfg = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.Build.0 = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x86.ActiveCfg = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Any CPU.ActiveCfg = Debug|x64 + {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.Build.0 = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.ActiveCfg = Debug|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.Build.0 = Debug|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.ActiveCfg = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.Build.0 = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x86.ActiveCfg = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Any CPU.ActiveCfg = Release|x64 + {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.Build.0 = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.ActiveCfg = Release|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.Build.0 = Release|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.ActiveCfg = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.Build.0 = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x86.ActiveCfg = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Any CPU.ActiveCfg = Debug|x64 + {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.Build.0 = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.Build.0 = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x86.ActiveCfg = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Any CPU.ActiveCfg = Release|x64 + {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.Build.0 = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.Build.0 = Release|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.ActiveCfg = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.Build.0 = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x86.ActiveCfg = Release|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Any CPU.ActiveCfg = Debug|x64 + {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.Build.0 = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.ActiveCfg = Debug|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.Build.0 = Debug|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.ActiveCfg = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.Build.0 = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x86.ActiveCfg = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Any CPU.ActiveCfg = Release|x64 + {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.Build.0 = Release|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.ActiveCfg = Release|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.Build.0 = Release|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.ActiveCfg = Release|x64 @@ -274,27 +308,37 @@ Global {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x86.ActiveCfg = Release|x64 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Win32.ActiveCfg = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x64.ActiveCfg = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x86.ActiveCfg = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.ActiveCfg = Release|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.Build.0 = Release|Any CPU + {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Win32.ActiveCfg = Release|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x64.ActiveCfg = Release|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x86.ActiveCfg = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Win32.ActiveCfg = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.ActiveCfg = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.Build.0 = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x86.ActiveCfg = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.ActiveCfg = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.Build.0 = Release|Any CPU + {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.Build.0 = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Win32.ActiveCfg = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.ActiveCfg = Release|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.Build.0 = Debug|x86 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Win32.ActiveCfg = Debug|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.ActiveCfg = Debug|x64 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.Build.0 = Debug|x64 @@ -302,182 +346,252 @@ Global {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x86.Build.0 = Debug|x86 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.Build.0 = Release|Any CPU + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.Build.0 = Release|x86 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Win32.ActiveCfg = Release|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x64.ActiveCfg = Release|Any CPU {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.ActiveCfg = Release|x86 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.Build.0 = Release|x86 {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Win32.ActiveCfg = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.ActiveCfg = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.Build.0 = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x86.ActiveCfg = Debug|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.ActiveCfg = Release|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.Build.0 = Release|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Win32.ActiveCfg = Release|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x64.ActiveCfg = Release|Any CPU {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x86.ActiveCfg = Release|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Win32.ActiveCfg = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.ActiveCfg = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.Build.0 = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x86.ActiveCfg = Debug|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.Build.0 = Release|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Win32.ActiveCfg = Release|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x64.ActiveCfg = Release|Any CPU {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x86.ActiveCfg = Release|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Win32.ActiveCfg = Debug|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x64.ActiveCfg = Debug|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x86.ActiveCfg = Debug|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Win32.ActiveCfg = Release|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|x64.ActiveCfg = Release|Any CPU {8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|x86.ActiveCfg = Release|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Win32.ActiveCfg = Debug|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x64.ActiveCfg = Debug|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x86.ActiveCfg = Debug|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.ActiveCfg = Release|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.Build.0 = Release|Any CPU + {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Win32.ActiveCfg = Release|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|x64.ActiveCfg = Release|Any CPU {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|x86.ActiveCfg = Release|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Win32.ActiveCfg = Debug|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|x64.ActiveCfg = Debug|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|x86.ActiveCfg = Debug|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.Build.0 = Release|Any CPU + {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Win32.ActiveCfg = Release|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|x64.ActiveCfg = Release|Any CPU {A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|x86.ActiveCfg = Release|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Win32.ActiveCfg = Debug|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|x64.ActiveCfg = Debug|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|x86.ActiveCfg = Debug|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.Build.0 = Release|Any CPU + {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Win32.ActiveCfg = Release|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|x64.ActiveCfg = Release|Any CPU {B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|x86.ActiveCfg = Release|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Win32.ActiveCfg = Debug|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|x64.ActiveCfg = Debug|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|x86.ActiveCfg = Debug|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.Build.0 = Release|Any CPU + {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.Build.0 = Release|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Win32.ActiveCfg = Release|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|x64.ActiveCfg = Release|Any CPU {F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|x86.ActiveCfg = Release|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Win32.ActiveCfg = Debug|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|x64.ActiveCfg = Debug|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|x86.ActiveCfg = Debug|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.Build.0 = Release|Any CPU + {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Win32.ActiveCfg = Release|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|x64.ActiveCfg = Release|Any CPU {A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|x86.ActiveCfg = Release|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|x64.ActiveCfg = Debug|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|x86.ActiveCfg = Debug|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.Build.0 = Release|Any CPU + {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Win32.ActiveCfg = Release|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|x64.ActiveCfg = Release|Any CPU {8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|x86.ActiveCfg = Release|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Win32.ActiveCfg = Debug|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|x64.ActiveCfg = Debug|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|x86.ActiveCfg = Debug|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.ActiveCfg = Release|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.Build.0 = Release|Any CPU + {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Win32.ActiveCfg = Release|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|x64.ActiveCfg = Release|Any CPU {9253A314-1821-42BF-B02F-2BF986B1765D}.Release|x86.ActiveCfg = Release|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Win32.ActiveCfg = Debug|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|x64.ActiveCfg = Debug|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|x86.ActiveCfg = Debug|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.ActiveCfg = Release|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.Build.0 = Release|Any CPU + {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Win32.ActiveCfg = Release|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|x64.ActiveCfg = Release|Any CPU {1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|x86.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Win32.ActiveCfg = Debug|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|x64.ActiveCfg = Debug|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|x86.ActiveCfg = Debug|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.Build.0 = Release|Any CPU + {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Win32.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x64.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x86.ActiveCfg = Release|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Win32.ActiveCfg = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.ActiveCfg = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.Build.0 = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x86.ActiveCfg = Debug|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.ActiveCfg = Release|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.Build.0 = Release|Any CPU + {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.Build.0 = Release|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Win32.ActiveCfg = Release|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x64.ActiveCfg = Release|Any CPU {74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x86.ActiveCfg = Release|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Win32.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|x64.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|x86.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.ActiveCfg = Release|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.Build.0 = Release|Any CPU + {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.Build.0 = Release|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Win32.ActiveCfg = Release|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|x64.ActiveCfg = Release|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|x86.ActiveCfg = Release|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Win32.ActiveCfg = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.ActiveCfg = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.Build.0 = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x86.ActiveCfg = Debug|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.ActiveCfg = Release|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.Build.0 = Release|Any CPU + {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Win32.ActiveCfg = Release|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x64.ActiveCfg = Release|Any CPU {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x86.ActiveCfg = Release|Any CPU {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.Build.0 = Debug|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.ActiveCfg = Debug|Win32 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.Build.0 = Debug|Win32 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.ActiveCfg = Debug|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.Build.0 = Debug|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x86.ActiveCfg = Debug|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Any CPU.ActiveCfg = Release|Win32 + {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.Build.0 = Release|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.ActiveCfg = Release|Win32 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.Build.0 = Release|Win32 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.ActiveCfg = Release|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.Build.0 = Release|x64 {B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x86.ActiveCfg = Release|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.Build.0 = Debug|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.ActiveCfg = Debug|Win32 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.Build.0 = Debug|Win32 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.ActiveCfg = Debug|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.Build.0 = Debug|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x86.ActiveCfg = Debug|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Any CPU.ActiveCfg = Release|Win32 + {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.Build.0 = Release|x64 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.ActiveCfg = Release|Win32 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.Build.0 = Release|Win32 {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x64.ActiveCfg = Release|x64 @@ -485,301 +599,415 @@ Global {1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x86.ActiveCfg = Release|x64 {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.Build.0 = Debug|Any CPU + {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Win32.ActiveCfg = Debug|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|x64.ActiveCfg = Debug|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|x86.ActiveCfg = Debug|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.ActiveCfg = Release|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.Build.0 = Release|Any CPU + {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.Build.0 = Release|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Win32.ActiveCfg = Release|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|x64.ActiveCfg = Release|Any CPU {115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|x86.ActiveCfg = Release|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Win32.ActiveCfg = Debug|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|x64.ActiveCfg = Debug|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|x86.ActiveCfg = Debug|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.Build.0 = Release|Any CPU + {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.Build.0 = Release|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Win32.ActiveCfg = Release|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|x64.ActiveCfg = Release|Any CPU {CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|x86.ActiveCfg = Release|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Win32.ActiveCfg = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.ActiveCfg = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.Build.0 = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x86.ActiveCfg = Debug|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.Build.0 = Release|Any CPU + {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Win32.ActiveCfg = Release|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|x64.ActiveCfg = Release|Any CPU {082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|x86.ActiveCfg = Release|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Win32.ActiveCfg = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.ActiveCfg = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.Build.0 = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x86.ActiveCfg = Debug|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.ActiveCfg = Release|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.Build.0 = Release|Any CPU + {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Win32.ActiveCfg = Release|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|x64.ActiveCfg = Release|Any CPU {2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|x86.ActiveCfg = Release|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Win32.ActiveCfg = Debug|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|x64.ActiveCfg = Debug|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|x86.ActiveCfg = Debug|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.ActiveCfg = Release|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.Build.0 = Release|Any CPU + {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Win32.ActiveCfg = Release|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|x64.ActiveCfg = Release|Any CPU {8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|x86.ActiveCfg = Release|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Win32.ActiveCfg = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.ActiveCfg = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.Build.0 = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x86.ActiveCfg = Debug|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.ActiveCfg = Release|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.Build.0 = Release|Any CPU + {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Win32.ActiveCfg = Release|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|x64.ActiveCfg = Release|Any CPU {DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|x86.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Win32.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.Build.0 = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x86.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.Build.0 = Release|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Win32.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|x64.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|x86.ActiveCfg = Release|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Win32.ActiveCfg = Debug|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|x64.ActiveCfg = Debug|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|x86.ActiveCfg = Debug|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.ActiveCfg = Release|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.Build.0 = Release|Any CPU + {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Win32.ActiveCfg = Release|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|x64.ActiveCfg = Release|Any CPU {DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|x86.ActiveCfg = Release|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Win32.ActiveCfg = Debug|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|x64.ActiveCfg = Debug|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|x86.ActiveCfg = Debug|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.ActiveCfg = Release|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.Build.0 = Release|Any CPU + {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Win32.ActiveCfg = Release|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|x64.ActiveCfg = Release|Any CPU {FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|x86.ActiveCfg = Release|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Win32.ActiveCfg = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.ActiveCfg = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.Build.0 = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x86.ActiveCfg = Debug|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.ActiveCfg = Release|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.Build.0 = Release|Any CPU + {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Win32.ActiveCfg = Release|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|x64.ActiveCfg = Release|Any CPU {04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|x86.ActiveCfg = Release|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Win32.ActiveCfg = Debug|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|x64.ActiveCfg = Debug|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|x86.ActiveCfg = Debug|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.ActiveCfg = Release|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.Build.0 = Release|Any CPU + {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Win32.ActiveCfg = Release|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|x64.ActiveCfg = Release|Any CPU {A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|x86.ActiveCfg = Release|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Win32.ActiveCfg = Debug|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|x64.ActiveCfg = Debug|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|x86.ActiveCfg = Debug|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.Build.0 = Release|Any CPU + {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Win32.ActiveCfg = Release|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|x64.ActiveCfg = Release|Any CPU {14EE067E-C218-4625-9540-2361AB27C4A6}.Release|x86.ActiveCfg = Release|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Win32.ActiveCfg = Debug|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|x64.ActiveCfg = Debug|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|x86.ActiveCfg = Debug|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.Build.0 = Release|Any CPU + {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Win32.ActiveCfg = Release|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|x64.ActiveCfg = Release|Any CPU {EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|x86.ActiveCfg = Release|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Win32.ActiveCfg = Debug|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|x64.ActiveCfg = Debug|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Debug|x86.ActiveCfg = Debug|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.ActiveCfg = Release|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.Build.0 = Release|Any CPU + {D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.Build.0 = Release|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Release|Win32.ActiveCfg = Release|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Release|x64.ActiveCfg = Release|Any CPU {D2700165-3E77-4B28-928D-551F5FC11954}.Release|x86.ActiveCfg = Release|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Win32.ActiveCfg = Debug|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|x64.ActiveCfg = Debug|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|x86.ActiveCfg = Debug|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.ActiveCfg = Release|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.Build.0 = Release|Any CPU + {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Win32.ActiveCfg = Release|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|x64.ActiveCfg = Release|Any CPU {5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|x86.ActiveCfg = Release|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Debug|Win32.ActiveCfg = Debug|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Debug|x64.ActiveCfg = Debug|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Debug|x86.ActiveCfg = Debug|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.ActiveCfg = Release|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.Build.0 = Release|Any CPU + {ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.Build.0 = Release|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Release|Win32.ActiveCfg = Release|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Release|x64.ActiveCfg = Release|Any CPU {ECEB839C-171B-4535-958F-9899310A0342}.Release|x86.ActiveCfg = Release|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Win32.ActiveCfg = Debug|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|x64.ActiveCfg = Debug|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|x86.ActiveCfg = Debug|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.Build.0 = Release|Any CPU + {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Win32.ActiveCfg = Release|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|x64.ActiveCfg = Release|Any CPU {6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|x86.ActiveCfg = Release|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Win32.ActiveCfg = Debug|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|x64.ActiveCfg = Debug|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|x86.ActiveCfg = Debug|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.ActiveCfg = Release|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.Build.0 = Release|Any CPU + {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.Build.0 = Release|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Win32.ActiveCfg = Release|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|x64.ActiveCfg = Release|Any CPU {AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|x86.ActiveCfg = Release|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Win32.ActiveCfg = Debug|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|x64.ActiveCfg = Debug|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|x86.ActiveCfg = Debug|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.ActiveCfg = Release|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.Build.0 = Release|Any CPU + {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Win32.ActiveCfg = Release|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|x64.ActiveCfg = Release|Any CPU {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|x86.ActiveCfg = Release|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Win32.ActiveCfg = Debug|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|x64.ActiveCfg = Debug|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Debug|x86.ActiveCfg = Debug|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.ActiveCfg = Release|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.Build.0 = Release|Any CPU + {04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.Build.0 = Release|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Release|Win32.ActiveCfg = Release|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Release|x64.ActiveCfg = Release|Any CPU {04E59836-0C5A-4B9B-8899-848D56911758}.Release|x86.ActiveCfg = Release|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Win32.ActiveCfg = Debug|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|x64.ActiveCfg = Debug|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|x86.ActiveCfg = Debug|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.ActiveCfg = Release|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.Build.0 = Release|Any CPU + {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.Build.0 = Release|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Win32.ActiveCfg = Release|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|x64.ActiveCfg = Release|Any CPU {FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|x86.ActiveCfg = Release|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Win32.ActiveCfg = Debug|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|x64.ActiveCfg = Debug|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|x86.ActiveCfg = Debug|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.Build.0 = Release|Any CPU + {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Win32.ActiveCfg = Release|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|x64.ActiveCfg = Release|Any CPU {1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|x86.ActiveCfg = Release|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Win32.ActiveCfg = Debug|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|x64.ActiveCfg = Debug|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|x86.ActiveCfg = Debug|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.ActiveCfg = Release|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.Build.0 = Release|Any CPU + {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.Build.0 = Release|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Win32.ActiveCfg = Release|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|x64.ActiveCfg = Release|Any CPU {5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|x86.ActiveCfg = Release|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Win32.ActiveCfg = Debug|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|x64.ActiveCfg = Debug|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|x86.ActiveCfg = Debug|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.ActiveCfg = Release|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.Build.0 = Release|Any CPU + {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Win32.ActiveCfg = Release|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|x64.ActiveCfg = Release|Any CPU {AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|x86.ActiveCfg = Release|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Win32.ActiveCfg = Debug|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|x64.ActiveCfg = Debug|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|x86.ActiveCfg = Debug|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.Build.0 = Release|Any CPU + {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Win32.ActiveCfg = Release|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|x64.ActiveCfg = Release|Any CPU {A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|x86.ActiveCfg = Release|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Win32.ActiveCfg = Debug|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|x64.ActiveCfg = Debug|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|x86.ActiveCfg = Debug|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.Build.0 = Release|Any CPU + {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Win32.ActiveCfg = Release|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|x64.ActiveCfg = Release|Any CPU {8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|x86.ActiveCfg = Release|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Win32.ActiveCfg = Debug|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|x64.ActiveCfg = Debug|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|x86.ActiveCfg = Debug|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Any CPU.ActiveCfg = Release|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Any CPU.Build.0 = Release|Any CPU + {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Mixed Platforms.Build.0 = Release|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Win32.ActiveCfg = Release|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|x64.ActiveCfg = Release|Any CPU {2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|x86.ActiveCfg = Release|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Win32.ActiveCfg = Debug|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|x64.ActiveCfg = Debug|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|x86.ActiveCfg = Debug|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Any CPU.ActiveCfg = Release|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Any CPU.Build.0 = Release|Any CPU + {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Win32.ActiveCfg = Release|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|x64.ActiveCfg = Release|Any CPU {DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|x86.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Win32.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|x64.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|x86.ActiveCfg = Debug|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Any CPU.Build.0 = Release|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Win32.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|x64.ActiveCfg = Release|Any CPU {1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|x86.ActiveCfg = Release|Any CPU {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Mixed Platforms.Build.0 = Debug|x86 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Win32.ActiveCfg = Debug|x86 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x64.ActiveCfg = Debug|x64 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x64.Build.0 = Debug|x64 @@ -787,11 +1015,27 @@ Global {758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x86.Build.0 = Debug|x86 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Any CPU.ActiveCfg = Release|Any CPU {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Any CPU.Build.0 = Release|Any CPU + {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Mixed Platforms.Build.0 = Release|x86 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Win32.ActiveCfg = Release|Any CPU {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x64.ActiveCfg = Release|x64 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x64.Build.0 = Release|x64 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x86.ActiveCfg = Release|x86 {758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x86.Build.0 = Release|x86 + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|x64.ActiveCfg = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|Any CPU.Build.0 = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|Win32.ActiveCfg = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|x64.ActiveCfg = Release|Any CPU + {816D964C-9772-46C5-AF1D-49E8C78A1E7C}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -841,5 +1085,6 @@ Global {EA2CAE21-940C-4F51-A802-E02ABB97A9B5} = {FD1DD69E-EC51-443D-B6A7-908B8E0EF9E2} {9A0D1EB8-269E-4165-971C-541C96AA506F} = {5D823ABE-D280-4800-824C-2633CBAB2EA9} {0E404B8B-FF82-427F-ADE4-77B54A29219F} = {5D823ABE-D280-4800-824C-2633CBAB2EA9} + {816D964C-9772-46C5-AF1D-49E8C78A1E7C} = {86BBE3FC-E4E5-4190-B675-C6745EAF4E64} EndGlobalSection EndGlobal