Freeswitch-trunk
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
December 2008
- 10 participants
- 371 discussions
05 Dec '08
Author: mikej
Date: Fri Dec 5 15:43:17 2008
New Revision: 10631
Log:
whitespace
Modified:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c
Modified: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c Fri Dec 5 15:43:17 2008
@@ -40,7 +40,6 @@
#define ISNAN(x) ((x)== NAN)
#endif
-
/* Number of points for beep detection */
#define POINTS 32
@@ -102,7 +101,6 @@
/* Prototypes */
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vmd_shutdown);
-/* SWITCH_MODULE_RUNTIME_FUNCTION(mod_vmd_runtime); */
SWITCH_STANDARD_API(vmd_api_main);
SWITCH_MODULE_LOAD_FUNCTION(mod_vmd_load);
@@ -143,16 +141,10 @@
/* A count of how long a distinct beep was detected by
* by the discreet energy separation algorithm */
switch_size_t timestamp;
-/*
- int16_t *data;
- ssize_t data_len;
-*/
} vmd_session_info_t;
-static switch_bool_t process_data(vmd_session_info_t *vmd_info,
- switch_frame_t *frame);
-static switch_bool_t vmd_callback(switch_media_bug_t *bug,
- void *user_data, switch_abc_type_t type);
+static switch_bool_t process_data(vmd_session_info_t *vmd_info, switch_frame_t *frame);
+static switch_bool_t vmd_callback(switch_media_bug_t *bug, void *user_data, switch_abc_type_t type);
static double freq_estimator(double *x);
static double ampl_estimator(double *x);
static void convert_pts(int16_t *i_pts, double *d_pts, int16_t max);
@@ -165,58 +157,60 @@
*/
static switch_bool_t vmd_callback(switch_media_bug_t *bug,
- void *user_data, switch_abc_type_t type)
+ void *user_data,
+ switch_abc_type_t type)
{
- vmd_session_info_t *vmd_info;
- switch_codec_t *read_codec;
- switch_frame_t *frame;
-
- vmd_info = (vmd_session_info_t *)user_data;
- if(vmd_info == NULL) return SWITCH_FALSE;
-
- switch(type){
-
- case SWITCH_ABC_TYPE_INIT:
- read_codec =
- switch_core_session_get_read_codec(vmd_info->session);
- vmd_info->vmd_codec.rate =
- read_codec->implementation->samples_per_second;
- vmd_info->vmd_codec.channels =
- read_codec->implementation->number_of_channels;
- break;
-
- case SWITCH_ABC_TYPE_CLOSE:
- case SWITCH_ABC_TYPE_READ:
- case SWITCH_ABC_TYPE_WRITE:
- break;
-
- case SWITCH_ABC_TYPE_READ_REPLACE:
- frame = switch_core_media_bug_get_read_replace_frame(bug);
- return process_data(vmd_info, frame);
+ vmd_session_info_t *vmd_info;
+ switch_codec_t *read_codec;
+ switch_frame_t *frame;
- case SWITCH_ABC_TYPE_WRITE_REPLACE:
- break;
- }
+ vmd_info = (vmd_session_info_t *)user_data;
+ if(vmd_info == NULL) {
+ return SWITCH_FALSE;
+ }
- return SWITCH_TRUE;
+ switch(type){
+
+ case SWITCH_ABC_TYPE_INIT:
+ read_codec = switch_core_session_get_read_codec(vmd_info->session);
+ vmd_info->vmd_codec.rate = read_codec->implementation->samples_per_second;
+ vmd_info->vmd_codec.channels = read_codec->implementation->number_of_channels;
+ break;
+
+ case SWITCH_ABC_TYPE_CLOSE:
+ case SWITCH_ABC_TYPE_READ:
+ case SWITCH_ABC_TYPE_WRITE:
+ break;
+
+ case SWITCH_ABC_TYPE_READ_REPLACE:
+ frame = switch_core_media_bug_get_read_replace_frame(bug);
+ return process_data(vmd_info, frame);
+
+ case SWITCH_ABC_TYPE_WRITE_REPLACE:
+ break;
+ }
+
+ return SWITCH_TRUE;
}
static switch_bool_t process_data(vmd_session_info_t *vmd_info,
- switch_frame_t *frame)
+ switch_frame_t *frame)
{
- uint32_t i;
- unsigned int j;
- double pts[P];
- int16_t *data;
- int16_t max;
- switch_ssize_t len;
-
- len = frame->samples * sizeof(int16_t);
- data = (int16_t *)frame->data;
-
- for(max = (int16_t)abs(data[0]), i = 1; i < frame->samples; i++){
- if((int16_t)abs(data[i]) > max) max = (int16_t)abs(data[i]);
- }
+ uint32_t i;
+ unsigned int j;
+ double pts[P];
+ int16_t *data;
+ int16_t max;
+ switch_ssize_t len;
+
+ len = frame->samples * sizeof(int16_t);
+ data = (int16_t *)frame->data;
+
+ for(max = (int16_t)abs(data[0]), i = 1; i < frame->samples; i++) {
+ if ((int16_t)abs(data[i]) > max) {
+ max = (int16_t)abs(data[i]);
+ }
+ }
/*
if(vmd_info->data_len != len){
@@ -239,13 +233,13 @@
}
*/
- for(i = 0, j = vmd_info->pos; i < frame->samples; j++, j %= POINTS, i += 5){
-/* convert_pts(vmd_info->data + i, pts); */
- convert_pts(data + i, pts, max);
- vmd_info->points[j].freq = TO_HZ(freq_estimator(pts));
- vmd_info->points[j].ampl = ampl_estimator(pts);
- vmd_info->pos = j % POINTS;
- find_beep(vmd_info, frame);
+ for(i = 0, j = vmd_info->pos; i < frame->samples; j++, j %= POINTS, i += 5) {
+ /* convert_pts(vmd_info->data + i, pts); */
+ convert_pts(data + i, pts, max);
+ vmd_info->points[j].freq = TO_HZ(freq_estimator(pts));
+ vmd_info->points[j].ampl = ampl_estimator(pts);
+ vmd_info->pos = j % POINTS;
+ find_beep(vmd_info, frame);
}
return SWITCH_TRUE;
@@ -259,66 +253,42 @@
double med;
unsigned int j = (vmd_info->pos + 1) % POINTS;
unsigned int k = j;
- switch_status_t status;
switch_event_t *event;
+ switch_status_t status;
switch_event_t *event_copy;
switch(vmd_info->state){
case BEEP_DETECTED:
for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
vmd_info->timestamp++;
- if(vmd_info->points[j].freq < TOLERANCE_T(vmd_info->beep_freq) &&
- vmd_info->points[j].freq > TOLERANCE_B(vmd_info->beep_freq)){
+ if (vmd_info->points[j].freq < TOLERANCE_T(vmd_info->beep_freq) &&
+ vmd_info->points[j].freq > TOLERANCE_B(vmd_info->beep_freq)) {
c++;
vmd_info->beep_freq = (vmd_info->beep_freq * 0.95) + (vmd_info->points[j].freq * 0.05);
}
}
- if(c < (POINTS - MAX_CHIRP)){
+ if (c < (POINTS - MAX_CHIRP)) {
vmd_info->state = BEEP_NOT_DETECTED;
- if(vmd_info->timestamp < MIN_TIME) break;
+ if (vmd_info->timestamp < MIN_TIME) {
+ break;
+ }
- status = switch_event_create_subclass(&event,
- SWITCH_EVENT_CUSTOM, VMD_EVENT_BEEP);
- if(status != SWITCH_STATUS_SUCCESS) return;
-
- switch_event_add_header_string(
- event,
- SWITCH_STACK_BOTTOM,
- "Beep-Status",
- "stop"
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Beep-Time",
- "%d", vmd_info->timestamp / POINTS
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Unique-ID",
- "%s", switch_core_session_get_uuid(vmd_info->session)
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Frequency",
- "%6.4lf", vmd_info->beep_freq
- );
-
- switch_event_add_header_string(
- event,
- SWITCH_STACK_BOTTOM,
- "call-command",
- "vmd"
- );
+ status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, VMD_EVENT_BEEP);
+ if (status != SWITCH_STATUS_SUCCESS) {
+ return;
+ }
+
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", "stop");
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Beep-Time", "%d", vmd_info->timestamp / POINTS);
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Unique-ID",
+ "%s", switch_core_session_get_uuid(vmd_info->session));
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Frequency", "%6.4lf", vmd_info->beep_freq);
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "vmd");
- status = switch_event_dup(&event_copy, event);
- if(status != SWITCH_STATUS_SUCCESS) return;
+ if ((switch_event_dup(&event_copy, event)) != SWITCH_STATUS_SUCCESS) {
+ return;
+ }
switch_core_session_queue_event(vmd_info->session, &event);
switch_event_fire(&event_copy);
@@ -332,13 +302,15 @@
for(i = 0; i < POINTS; k++, k %= POINTS, i++){
m[i] = vmd_info->points[k].freq;
- if(ISNAN(m[i])) m[i] = 0.0;
+ if (ISNAN(m[i])) {
+ m[i] = 0.0;
+ }
}
med = median(m, POINTS);
- if(ISNAN(med)){
+ if (ISNAN(med)){
for(i = 0; i < POINTS; i++){
- if(!ISNAN(m[i])){
+ if (!ISNAN(m[i])){
med = m[i];
break;
}
@@ -346,9 +318,9 @@
}
for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
- if(vmd_info->points[j].freq < TOLERANCE_T(med) &&
+ if (vmd_info->points[j].freq < TOLERANCE_T(med) &&
vmd_info->points[j].freq > TOLERANCE_B(med)){
- if(vmd_info->points[j].ampl > MIN_AMPL &&
+ if (vmd_info->points[j].ampl > MIN_AMPL &&
vmd_info->points[j].freq > MIN_FREQ &&
vmd_info->points[j].freq < MAX_FREQ){
c++;
@@ -395,22 +367,35 @@
mingtguess = max;
for(i = 0; i < n; i++) {
- if(m[i] < guess){
+ if (m[i] < guess) {
less++;
- if(m[i] > maxltguess) maxltguess = m[i];
- }else if (m[i] > guess) {
+ if(m[i] > maxltguess) {
+ maxltguess = m[i];
+ }
+ } else if (m[i] > guess) {
greater++;
- if(m[i] < mingtguess) mingtguess = m[i];
- }else equal++;
+ if(m[i] < mingtguess) {
+ mingtguess = m[i];
+ }
+ } else {
+ equal++;
+ }
}
- if (less <= ( n + 1 ) / 2 && greater <= ( n + 1 ) / 2) break;
- else if (less > greater) max = maxltguess;
- else min = mingtguess;
+ if (less <= ( n + 1 ) / 2 && greater <= ( n + 1 ) / 2) {
+ break;
+ } else if (less > greater) {
+ max = maxltguess;
+ } else {
+ min = mingtguess;
+ }
}
- if(less >= ( n + 1 ) / 2) return maxltguess;
- else if(less + equal >= ( n + 1 ) / 2) return guess;
+ if (less >= ( n + 1 ) / 2) {
+ return maxltguess;
+ } else if (less + equal >= ( n + 1 ) / 2) {
+ return guess;
+ }
return mingtguess;
}
@@ -485,14 +470,14 @@
vmd_session_info_t *vmd_info;
int i;
- if(session == NULL) return;
+ if (session == NULL) return;
channel = switch_core_session_get_channel(session);
/* Is this channel already set? */
bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
/* If yes */
- if(bug != NULL){
+ if (bug != NULL){
/* If we have a stop remove audio bug */
if(strcasecmp(data, "stop") == 0){
switch_channel_set_private(channel, "_vmd_", NULL);
@@ -567,7 +552,6 @@
switch_media_bug_t *bug;
vmd_session_info_t *vmd_info;
switch_channel_t *channel;
-// switch_event_t *event;
switch_status_t status;
int argc;
char *argv[VMD_PARAMS];
@@ -589,10 +573,10 @@
/* If we don't have the expected number of parameters
* display usage */
- if(argc != VMD_PARAMS){
- stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
- switch_safe_free(ccmd);
- return SWITCH_STATUS_SUCCESS;
+ if (argc != VMD_PARAMS){
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ switch_safe_free(ccmd);
+ return SWITCH_STATUS_SUCCESS;
}
uuid = argv[0];
@@ -602,10 +586,10 @@
vmd_session = switch_core_session_locate(uuid);
/* If the session was not found exit */
- if(vmd_session == NULL){
- switch_safe_free(ccmd);
- stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
- return SWITCH_STATUS_FALSE;
+ if (vmd_session == NULL) {
+ switch_safe_free(ccmd);
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ return SWITCH_STATUS_FALSE;
}
/* Get current channel of the session to tag the session
@@ -615,9 +599,9 @@
/* Is this channel already set? */
bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
/* If yes */
- if(bug != NULL){
+ if (bug != NULL){
/* If we have a stop remove audio bug */
- if(strcasecmp(command, "stop") == 0){
+ if(strcasecmp(command, "stop") == 0) {
switch_channel_set_private(channel, "_vmd_", NULL);
switch_core_media_bug_remove(vmd_session, &bug);
switch_safe_free(ccmd);
@@ -637,10 +621,10 @@
}
/* If we don't see the expected start exit */
- if(strcasecmp(command, "start") != 0){
- switch_safe_free(ccmd);
- stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
- return SWITCH_STATUS_FALSE;
+ if(strcasecmp(command, "start") != 0) {
+ switch_safe_free(ccmd);
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ return SWITCH_STATUS_FALSE;
}
/* Allocate memory attached to this FreeSWITCH session for
@@ -659,9 +643,9 @@
vmd_info->data_len = 0;
*/
- for(i = 0; i < POINTS; i++){
- vmd_info->points[i].freq = 0.0;
- vmd_info->points[i].ampl = 0.0;
+ for(i = 0; i < POINTS; i++) {
+ vmd_info->points[i].freq = 0.0;
+ vmd_info->points[i].ampl = 0.0;
}
/* Add a media bug that allows me to intercept the
@@ -676,11 +660,11 @@
);
/* If adding a media bug fails exit */
- if(status != SWITCH_STATUS_SUCCESS){
- switch_log_printf(
- SWITCH_CHANNEL_LOG,
- SWITCH_LOG_ERROR,
- "Failure hooking to stream\n"
+ if (status != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_ERROR,
+ "Failure hooking to stream\n"
);
switch_safe_free(ccmd);
@@ -697,23 +681,6 @@
return SWITCH_STATUS_SUCCESS;
}
-/*
- If it exists, this is called in it's own thread
- when the module-load completes. If it returns anything
- but SWITCH_STATUS_TERM it will be called again automatically
-*/
-
-/*
-SWITCH_MODULE_RUNTIME_FUNCTION(mod_vmd_runtime)
-{
- while(looping){
-
- switch_yield(1000);
- }
-
- return SWITCH_STATUS_TERM;
-}
-*/
/* For Emacs:
* Local Variables:
1
0
05 Dec '08
Author: mikej
Date: Fri Dec 5 15:24:16 2008
New Revision: 10630
Log:
this is really c code
Added:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c (props changed)
- copied unchanged from r10629, /freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Removed:
freeswitch/trunk/src/mod/applications/mod_vmd/Makefile
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Modified:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
Modified: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj (original)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj Fri Dec 5 15:24:16 2008
@@ -143,7 +143,7 @@
</References>
<Files>
<File
- RelativePath=".\mod_vmd.cpp"
+ RelativePath=".\mod_vmd.c"
>
</File>
</Files>
1
0
05 Dec '08
Author: mikej
Date: Fri Dec 5 15:22:21 2008
New Revision: 10629
Log:
add mod_vmd to windows build
Added:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
Modified:
freeswitch/trunk/Freeswitch.2008.sln
freeswitch/trunk/src/mod/applications/mod_vmd/ (props changed)
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Modified: freeswitch/trunk/Freeswitch.2008.sln
==============================================================================
--- freeswitch/trunk/Freeswitch.2008.sln (original)
+++ freeswitch/trunk/Freeswitch.2008.sln Fri Dec 5 15:22:21 2008
@@ -991,750 +991,1267 @@
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2008.vcproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"
+ ProjectSection(ProjectDependencies) = postProject
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.Build.0 = Release|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32
{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.Build.0 = Release|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.Build.0 = Release|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.Build.0 = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.ActiveCfg = Debug|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.Build.0 = Debug|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|x64.ActiveCfg = Debug|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.Build.0 = Release|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.ActiveCfg = Release|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.Build.0 = Release|Win32
{3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|x64.ActiveCfg = Release|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.Build.0 = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.Build.0 = Release|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32
{5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Win32.ActiveCfg = Debug|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|Win32.Build.0 = Debug|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Debug|x64.ActiveCfg = Debug|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Mixed Platforms.Build.0 = Release|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Win32.ActiveCfg = Release|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|Win32.Build.0 = Release|Win32
{FE3540C5-3303-46E0-A69E-D92F775687F1}.Release|x64.ActiveCfg = Release|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.Build.0 = Release|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.Build.0 = Release|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32
{07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.Build.0 = Release|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32
{EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.Build.0 = Release|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32
{A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.ActiveCfg = Debug|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.Build.0 = Debug|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|x64.ActiveCfg = Debug|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.Build.0 = Release|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.ActiveCfg = Release|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.Build.0 = Release|Win32
{C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|x64.ActiveCfg = Release|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.Build.0 = Release|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32
{784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.Build.0 = Release|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32
{89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.Build.0 = Release|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.Build.0 = Release|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.Build.0 = Release|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.Build.0 = Release|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32
{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.Build.0 = Release|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.Build.0 = Release|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32
{1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.Build.0 = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.Build.0 = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.Build.0 = Release|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32
{C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.Build.0 = Release|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32
{B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.Build.0 = Release|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32
{05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.ActiveCfg = Debug|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.Build.0 = Debug|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|x64.ActiveCfg = Debug|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.Build.0 = Release|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32
{989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.Build.0 = Release|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32
{1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.Build.0 = Release|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32
{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.Build.0 = Release|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.Build.0 = Release|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32
{8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.Build.0 = Release|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32
{1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.ActiveCfg = Debug|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.Build.0 = Debug|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|x64.ActiveCfg = Debug|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.Build.0 = Release|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.ActiveCfg = Release|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.Build.0 = Release|Win32
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|x64.ActiveCfg = Release|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.Build.0 = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.Build.0 = Release|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32
{F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.ActiveCfg = Debug|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.Build.0 = Debug|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|x64.ActiveCfg = Debug|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.Build.0 = Release|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.ActiveCfg = Release|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.Build.0 = Release|Win32
{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|x64.ActiveCfg = Release|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.Build.0 = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.ActiveCfg = Debug|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.Build.0 = Debug|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|x64.ActiveCfg = Debug|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.Build.0 = Release|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.ActiveCfg = Release|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.Build.0 = Release|Win32
{5927104D-C14C-4AC8-925C-4AB681762E75}.Release|x64.ActiveCfg = Release|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.ActiveCfg = Debug|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.Build.0 = Debug|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|x64.ActiveCfg = Debug|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.Build.0 = Release|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.ActiveCfg = Release|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.Build.0 = Release|Win32
{0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|x64.ActiveCfg = Release|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.ActiveCfg = Debug|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.Build.0 = Debug|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|x64.ActiveCfg = Debug|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.Build.0 = Release|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.ActiveCfg = Release|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.Build.0 = Release|Win32
{49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|x64.ActiveCfg = Release|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.Build.0 = Release|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32
{3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.Build.0 = Release|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32
{87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.Build.0 = Release|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32
{155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.Build.0 = Release|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32
{204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.Build.0 = Release|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.Build.0 = Release|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.Build.0 = Release|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32
{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.Build.0 = Release|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.Build.0 = Release|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.Build.0 = Release|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.Build.0 = Release|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32
{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.Build.0 = Release|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32
{8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|Win32
+ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.Build.0 = Debug|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|Win32
+ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Mixed Platforms.Build.0 = Release|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.Build.0 = Release|Win32
{4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|Win32
+ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|Win32
+ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Mixed Platforms.Build.0 = Release|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32
{71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|Win32
+ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|Win32
+ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Mixed Platforms.Build.0 = Release|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32
{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|Win32
+ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|Win32
+ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Mixed Platforms.Build.0 = Release|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32
{AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|Win32
+ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|Win32
+ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Mixed Platforms.Build.0 = Release|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|Win32
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Mixed Platforms.Build.0 = Debug|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|Win32
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Mixed Platforms.ActiveCfg = Release|x64
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Mixed Platforms.Build.0 = Release|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|Win32
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|Win32
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Mixed Platforms.Build.0 = Release|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|Win32
+ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug|Win32
+ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Mixed Platforms.Build.0 = Release|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release|Win32
+ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|Win32
+ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Mixed Platforms.Build.0 = Release|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|Win32
+ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|Win32
+ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Mixed Platforms.Build.0 = Release|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32
{3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|Win32
+ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|Win32
+ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Mixed Platforms.Build.0 = Release|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32
{2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|Win32
+ {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.ActiveCfg = Debug|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.Build.0 = Debug|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|x64.ActiveCfg = Debug|Win32
+ {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Mixed Platforms.Build.0 = Release|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.ActiveCfg = Release|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.Build.0 = Release|Win32
{AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|x64.ActiveCfg = Release|Win32
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.ActiveCfg = Debug|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.Build.0 = Debug|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|x64.ActiveCfg = Debug|Win32
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Mixed Platforms.Build.0 = Release|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.ActiveCfg = Release|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.Build.0 = Release|Win32
{829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|x64.ActiveCfg = Release|Win32
+ {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.ActiveCfg = Debug|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.Build.0 = Debug|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|x64.ActiveCfg = Debug|Win32
+ {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Mixed Platforms.Build.0 = Release|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.ActiveCfg = Release|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.Build.0 = Release|Win32
{EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|x64.ActiveCfg = Release|Win32
+ {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.ActiveCfg = Debug|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.Build.0 = Debug|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|x64.ActiveCfg = Debug|Win32
+ {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Mixed Platforms.Build.0 = Release|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.ActiveCfg = Release|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.Build.0 = Release|Win32
{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|x64.ActiveCfg = Release|Win32
+ {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.ActiveCfg = Debug Static|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.Build.0 = Debug Static|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Mixed Platforms.Build.0 = Release|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.ActiveCfg = Release Static|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.Build.0 = Release Static|Win32
{CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|x64.ActiveCfg = Release|Win32
+ {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.ActiveCfg = Debug Static|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.Build.0 = Debug Static|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|x64.ActiveCfg = Debug|Win32
+ {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Mixed Platforms.Build.0 = Release|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.ActiveCfg = Release Static|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.Build.0 = Release Static|Win32
{819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|x64.ActiveCfg = Release|Win32
+ {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.ActiveCfg = Debug|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.Build.0 = Debug|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|x64.ActiveCfg = Debug|Win32
+ {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Mixed Platforms.Build.0 = Release|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.ActiveCfg = Release|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.Build.0 = Release|Win32
{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|x64.ActiveCfg = Release|Win32
+ {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.ActiveCfg = Debug|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.Build.0 = Debug|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|x64.ActiveCfg = Debug|Win32
+ {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Mixed Platforms.Build.0 = Release|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.ActiveCfg = Release|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.Build.0 = Release|Win32
{A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|x64.ActiveCfg = Release|Win32
+ {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.ActiveCfg = Debug|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.Build.0 = Debug|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|x64.ActiveCfg = Debug|Win32
+ {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Mixed Platforms.Build.0 = Release|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.ActiveCfg = Release|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.Build.0 = Release|Win32
{E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|x64.ActiveCfg = Release|Win32
+ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|Win32
+ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Mixed Platforms.Build.0 = Release|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Mixed Platforms.Build.0 = Release|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32
{D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|Win32
+ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|Win32
+ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Mixed Platforms.Build.0 = Release|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32
{5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|Win32
+ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|Win32
+ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Mixed Platforms.Build.0 = Release|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32
{FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|Win32
+ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|Win32
+ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Mixed Platforms.Build.0 = Release|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32
{06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|Win32
+ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|Win32
+ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Mixed Platforms.Build.0 = Release|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32
{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|Win32
+ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|Win32
+ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Mixed Platforms.Build.0 = Release|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32
{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|Win32
+ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|Win32
+ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Mixed Platforms.Build.0 = Release|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32
{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|Win32
+ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|Win32
+ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Mixed Platforms.Build.0 = Release|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32
{F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|Win32
+ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|Win32
+ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Mixed Platforms.Build.0 = Release|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32
{65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|Win32
+ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|Win32
+ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Mixed Platforms.Build.0 = Release|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|Win32
+ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|Win32
+ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Mixed Platforms.Build.0 = Release|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32
{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|Win32
+ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|Win32
+ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Mixed Platforms.Build.0 = Release|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32
{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|Win32
+ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|Win32
+ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Mixed Platforms.Build.0 = Release|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32
{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|Win32
+ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|Win32
+ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Mixed Platforms.Build.0 = Release|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32
{CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|Win32
+ {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.ActiveCfg = Debug|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.Build.0 = Debug|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|x64.ActiveCfg = Debug|Win32
+ {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Mixed Platforms.Build.0 = Release|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.ActiveCfg = Release|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.Build.0 = Release|Win32
{42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|x64.ActiveCfg = Release|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Mixed Platforms.Build.0 = Release|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|Win32
+ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|Win32
+ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Mixed Platforms.Build.0 = Release|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32
{E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|Win32
+ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|Win32
+ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Mixed Platforms.Build.0 = Release|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32
{36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.Build.0 = Release|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32
{7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|Win32
+ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|Win32
+ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Mixed Platforms.Build.0 = Release|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|Win32
+ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|Win32
+ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Mixed Platforms.Build.0 = Release|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|Win32
+ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|Win32
+ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Mixed Platforms.Build.0 = Release|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32
{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|Win32
+ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|Win32
+ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Mixed Platforms.Build.0 = Release|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32
{B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|Win32
+ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32
+ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Mixed Platforms.Build.0 = Release|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32
{4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32
+ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32
+ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Mixed Platforms.Build.0 = Release|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32
{2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32
+ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32
+ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Mixed Platforms.Build.0 = Release|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32
{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|Win32
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Mixed Platforms.Build.0 = Release|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32
{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|Win32
+ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|Win32
+ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Mixed Platforms.Build.0 = Release|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32
{94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|Win32
+ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|Win32
+ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Mixed Platforms.Build.0 = Release|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32
{2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|Win32
+ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32
+ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Mixed Platforms.Build.0 = Release|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32
{3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32
+ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32
{87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32
+ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Mixed Platforms.Build.0 = Release|Win32
{87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32
{87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32
+ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|Win32
+ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Mixed Platforms.Build.0 = Release|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|Win32
+ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32
{7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|Win32
+ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Mixed Platforms.Build.0 = Release|Win32
{7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32
{7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|Win32
+ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32
+ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Mixed Platforms.Build.0 = Release|Win32
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32
+ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32
{464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|Win32
+ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Mixed Platforms.Build.0 = Release|Win32
{464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32
{464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|Win32
+ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|Win32
+ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Mixed Platforms.Build.0 = Release|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32
{0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|Win32
+ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.Build.0 = Debug|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|Win32
+ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Mixed Platforms.Build.0 = Release|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.Build.0 = Release|Win32
{66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32
{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32
+ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|Win32
+ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Mixed Platforms.Build.0 = Release|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32
{E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|Win32
+ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|Win32
+ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Mixed Platforms.Build.0 = Release|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|Win32
+ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|Win32
+ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Mixed Platforms.Build.0 = Release|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32
{38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|Win32
+ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|Win32
+ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Mixed Platforms.Build.0 = Release|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|Win32
+ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|Win32
+ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Mixed Platforms.Build.0 = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|Win32
+ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|Win32
+ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Mixed Platforms.Build.0 = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|Win32
+ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Mixed Platforms.ActiveCfg = Debug_Mono|Win32
+ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Mixed Platforms.Build.0 = Debug_Mono|Win32
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_Mono|Win32
+ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Mixed Platforms.ActiveCfg = Release_Mono|Win32
+ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Mixed Platforms.Build.0 = Release_Mono|Win32
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_Mono|Win32
+ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|Any CPU
+ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32
+ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Mixed Platforms.Build.0 = Release|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32
{E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32
+ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|Win32
+ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Mixed Platforms.Build.0 = Release|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32
{419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|Win32
+ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|Win32
+ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Mixed Platforms.Build.0 = Release|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32
{B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1765,6 +2282,7 @@
{65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
+ {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
{A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
Added: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj Fri Dec 5 15:22:21 2008
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="mod_vmd"
+ ProjectGUID="{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"
+ RootNamespace="mod_vmd"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\..\..\..\w32\module_debug.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets="..\..\..\..\w32\module_release.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\mod_vmd.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp (original)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp Fri Dec 5 15:22:21 2008
@@ -82,10 +82,6 @@
* DEPRECATED */
#define ADJUST_MAX (65536)
-/* Signed L16 to relative floating point conversion */
-#define CONVERT_PT(d, i, m) do{ d = ((((double)i + (double)m) / \
- (double)(2 * m)) - 0.5) * 2.0; } while(0)
-
/* Discreet energy separation tolerance to error */
#define TOLERANCE (0.20)
@@ -208,7 +204,7 @@
static switch_bool_t process_data(vmd_session_info_t *vmd_info,
switch_frame_t *frame)
{
- int i;
+ uint32_t i;
unsigned int j;
double pts[P];
int16_t *data;
@@ -390,7 +386,7 @@
if(m[i] > max) max = m[i];
}
- while(1){
+ for(;;) {
guess = ( min + max ) / 2;
less = 0;
greater = 0;
@@ -423,7 +419,10 @@
static void convert_pts(int16_t *i_pts, double *d_pts, int16_t max)
{
int i;
- for(i = 0; i < P; i++) CONVERT_PT(d_pts[i], i_pts[i], max);
+ for(i = 0; i < P; i++) {
+ /* Signed L16 to relative floating point conversion */
+ d_pts[i] = ((((double)(i_pts[i]) + (double)max) / (double)(2 * max)) - 0.5) * 2.0;
+ }
}
/* Amplitude estimator for DESA-2 */
1
0
05 Dec '08
Author: ericdc
Date: Fri Dec 5 15:11:20 2008
New Revision: 10628
Log:
Fixed types.
Modified:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Modified: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp (original)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp Fri Dec 5 15:11:20 2008
@@ -218,8 +218,8 @@
len = frame->samples * sizeof(int16_t);
data = (int16_t *)frame->data;
- for(max = abs(data[0]), i = 1; i < frame->samples; i++){
- if(abs(data[i]) > max) max = abs(data[i]);
+ for(max = (int16_t)abs(data[0]), i = 1; i < frame->samples; i++){
+ if((int16_t)abs(data[i]) > max) max = (int16_t)abs(data[i]);
}
/*
1
0
05 Dec '08
Author: mikej
Date: Fri Dec 5 15:01:39 2008
New Revision: 10627
Log:
windows build tweaks
Modified:
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Modified: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp (original)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp Fri Dec 5 15:01:39 2008
@@ -31,9 +31,15 @@
#include <switch.h>
#include <stdio.h>
#include <stdlib.h>
-#include <strings.h>
#include <string.h>
#include <math.h>
+#ifdef WIN32
+#include <float.h>
+#define ISNAN(x) (!!(_isnan(x)))
+#else
+#define ISNAN(x) ((x)== NAN)
+#endif
+
/* Number of points for beep detection */
#define POINTS 32
@@ -207,13 +213,13 @@
double pts[P];
int16_t *data;
int16_t max;
- ssize_t len;
+ switch_ssize_t len;
len = frame->samples * sizeof(int16_t);
data = (int16_t *)frame->data;
for(max = abs(data[0]), i = 1; i < frame->samples; i++){
- if(abs(data[i]) > max) max = abs(data[i]);
+ if(abs(data[i]) > max) max = abs(data[i]);
}
/*
@@ -251,167 +257,166 @@
static void find_beep(vmd_session_info_t *vmd_info, switch_frame_t *frame)
{
- int i;
- int c;
- double m[POINTS];
- double med;
- unsigned int j = (vmd_info->pos + 1) % POINTS;
- unsigned int k = j;
- switch_status_t status;
- switch_event_t *event;
- switch_event_t *event_copy;
+ int i;
+ int c;
+ double m[POINTS];
+ double med;
+ unsigned int j = (vmd_info->pos + 1) % POINTS;
+ unsigned int k = j;
+ switch_status_t status;
+ switch_event_t *event;
+ switch_event_t *event_copy;
+
+ switch(vmd_info->state){
+ case BEEP_DETECTED:
+ for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
+ vmd_info->timestamp++;
+ if(vmd_info->points[j].freq < TOLERANCE_T(vmd_info->beep_freq) &&
+ vmd_info->points[j].freq > TOLERANCE_B(vmd_info->beep_freq)){
+ c++;
+ vmd_info->beep_freq = (vmd_info->beep_freq * 0.95) + (vmd_info->points[j].freq * 0.05);
+ }
+ }
- switch(vmd_info->state){
- case BEEP_DETECTED:
- for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
- vmd_info->timestamp++;
- if(vmd_info->points[j].freq < TOLERANCE_T(vmd_info->beep_freq) &&
- vmd_info->points[j].freq > TOLERANCE_B(vmd_info->beep_freq)){
- c++;
- vmd_info->beep_freq = (vmd_info->beep_freq * 0.95) + (vmd_info->points[j].freq * 0.05);
- }
- }
+ if(c < (POINTS - MAX_CHIRP)){
+ vmd_info->state = BEEP_NOT_DETECTED;
+ if(vmd_info->timestamp < MIN_TIME) break;
+
+ status = switch_event_create_subclass(&event,
+ SWITCH_EVENT_CUSTOM, VMD_EVENT_BEEP);
+ if(status != SWITCH_STATUS_SUCCESS) return;
+
+ switch_event_add_header_string(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Beep-Status",
+ "stop"
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Beep-Time",
+ "%d", vmd_info->timestamp / POINTS
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Unique-ID",
+ "%s", switch_core_session_get_uuid(vmd_info->session)
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Frequency",
+ "%6.4lf", vmd_info->beep_freq
+ );
+
+ switch_event_add_header_string(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "call-command",
+ "vmd"
+ );
- if(c < (POINTS - MAX_CHIRP)){
- vmd_info->state = BEEP_NOT_DETECTED;
- if(vmd_info->timestamp < MIN_TIME) break;
-
- status = switch_event_create_subclass(&event,
- SWITCH_EVENT_CUSTOM, VMD_EVENT_BEEP);
- if(status != SWITCH_STATUS_SUCCESS) return;
-
- switch_event_add_header_string(
- event,
- SWITCH_STACK_BOTTOM,
- "Beep-Status",
- "stop"
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Beep-Time",
- "%d", vmd_info->timestamp / POINTS
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Unique-ID",
- "%s", switch_core_session_get_uuid(vmd_info->session)
- );
-
- switch_event_add_header(
- event,
- SWITCH_STACK_BOTTOM,
- "Frequency",
- "%6.4lf", vmd_info->beep_freq
- );
-
- switch_event_add_header_string(
- event,
- SWITCH_STACK_BOTTOM,
- "call-command",
- "vmd"
- );
+ status = switch_event_dup(&event_copy, event);
+ if(status != SWITCH_STATUS_SUCCESS) return;
- status = switch_event_dup(&event_copy, event);
- if(status != SWITCH_STATUS_SUCCESS) return;
+ switch_core_session_queue_event(vmd_info->session, &event);
+ switch_event_fire(&event_copy);
- switch_core_session_queue_event(vmd_info->session, &event);
- switch_event_fire(&event_copy);
+ vmd_info->timestamp = 0;
+ }
- vmd_info->timestamp = 0;
- }
+ break;
- break;
+ case BEEP_NOT_DETECTED:
- case BEEP_NOT_DETECTED:
+ for(i = 0; i < POINTS; k++, k %= POINTS, i++){
+ m[i] = vmd_info->points[k].freq;
+ if(ISNAN(m[i])) m[i] = 0.0;
+ }
- for(i = 0; i < POINTS; k++, k %= POINTS, i++){
- m[i] = vmd_info->points[k].freq;
- if(m[i] == NAN) m[i] = 0.0;
- }
+ med = median(m, POINTS);
+ if(ISNAN(med)){
+ for(i = 0; i < POINTS; i++){
+ if(!ISNAN(m[i])){
+ med = m[i];
+ break;
+ }
+ }
+ }
- med = median(m, POINTS);
- if(med == NAN){
- for(i = 0; i < POINTS; i++){
- if(m[i] != NAN){
- med = m[i];
- break;
+ for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
+ if(vmd_info->points[j].freq < TOLERANCE_T(med) &&
+ vmd_info->points[j].freq > TOLERANCE_B(med)){
+ if(vmd_info->points[j].ampl > MIN_AMPL &&
+ vmd_info->points[j].freq > MIN_FREQ &&
+ vmd_info->points[j].freq < MAX_FREQ){
+ c++;
+ }
+ }
}
- }
- }
- for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
- if(vmd_info->points[j].freq < TOLERANCE_T(med) &&
- vmd_info->points[j].freq > TOLERANCE_B(med)){
- if(vmd_info->points[j].ampl > MIN_AMPL &&
- vmd_info->points[j].freq > MIN_FREQ &&
- vmd_info->points[j].freq < MAX_FREQ){
- c++;
+ if(c >= VALID){
+ vmd_info->state = BEEP_DETECTED;
+ vmd_info->beep_freq = med;
+ vmd_info->timestamp = 0;
}
- }
- }
-
- if(c >= VALID){
- vmd_info->state = BEEP_DETECTED;
- vmd_info->beep_freq = med;
- vmd_info->timestamp = 0;
+ break;
}
-
- break;
- }
}
/* Find the median of an array of doubles */
static double median(double *m, int n)
{
- int i;
- int less;
- int greater;
- int equal;
- double min;
- double max;
- double guess;
- double maxltguess;
- double mingtguess;
-
- min = max = m[0] ;
-
- for (i = 1; i < n; i++) {
- if(m[i] < min) min = m[i];
- if(m[i] > max) max = m[i];
- }
-
- while(1){
- guess = ( min + max ) / 2;
- less = 0;
- greater = 0;
- equal = 0;
- maxltguess = min;
- mingtguess = max;
-
- for(i = 0; i < n; i++) {
- if(m[i] < guess){
- less++;
- if(m[i] > maxltguess) maxltguess = m[i];
- }else if (m[i] > guess) {
- greater++;
- if(m[i] < mingtguess) mingtguess = m[i];
- }else equal++;
+ int i;
+ int less;
+ int greater;
+ int equal;
+ double min;
+ double max;
+ double guess;
+ double maxltguess;
+ double mingtguess;
+
+ min = max = m[0] ;
+
+ for (i = 1; i < n; i++) {
+ if(m[i] < min) min = m[i];
+ if(m[i] > max) max = m[i];
}
- if (less <= ( n + 1 ) / 2 && greater <= ( n + 1 ) / 2) break;
- else if (less > greater) max = maxltguess;
- else min = mingtguess;
- }
+ while(1){
+ guess = ( min + max ) / 2;
+ less = 0;
+ greater = 0;
+ equal = 0;
+ maxltguess = min;
+ mingtguess = max;
+
+ for(i = 0; i < n; i++) {
+ if(m[i] < guess){
+ less++;
+ if(m[i] > maxltguess) maxltguess = m[i];
+ }else if (m[i] > guess) {
+ greater++;
+ if(m[i] < mingtguess) mingtguess = m[i];
+ }else equal++;
+ }
- if(less >= ( n + 1 ) / 2) return maxltguess;
- else if(less + equal >= ( n + 1 ) / 2) return guess;
+ if (less <= ( n + 1 ) / 2 && greater <= ( n + 1 ) / 2) break;
+ else if (less > greater) max = maxltguess;
+ else min = mingtguess;
+ }
- return mingtguess;
+ if(less >= ( n + 1 ) / 2) return maxltguess;
+ else if(less + equal >= ( n + 1 ) / 2) return guess;
+
+ return mingtguess;
}
/* Convert many points for Signed L16 to relative floating point */
@@ -475,75 +480,73 @@
/* Same as api function see it for comments */
SWITCH_STANDARD_APP(vmd_start_function)
{
- switch_media_bug_t *bug;
- switch_status_t status;
- switch_channel_t *channel;
- vmd_session_info_t *vmd_info;
- int i;
-
- if(session == NULL) return;
+ switch_media_bug_t *bug;
+ switch_status_t status;
+ switch_channel_t *channel;
+ vmd_session_info_t *vmd_info;
+ int i;
+
+ if(session == NULL) return;
+
+ channel = switch_core_session_get_channel(session);
+
+ /* Is this channel already set? */
+ bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
+ /* If yes */
+ if(bug != NULL){
+ /* If we have a stop remove audio bug */
+ if(strcasecmp(data, "stop") == 0){
+ switch_channel_set_private(channel, "_vmd_", NULL);
+ switch_core_media_bug_remove(session, &bug);
+ return;
+ }
- channel = switch_core_session_get_channel(session);
+ /* We have already started */
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_WARNING,
+ "Cannot run 2 at once on the same channel!\n"
+ );
- /* Is this channel already set? */
- bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
- /* If yes */
- if(bug != NULL){
- /* If we have a stop remove audio bug */
- if(strcasecmp(data, "stop") == 0){
- switch_channel_set_private(channel, "_vmd_", NULL);
- switch_core_media_bug_remove(session, &bug);
- return;
+ return;
}
- /* We have already started */
- switch_log_printf(
- SWITCH_CHANNEL_LOG,
- SWITCH_LOG_WARNING,
- "Cannot run 2 at once on the same channel!\n"
- );
-
- return;
- }
-
- vmd_info = (vmd_session_info_t *)switch_core_session_alloc(
- session,
- sizeof(vmd_session_info_t)
- );
-
- vmd_info->state = BEEP_NOT_DETECTED;
- vmd_info->session = session;
- vmd_info->pos = 0;
-/*
- vmd_info->data = NULL;
- vmd_info->data_len = 0;
-*/
- for(i = 0; i < POINTS; i++){
- vmd_info->points[i].freq = 0.0;
- vmd_info->points[i].ampl = 0.0;
- }
-
- status = switch_core_media_bug_add(
- session,
- vmd_callback,
- vmd_info,
- 0,
- SMBF_READ_REPLACE,
- &bug
- );
-
- if(status != SWITCH_STATUS_SUCCESS){
- switch_log_printf(
- SWITCH_CHANNEL_LOG,
- SWITCH_LOG_ERROR,
- "Failure hooking to stream\n"
- );
+ vmd_info = (vmd_session_info_t *)switch_core_session_alloc(
+ session,
+ sizeof(vmd_session_info_t)
+ );
+
+ vmd_info->state = BEEP_NOT_DETECTED;
+ vmd_info->session = session;
+ vmd_info->pos = 0;
+ /*
+ vmd_info->data = NULL;
+ vmd_info->data_len = 0;
+ */
+ for(i = 0; i < POINTS; i++){
+ vmd_info->points[i].freq = 0.0;
+ vmd_info->points[i].ampl = 0.0;
+ }
- return;
- }
-
+ status = switch_core_media_bug_add(
+ session,
+ vmd_callback,
+ vmd_info,
+ 0,
+ SMBF_READ_REPLACE,
+ &bug
+ );
+
+ if(status != SWITCH_STATUS_SUCCESS){
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_ERROR,
+ "Failure hooking to stream\n"
+ );
+ return;
+ }
- switch_channel_set_private(channel, "_vmd_", bug);
+ switch_channel_set_private(channel, "_vmd_", bug);
}
@@ -565,7 +568,7 @@
switch_media_bug_t *bug;
vmd_session_info_t *vmd_info;
switch_channel_t *channel;
- switch_event_t *event;
+// switch_event_t *event;
switch_status_t status;
int argc;
char *argv[VMD_PARAMS];
1
0
Author: mikej
Date: Fri Dec 5 14:14:51 2008
New Revision: 10626
Log:
use correct format string
Modified:
freeswitch/trunk/src/switch_channel.c
Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c (original)
+++ freeswitch/trunk/src/switch_channel.c Fri Dec 5 14:14:51 2008
@@ -2307,7 +2307,7 @@
switch_snprintf(tmp, sizeof(tmp), "%d", progressmsec);
switch_channel_set_variable(channel, "progressmsec", tmp);
- switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, progressmsec);
+ switch_snprintf(tmp, sizeof(tmp), "%d" , progressmsec);
switch_channel_set_variable(channel, "progress_mediamsec", tmp);
switch_snprintf(tmp, sizeof(tmp), "%d", legbillmsec);
1
0
Author: mikej
Date: Fri Dec 5 14:14:29 2008
New Revision: 10625
Log:
FSCORE-245 fix windows build in switch_generate_sln_silence
Modified:
freeswitch/trunk/src/switch_resample.c
Modified: freeswitch/trunk/src/switch_resample.c
==============================================================================
--- freeswitch/trunk/src/switch_resample.c (original)
+++ freeswitch/trunk/src/switch_resample.c Fri Dec 5 14:14:29 2008
@@ -209,11 +209,11 @@
assert(divisor);
- rnd2 = (int16_t) (intptr_t) &data + switch_timestamp(NULL);
+ rnd2 = (int16_t) (intptr_t) &data + (int16_t)switch_timestamp(NULL);
for (i = 0; i < samples; i++, sum_rnd = 0) {
for (x = 0; x < 10; x++) {
- rnd += ((x + i) * rnd2);
+ rnd += (int16_t)((x + i) * rnd2);
sum_rnd += rnd;
}
switch_normalize_to_16bit(sum_rnd);
1
0
[commit] r10624 - in freeswitch/trunk/src/mod/languages/mod_managed: . managed
by FreeSWITCH SVN 05 Dec '08
by FreeSWITCH SVN 05 Dec '08
05 Dec '08
Author: mikej
Date: Fri Dec 5 13:57:05 2008
New Revision: 10624
Log:
swigall
Modified:
freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx (original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx Fri Dec 5 13:57:05 2008
@@ -17910,6 +17910,40 @@
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_set_private_flag(void * jarg1, unsigned long jarg2) {
+ switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_channel_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ switch_channel_set_private_flag(arg1,arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_clear_private_flag(void * jarg1, unsigned long jarg2) {
+ switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_channel_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ switch_channel_clear_private_flag(arg1,arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_test_private_flag(void * jarg1, unsigned long jarg2) {
+ int jresult ;
+ switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+ uint32_t arg2 ;
+ int result;
+
+ arg1 = (switch_channel_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ result = (int)switch_channel_test_private_flag(arg1,arg2);
+ jresult = result;
+ return jresult;
+}
+
+
SWIGEXPORT int SWIGSTDCALL CSharp_switch_buffer_create(void * jarg1, void * jarg2, void * jarg3) {
int jresult ;
switch_memory_pool_t *arg1 = (switch_memory_pool_t *) 0 ;
@@ -20472,7 +20506,7 @@
}
-SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_originate(void * jarg1, void * jarg2, void * jarg3, char * jarg4, unsigned long jarg5, void * jarg6, char * jarg7, char * jarg8, void * jarg9, unsigned long jarg10) {
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_originate(void * jarg1, void * jarg2, void * jarg3, char * jarg4, unsigned long jarg5, void * jarg6, char * jarg7, char * jarg8, void * jarg9, void * jarg10, unsigned long jarg11) {
int jresult ;
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
switch_core_session_t **arg2 = (switch_core_session_t **) 0 ;
@@ -20483,7 +20517,8 @@
char *arg7 = (char *) 0 ;
char *arg8 = (char *) 0 ;
switch_caller_profile_t *arg9 = (switch_caller_profile_t *) 0 ;
- switch_originate_flag_t arg10 ;
+ switch_event_t *arg10 = (switch_event_t *) 0 ;
+ switch_originate_flag_t arg11 ;
switch_status_t result;
arg1 = (switch_core_session_t *)jarg1;
@@ -20495,8 +20530,9 @@
arg7 = (char *)jarg7;
arg8 = (char *)jarg8;
arg9 = (switch_caller_profile_t *)jarg9;
- arg10 = (switch_originate_flag_t)jarg10;
- result = (switch_status_t)switch_ivr_originate(arg1,arg2,arg3,(char const *)arg4,arg5,(switch_state_handler_table const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10);
+ arg10 = (switch_event_t *)jarg10;
+ arg11 = (switch_originate_flag_t)jarg11;
+ result = (switch_status_t)switch_ivr_originate(arg1,arg2,arg3,(char const *)arg4,arg5,(switch_state_handler_table const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,arg11);
jresult = result;
return jresult;
}
Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs (original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs Fri Dec 5 13:57:05 2008
@@ -2519,6 +2519,19 @@
freeswitchPINVOKE.switch_channel_audio_sync(SWIGTYPE_p_switch_channel.getCPtr(channel));
}
+ public static void switch_channel_set_private_flag(SWIGTYPE_p_switch_channel channel, uint flags) {
+ freeswitchPINVOKE.switch_channel_set_private_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags);
+ }
+
+ public static void switch_channel_clear_private_flag(SWIGTYPE_p_switch_channel channel, uint flags) {
+ freeswitchPINVOKE.switch_channel_clear_private_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags);
+ }
+
+ public static int switch_channel_test_private_flag(SWIGTYPE_p_switch_channel channel, uint flags) {
+ int ret = freeswitchPINVOKE.switch_channel_test_private_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags);
+ return ret;
+ }
+
public static switch_status_t switch_buffer_create(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) {
switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len));
if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
@@ -2971,8 +2984,8 @@
return ret;
}
- public static switch_status_t switch_ivr_originate(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session bleg, SWIGTYPE_p_switch_call_cause_t cause, string bridgeto, uint timelimit_sec, switch_state_handler_table table, string cid_name_override, string cid_num_override, switch_caller_profile caller_profile_override, uint flags) {
- switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_originate(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(bleg), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause), bridgeto, timelimit_sec, switch_state_handler_table.getCPtr(table), cid_name_override, cid_num_override, switch_caller_profile.getCPtr(caller_profile_override), flags);
+ public static switch_status_t switch_ivr_originate(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session bleg, SWIGTYPE_p_switch_call_cause_t cause, string bridgeto, uint timelimit_sec, switch_state_handler_table table, string cid_name_override, string cid_num_override, switch_caller_profile caller_profile_override, switch_event ovars, uint flags) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_originate(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(bleg), SWIGTYPE_p_switch_call_cause_t.getCPtr(cause), bridgeto, timelimit_sec, switch_state_handler_table.getCPtr(table), cid_name_override, cid_num_override, switch_caller_profile.getCPtr(caller_profile_override), switch_event.getCPtr(ovars), flags);
return ret;
}
@@ -8506,6 +8519,15 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_channel_audio_sync")]
public static extern void switch_channel_audio_sync(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_set_private_flag")]
+ public static extern void switch_channel_set_private_flag(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_clear_private_flag")]
+ public static extern void switch_channel_clear_private_flag(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_test_private_flag")]
+ public static extern int switch_channel_test_private_flag(HandleRef jarg1, uint jarg2);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_buffer_create")]
public static extern int switch_buffer_create(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3);
@@ -9056,7 +9078,7 @@
public static extern int switch_ivr_speak_text(HandleRef jarg1, string jarg2, string jarg3, string jarg4, HandleRef jarg5);
[DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_originate")]
- public static extern int switch_ivr_originate(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3, string jarg4, uint jarg5, HandleRef jarg6, string jarg7, string jarg8, HandleRef jarg9, uint jarg10);
+ public static extern int switch_ivr_originate(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3, string jarg4, uint jarg5, HandleRef jarg6, string jarg7, string jarg8, HandleRef jarg9, HandleRef jarg10, uint jarg11);
[DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_multi_threaded_bridge")]
public static extern int switch_ivr_multi_threaded_bridge(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4, HandleRef jarg5);
@@ -22579,7 +22601,8 @@
SWITCH_RTP_FLAG_SECURE_SEND_RESET = (1 << 16),
SWITCH_RTP_FLAG_SECURE_RECV_RESET = (1 << 17),
SWITCH_RTP_FLAG_PROXY_MEDIA = (1 << 18),
- SWITCH_RTP_FLAG_SHUTDOWN = (1 << 19)
+ SWITCH_RTP_FLAG_SHUTDOWN = (1 << 19),
+ SWITCH_RTP_FLAG_FLUSH = (1 << 20)
}
}
1
0
05 Dec '08
Author: ericdc
Date: Fri Dec 5 12:45:37 2008
New Revision: 10623
Log:
Voicemain detection mod initial upload. By Eric des Courtis
Added:
freeswitch/trunk/src/mod/applications/mod_vmd/Makefile
freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
Added: freeswitch/trunk/src/mod/applications/mod_vmd/Makefile
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/Makefile Fri Dec 5 12:45:37 2008
@@ -0,0 +1,2 @@
+BASE=../../../..
+include $(BASE)/build/modmake.rules
Added: freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.cpp Fri Dec 5 12:45:37 2008
@@ -0,0 +1,726 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2008, Eric des Courtis <eric.des.courtis(a)benbria.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Eric des Courtis <eric.des.courtis(a)benbria.com>
+ * Copyright (C) Benbria. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Eric des Courtis <eric.des.courtis(a)benbria.com>
+ *
+ *
+ * mod_vmd.c -- Voicemail Detection Module
+ *
+ * This module detects voicemail beeps at any frequency in O(1) time.
+ *
+ */
+
+#include <switch.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+#include <string.h>
+#include <math.h>
+
+/* Number of points for beep detection */
+#define POINTS 32
+
+/* Number of valid points required for beep detection */
+#define VALID 22
+
+/* Maximum number of invalid points
+ * to declare beep has stopped */
+#define MAX_CHIRP 22
+
+/* Minimum time for a beep */
+#define MIN_TIME 8000
+
+/* Minimum amplitude of the signal */
+#define MIN_AMPL 0.10
+
+/* Minimum beep frequency */
+#define MIN_FREQ (600)
+
+/* Maximum beep frequency */
+#define MAX_FREQ (1100)
+
+/* PSI function for amplitude calculation*/
+#define PSI(x) (x[1]*x[1]-x[2]*x[0])
+
+/* Sample rate */
+#define F (8000)
+
+/* Conversion of frequency to Hz */
+#define TO_HZ(f) ((F * f) / (2.0 * M_PI))
+
+/* Number of points in discreet energy separation */
+#define P (5)
+
+/* Maximum signed value of int16_t
+ * DEPRECATED */
+#define ADJUST (32768)
+/* Same as above times two
+ * DEPRECATED */
+#define ADJUST_MAX (65536)
+
+/* Signed L16 to relative floating point conversion */
+#define CONVERT_PT(d, i, m) do{ d = ((((double)i + (double)m) / \
+ (double)(2 * m)) - 0.5) * 2.0; } while(0)
+
+/* Discreet energy separation tolerance to error */
+#define TOLERANCE (0.20)
+
+/* Maximum value within tolerance */
+#define TOLERANCE_T(m) (m + (m * TOLERANCE))
+
+/* Minimum value within tolerance */
+#define TOLERANCE_B(m) (m - (m * TOLERANCE))
+
+/* Syntax of the API call */
+#define VMD_SYNTAX "<uuid> <command>"
+
+/* Number of expected parameters in api call */
+#define VMD_PARAMS 2
+
+/* FreeSWITCH CUSTOM event type */
+#define VMD_EVENT_BEEP "vmd::beep"
+
+/* Prototypes */
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vmd_shutdown);
+/* SWITCH_MODULE_RUNTIME_FUNCTION(mod_vmd_runtime); */
+SWITCH_STANDARD_API(vmd_api_main);
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_vmd_load);
+SWITCH_MODULE_DEFINITION(mod_vmd, mod_vmd_load, NULL, NULL);
+SWITCH_STANDARD_APP(vmd_start_function);
+
+/* Type that holds state information about the beep */
+typedef enum vmd_state{
+ BEEP_DETECTED, BEEP_NOT_DETECTED
+} vmd_state_t;
+
+/* Type that holds data for 5 points of discreet energy separation */
+typedef struct vmd_point{
+ double freq;
+ double ampl;
+} vmd_point_t;
+
+/* Type that holds codec information */
+typedef struct vmd_codec_info{
+ int rate;
+ int channels;
+} vmd_codec_info_t;
+
+/* Type that holds session information pertinent to the vmd module */
+typedef struct vmd_session_info{
+ /* State of the session */
+ vmd_state_t state;
+ /* Snapshot of DESA samples */
+ vmd_point_t points[POINTS];
+ /* Internal FreeSWITCH session */
+ switch_core_session_t *session;
+ /* Codec information for the session */
+ vmd_codec_info_t vmd_codec;
+ /* Current position in the snapshot */
+ unsigned int pos;
+ /* Frequency aproximation of a detected beep */
+ double beep_freq;
+ /* A count of how long a distinct beep was detected by
+ * by the discreet energy separation algorithm */
+ switch_size_t timestamp;
+/*
+ int16_t *data;
+ ssize_t data_len;
+*/
+} vmd_session_info_t;
+
+static switch_bool_t process_data(vmd_session_info_t *vmd_info,
+ switch_frame_t *frame);
+static switch_bool_t vmd_callback(switch_media_bug_t *bug,
+ void *user_data, switch_abc_type_t type);
+static double freq_estimator(double *x);
+static double ampl_estimator(double *x);
+static void convert_pts(int16_t *i_pts, double *d_pts, int16_t max);
+static void find_beep(vmd_session_info_t *vmd_info, switch_frame_t *frame);
+static double median(double *m, int n);
+
+/*
+#define PRINT(a) do{ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, a); }while(0)
+#define PRINT2(a, b) do{ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, a, b); }while(0)
+*/
+
+static switch_bool_t vmd_callback(switch_media_bug_t *bug,
+ void *user_data, switch_abc_type_t type)
+{
+ vmd_session_info_t *vmd_info;
+ switch_codec_t *read_codec;
+ switch_frame_t *frame;
+
+ vmd_info = (vmd_session_info_t *)user_data;
+ if(vmd_info == NULL) return SWITCH_FALSE;
+
+ switch(type){
+
+ case SWITCH_ABC_TYPE_INIT:
+ read_codec =
+ switch_core_session_get_read_codec(vmd_info->session);
+ vmd_info->vmd_codec.rate =
+ read_codec->implementation->samples_per_second;
+ vmd_info->vmd_codec.channels =
+ read_codec->implementation->number_of_channels;
+ break;
+
+ case SWITCH_ABC_TYPE_CLOSE:
+ case SWITCH_ABC_TYPE_READ:
+ case SWITCH_ABC_TYPE_WRITE:
+ break;
+
+ case SWITCH_ABC_TYPE_READ_REPLACE:
+ frame = switch_core_media_bug_get_read_replace_frame(bug);
+ return process_data(vmd_info, frame);
+
+ case SWITCH_ABC_TYPE_WRITE_REPLACE:
+ break;
+ }
+
+ return SWITCH_TRUE;
+}
+
+static switch_bool_t process_data(vmd_session_info_t *vmd_info,
+ switch_frame_t *frame)
+{
+ int i;
+ unsigned int j;
+ double pts[P];
+ int16_t *data;
+ int16_t max;
+ ssize_t len;
+
+ len = frame->samples * sizeof(int16_t);
+ data = (int16_t *)frame->data;
+
+ for(max = abs(data[0]), i = 1; i < frame->samples; i++){
+ if(abs(data[i]) > max) max = abs(data[i]);
+ }
+
+/*
+ if(vmd_info->data_len != len){
+ vmd_info->data_len = len;
+ if(vmd_info->data != NULL) free(vmd_info->data);
+ vmd_info->data = (int16_t *)malloc(len);
+ if(vmd_info->data == NULL) return SWITCH_FALSE;
+ }
+
+ (void)memcpy(vmd_info->data, data, len);
+ for(i = 2; i < frame->samples; i++){
+ vmd_info->data[i] =
+ 0.0947997 * data[i]
+ -
+ 0.0947997 * data[i - 2]
+ -
+ 1.4083405 * vmd_info->data[i - 1]
+ +
+ 0.8104005 * vmd_info->data[i - 2];
+ }
+*/
+
+ for(i = 0, j = vmd_info->pos; i < frame->samples; j++, j %= POINTS, i += 5){
+/* convert_pts(vmd_info->data + i, pts); */
+ convert_pts(data + i, pts, max);
+ vmd_info->points[j].freq = TO_HZ(freq_estimator(pts));
+ vmd_info->points[j].ampl = ampl_estimator(pts);
+ vmd_info->pos = j % POINTS;
+ find_beep(vmd_info, frame);
+ }
+
+ return SWITCH_TRUE;
+}
+
+static void find_beep(vmd_session_info_t *vmd_info, switch_frame_t *frame)
+{
+ int i;
+ int c;
+ double m[POINTS];
+ double med;
+ unsigned int j = (vmd_info->pos + 1) % POINTS;
+ unsigned int k = j;
+ switch_status_t status;
+ switch_event_t *event;
+ switch_event_t *event_copy;
+
+ switch(vmd_info->state){
+ case BEEP_DETECTED:
+ for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
+ vmd_info->timestamp++;
+ if(vmd_info->points[j].freq < TOLERANCE_T(vmd_info->beep_freq) &&
+ vmd_info->points[j].freq > TOLERANCE_B(vmd_info->beep_freq)){
+ c++;
+ vmd_info->beep_freq = (vmd_info->beep_freq * 0.95) + (vmd_info->points[j].freq * 0.05);
+ }
+ }
+
+ if(c < (POINTS - MAX_CHIRP)){
+ vmd_info->state = BEEP_NOT_DETECTED;
+ if(vmd_info->timestamp < MIN_TIME) break;
+
+ status = switch_event_create_subclass(&event,
+ SWITCH_EVENT_CUSTOM, VMD_EVENT_BEEP);
+ if(status != SWITCH_STATUS_SUCCESS) return;
+
+ switch_event_add_header_string(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Beep-Status",
+ "stop"
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Beep-Time",
+ "%d", vmd_info->timestamp / POINTS
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Unique-ID",
+ "%s", switch_core_session_get_uuid(vmd_info->session)
+ );
+
+ switch_event_add_header(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "Frequency",
+ "%6.4lf", vmd_info->beep_freq
+ );
+
+ switch_event_add_header_string(
+ event,
+ SWITCH_STACK_BOTTOM,
+ "call-command",
+ "vmd"
+ );
+
+ status = switch_event_dup(&event_copy, event);
+ if(status != SWITCH_STATUS_SUCCESS) return;
+
+ switch_core_session_queue_event(vmd_info->session, &event);
+ switch_event_fire(&event_copy);
+
+ vmd_info->timestamp = 0;
+ }
+
+ break;
+
+ case BEEP_NOT_DETECTED:
+
+ for(i = 0; i < POINTS; k++, k %= POINTS, i++){
+ m[i] = vmd_info->points[k].freq;
+ if(m[i] == NAN) m[i] = 0.0;
+ }
+
+ med = median(m, POINTS);
+ if(med == NAN){
+ for(i = 0; i < POINTS; i++){
+ if(m[i] != NAN){
+ med = m[i];
+ break;
+ }
+ }
+ }
+
+ for(c = 0, i = 0; i < POINTS; j++, j %= POINTS, i++){
+ if(vmd_info->points[j].freq < TOLERANCE_T(med) &&
+ vmd_info->points[j].freq > TOLERANCE_B(med)){
+ if(vmd_info->points[j].ampl > MIN_AMPL &&
+ vmd_info->points[j].freq > MIN_FREQ &&
+ vmd_info->points[j].freq < MAX_FREQ){
+ c++;
+ }
+ }
+ }
+
+
+ if(c >= VALID){
+ vmd_info->state = BEEP_DETECTED;
+ vmd_info->beep_freq = med;
+ vmd_info->timestamp = 0;
+ }
+
+ break;
+ }
+}
+
+/* Find the median of an array of doubles */
+static double median(double *m, int n)
+{
+ int i;
+ int less;
+ int greater;
+ int equal;
+ double min;
+ double max;
+ double guess;
+ double maxltguess;
+ double mingtguess;
+
+ min = max = m[0] ;
+
+ for (i = 1; i < n; i++) {
+ if(m[i] < min) min = m[i];
+ if(m[i] > max) max = m[i];
+ }
+
+ while(1){
+ guess = ( min + max ) / 2;
+ less = 0;
+ greater = 0;
+ equal = 0;
+ maxltguess = min;
+ mingtguess = max;
+
+ for(i = 0; i < n; i++) {
+ if(m[i] < guess){
+ less++;
+ if(m[i] > maxltguess) maxltguess = m[i];
+ }else if (m[i] > guess) {
+ greater++;
+ if(m[i] < mingtguess) mingtguess = m[i];
+ }else equal++;
+ }
+
+ if (less <= ( n + 1 ) / 2 && greater <= ( n + 1 ) / 2) break;
+ else if (less > greater) max = maxltguess;
+ else min = mingtguess;
+ }
+
+ if(less >= ( n + 1 ) / 2) return maxltguess;
+ else if(less + equal >= ( n + 1 ) / 2) return guess;
+
+ return mingtguess;
+}
+
+/* Convert many points for Signed L16 to relative floating point */
+static void convert_pts(int16_t *i_pts, double *d_pts, int16_t max)
+{
+ int i;
+ for(i = 0; i < P; i++) CONVERT_PT(d_pts[i], i_pts[i], max);
+}
+
+/* Amplitude estimator for DESA-2 */
+double ampl_estimator(double *x)
+{
+ double freq_sq;
+
+ freq_sq = freq_estimator(x);
+ freq_sq *= freq_sq;
+
+ return sqrt( PSI(x) / sin(freq_sq) );
+}
+
+/* The DESA-2 algorithm */
+double freq_estimator(double *x)
+{
+ return 0.5 * acos(
+ (((x[2] * x[2]) - (x[0] * x[4]))
+ -
+ ( (x[1] * x[1]) - (x[0] * x[2]))
+ -
+ ( (x[3] * x[3]) - (x[2] * x[4])))
+ /
+ (2.0 * ((x[2] * x[2]) - (x[1] * x[3])))
+
+ );
+}
+
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_vmd_load)
+{
+ switch_application_interface_t *app_interface;
+ switch_api_interface_t *api_interface;
+ /* connect my internal structure to the blank pointer passed to me */
+ *module_interface =
+ switch_loadable_module_create_module_interface(pool, modname);
+
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_NOTICE,
+ "Voicemail detection enabled\n"
+ );
+
+ SWITCH_ADD_APP(app_interface, "vmd", "Detect beeps", "Detect voicemail beeps",
+ vmd_start_function, "[start] [stop]", SAF_NONE);
+
+ SWITCH_ADD_API(api_interface, "vmd", "Detected voicemail beeps",
+ vmd_api_main, VMD_SYNTAX);
+
+ /* indicate that the module should continue to be loaded */
+ return SWITCH_STATUS_SUCCESS;
+}
+
+/* Same as api function see it for comments */
+SWITCH_STANDARD_APP(vmd_start_function)
+{
+ switch_media_bug_t *bug;
+ switch_status_t status;
+ switch_channel_t *channel;
+ vmd_session_info_t *vmd_info;
+ int i;
+
+ if(session == NULL) return;
+
+ channel = switch_core_session_get_channel(session);
+
+ /* Is this channel already set? */
+ bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
+ /* If yes */
+ if(bug != NULL){
+ /* If we have a stop remove audio bug */
+ if(strcasecmp(data, "stop") == 0){
+ switch_channel_set_private(channel, "_vmd_", NULL);
+ switch_core_media_bug_remove(session, &bug);
+ return;
+ }
+
+ /* We have already started */
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_WARNING,
+ "Cannot run 2 at once on the same channel!\n"
+ );
+
+ return;
+ }
+
+ vmd_info = (vmd_session_info_t *)switch_core_session_alloc(
+ session,
+ sizeof(vmd_session_info_t)
+ );
+
+ vmd_info->state = BEEP_NOT_DETECTED;
+ vmd_info->session = session;
+ vmd_info->pos = 0;
+/*
+ vmd_info->data = NULL;
+ vmd_info->data_len = 0;
+*/
+ for(i = 0; i < POINTS; i++){
+ vmd_info->points[i].freq = 0.0;
+ vmd_info->points[i].ampl = 0.0;
+ }
+
+ status = switch_core_media_bug_add(
+ session,
+ vmd_callback,
+ vmd_info,
+ 0,
+ SMBF_READ_REPLACE,
+ &bug
+ );
+
+ if(status != SWITCH_STATUS_SUCCESS){
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_ERROR,
+ "Failure hooking to stream\n"
+ );
+
+ return;
+ }
+
+
+ switch_channel_set_private(channel, "_vmd_", bug);
+
+}
+
+/* Called when the system shuts down */
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vmd_shutdown)
+{
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_NOTICE,
+ "Voicemail detection disabled\n"
+ );
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+SWITCH_STANDARD_API(vmd_api_main)
+{
+ switch_core_session_t *vmd_session;
+ switch_media_bug_t *bug;
+ vmd_session_info_t *vmd_info;
+ switch_channel_t *channel;
+ switch_event_t *event;
+ switch_status_t status;
+ int argc;
+ char *argv[VMD_PARAMS];
+ char *ccmd;
+ char *uuid;
+ char *command;
+ int i;
+
+ /* No command? Display usage */
+ if(cmd == NULL){
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ /* Duplicated contents of original string */
+ ccmd = strdup(cmd);
+ /* Separate the arguments */
+ argc = switch_separate_string(ccmd, ' ', argv, VMD_PARAMS);
+
+ /* If we don't have the expected number of parameters
+ * display usage */
+ if(argc != VMD_PARAMS){
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ switch_safe_free(ccmd);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ uuid = argv[0];
+ command = argv[1];
+
+ /* using uuid locate a reference to the FreeSWITCH session */
+ vmd_session = switch_core_session_locate(uuid);
+
+ /* If the session was not found exit */
+ if(vmd_session == NULL){
+ switch_safe_free(ccmd);
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ return SWITCH_STATUS_FALSE;
+ }
+
+ /* Get current channel of the session to tag the session
+ * This indicates that our module is present */
+ channel = switch_core_session_get_channel(vmd_session);
+
+ /* Is this channel already set? */
+ bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_vmd_");
+ /* If yes */
+ if(bug != NULL){
+ /* If we have a stop remove audio bug */
+ if(strcasecmp(command, "stop") == 0){
+ switch_channel_set_private(channel, "_vmd_", NULL);
+ switch_core_media_bug_remove(vmd_session, &bug);
+ switch_safe_free(ccmd);
+ stream->write_function(stream, "+OK\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ /* We have already started */
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_WARNING,
+ "Cannot run 2 at once on the same channel!\n"
+ );
+
+ switch_safe_free(ccmd);
+ return SWITCH_STATUS_FALSE;
+ }
+
+ /* If we don't see the expected start exit */
+ if(strcasecmp(command, "start") != 0){
+ switch_safe_free(ccmd);
+ stream->write_function(stream, "-USAGE: %s\n", VMD_SYNTAX);
+ return SWITCH_STATUS_FALSE;
+ }
+
+ /* Allocate memory attached to this FreeSWITCH session for
+ * use in the callback routine and to store state information */
+ vmd_info = (vmd_session_info_t *)switch_core_session_alloc(
+ vmd_session,
+ sizeof(vmd_session_info_t)
+ );
+
+ /* Set initial values and states */
+ vmd_info->state = BEEP_NOT_DETECTED;
+ vmd_info->session = vmd_session;
+ vmd_info->pos = 0;
+/*
+ vmd_info->data = NULL;
+ vmd_info->data_len = 0;
+*/
+
+ for(i = 0; i < POINTS; i++){
+ vmd_info->points[i].freq = 0.0;
+ vmd_info->points[i].ampl = 0.0;
+ }
+
+ /* Add a media bug that allows me to intercept the
+ * reading leg of the audio stream */
+ status = switch_core_media_bug_add(
+ vmd_session,
+ vmd_callback,
+ vmd_info,
+ 0,
+ SMBF_READ_REPLACE,
+ &bug
+ );
+
+ /* If adding a media bug fails exit */
+ if(status != SWITCH_STATUS_SUCCESS){
+ switch_log_printf(
+ SWITCH_CHANNEL_LOG,
+ SWITCH_LOG_ERROR,
+ "Failure hooking to stream\n"
+ );
+
+ switch_safe_free(ccmd);
+ return SWITCH_STATUS_FALSE;
+ }
+
+ /* Set the vmd tag to detect an existing vmd media bug */
+ switch_channel_set_private(channel, "_vmd_", bug);
+
+ /* Everything went according to plan! Notify the user */
+ stream->write_function(stream, "+OK\n");
+
+ switch_safe_free(ccmd);
+ return SWITCH_STATUS_SUCCESS;
+}
+
+/*
+ If it exists, this is called in it's own thread
+ when the module-load completes. If it returns anything
+ but SWITCH_STATUS_TERM it will be called again automatically
+*/
+
+/*
+SWITCH_MODULE_RUNTIME_FUNCTION(mod_vmd_runtime)
+{
+ while(looping){
+
+ switch_yield(1000);
+ }
+
+ return SWITCH_STATUS_TERM;
+}
+*/
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */
+
1
0
05 Dec '08
Author: brian
Date: Fri Dec 5 12:39:59 2008
New Revision: 10622
Log:
new mod
Added:
freeswitch/trunk/src/mod/applications/mod_vmd/
1
0