Great home for rental or 1st time buyer in Dallas, Georgia. Very large private wooded lot. Potential short sale. All paperwork has been submitted to current mortgage holder. All we need is a contract. Only cosmetics needed.
Directions: TRAVELING SOUTH ON HWY 92 IT CHANGES TO 381. LT ON MT TABOR CHURCH RD. RT GARRISON DR. HOME ON RT.
Summary: POTENTIAL SHORT SALE. ALL PAPERWORK HAS BEEN SUBMITTED TO CURRENT MORTGAGE HOLDER. ALL WE NEED IS A CONTRACT. ONLY COSMETICS NEEDED. WOULD MAKE A GREAT RENTAL OR PERFECT FOR 1ST TIME HOME BUYER. VERY LARGE PRIVATE WOODED LOT.


text:
/* jshint latedef:false */
/* jshint forin:false */
/* jshint noempty:false */

//
// Copyright (c) Microsoft and contributors.  All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//

// Warning: This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if the
// code is regenerated.

'use strict';

var util = require('util');
var moment = require('moment');
var azureCommon = require('azure-common');
var Service = azureCommon.Service;
var WebResource = azureCommon.WebResource;

var AutoscaleClient = ( /** @lends AutoscaleClient */ function() {
  /**
   * @class
   * Initializes a new instance of the AutoscaleClient class.
   * @constructor
   *
   * @param {SubscriptionCloudCredentials} credentials Gets subscription
   * credentials which uniquely identify Microsoft Azure subscription. The
   * subscription ID forms part of the URI for every service call.
   *
   * @param {string} [credentials.subscriptionId]
   *
   * @param {string} [baseUri] Gets the URI used as the base for all cloud
   * service requests.
   *
   * @param {Array} filters
   */
  function AutoscaleClient(credentials, baseUri, filters) {
    if (credentials === null || credentials === undefined) {
      throw new Error('credentials cannot be null.');
    }

    AutoscaleClient['super_'].call(this, credentials, filters);

    this.credentials = credentials;
    this.baseUri = baseUri;
    if (this.baseUri === null || this.baseUri === undefined) {
      this.baseUri = 'https://management.core.windows.net';
    }
    if (this.apiVersion === null || this.apiVersion === undefined) {
      this.apiVersion = '2014-04';
    }
    if (this.longRunningOperationInitialTimeout === null || this.longRunningOperationInitialTimeout === undefined) {
      this.longRunningOperationInitialTimeout = -1;
    }
    if (this.longRunningOperationRetryTimeout === null || this.longRunningOperationRetryTimeout === undefined) {
      this.longRunningOperationRetryTimeout = -1;
    }
    /**
     * Provides an instance of the [SettingOperations](-SettingOperations.html)
     * object.
     * @type {object}
     */
    this.settings = new SettingOperations(this);
  }

  util.inherits(AutoscaleClient, Service);

  return AutoscaleClient;
})();
exports.AutoscaleClient = AutoscaleClient;

var SettingOperations = ( /** @lends SettingOperations */ function() {
  /**
   * @class
   * Operations for managing the autoscale settings.
   * __NOTE__: An instance of this class is automatically created for an
   * instance of the [AutoscaleClient] {@link AutoscaleClient~AutoscaleClient}.
   * See [settings] {@link AutoscaleClient~AutoscaleClient#settings}.
   * Initializes a new instance of the SettingOperations class.
   * @constructor
   *
   * @param {AutoscaleClient} client Reference to the service client.
   */
  function SettingOperations(client) {
    this.client = client;
  }

  /**
   *
   * @param {string} resourceGroupName The resource name.
   *
   * @param {string} autoscaleSettingName The autoscale setting name.
   *
   * @param {AutoscaleSettingCreateOrUpdateParameters} parameters Parameters
   * supplied to the operation.
   *
   * @param {string} [parameters.location] The location of the setting.
   *
   * @param {object} [parameters.tags] The tags of the rule.
   *
   * @param {AutoscaleSetting} [parameters.properties] The setting to create or
   * update.
   *
   * @param {array} [parameters.properties.profiles]
   *
   * @param {boolean} [parameters.properties.enabled]
   *
   * @param {string} [parameters.properties.name]
   *
   * @param {string} [parameters.properties.targetResourceUri]
   *
   * @param {function} callback
   *
   * @returns {Stream} The response stream.
   */
  SettingOperations.prototype.createOrUpdate = function(resourceGroupName, autoscaleSettingName, parameters, callback) {
    if (callback === null || callback === undefined) {
      throw new Error('callback cannot be null.');
    }
    // Validate
    if (resourceGroupName === null || resourceGroupName === undefined) {
      return callback(new Error('resourceGroupName cannot be null.'));
    }
    if (autoscaleSettingName === null || autoscaleSettingName === undefined) {
      return callback(new Error('autoscaleSettingName cannot be null.'));
    }
    if (parameters === null || parameters === undefined) {
      return callback(new Error('parameters cannot be null.'));
    }
    if (parameters.properties) {
      if (parameters.properties.enabled === null || parameters.properties.enabled === undefined) {
        return callback(new Error('parameters.properties.enabled cannot be null.'));
      }
      if (parameters.properties.profiles) {
        for (var loweredIndex1 = 0; loweredIndex1 < parameters.properties.profiles.length; loweredIndex1 = loweredIndex1 + 1) {
          var profilesParameterItem = parameters.properties.profiles[loweredIndex1];
          if (profilesParameterItem.fixedDate) {
            if (profilesParameterItem.fixedDate.end === null || profilesParameterItem.fixedDate.end === undefined) {
              return callback(new Error('parameters.properties.profiles.fixedDate.end cannot be null.'));
            }
            if (profilesParameterItem.fixedDate.start === null || profilesParameterItem.fixedDate.start === undefined) {
              return callback(new Error('parameters.properties.profiles.fixedDate.start cannot be null.'));
            }
          }
          if (profilesParameterItem.rules) {
            for (var loweredIndex2 = 0; loweredIndex2 < profilesParameterItem.rules.length; loweredIndex2 = loweredIndex2 + 1) {
              var rulesParameterItem = profilesParameterItem.rules[loweredIndex2];
              if (rulesParameterItem.metricTrigger) {
                if (rulesParameterItem.metricTrigger.threshold === null || rulesParameterItem.metricTrigger.threshold === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.threshold cannot be null.'));
                }
                if (rulesParameterItem.metricTrigger.timeGrain === null || rulesParameterItem.metricTrigger.timeGrain === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.timeGrain cannot be null.'));
                }
                if (rulesParameterItem.metricTrigger.timeWindow === null || rulesParameterItem.metricTrigger.timeWindow === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.timeWindow cannot be null.'));
                }
              }
              if (rulesParameterItem.scaleAction) {
                if (rulesParameterItem.scaleAction.cooldown === null || rulesParameterItem.scaleAction.cooldown === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.scaleAction.cooldown cannot be null.'));
                }
              }
            }
          }
        }
      }
    }

    // Tracing

    // Construct URL
    var url2 = '/subscriptions/' + (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/resourcegroups/' + resourceGroupName.trim() + '/providers/microsoft.insights/autoscalesettings/' + autoscaleSettingName.trim() + '?';
    url2 = url2 + 'api-version=2014-04';
    var baseUrl = this.client.baseUri;
    // Trim '/' character from the end of baseUrl and beginning of url.
    if (baseUrl[baseUrl.length - 1] === '/') {
      baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
    }
    if (url2[0] === '/') {
      url2 = url2.substring(1);
    }
    url2 = baseUrl + '/' + url2;
    url2 = url2.replace(' ', '%20');

    // Create HTTP transport objects
    var httpRequest = new WebResource();
    httpRequest.method = 'PUT';
    httpRequest.headers = {};
    httpRequest.url = url2;

    // Set Headers
    httpRequest.headers['Accept'] = 'application/json';
    httpRequest.headers['Content-Type'] = 'application/json';

    // Serialize Request
    var requestContent = null;
    var requestDoc = null;

    var autoscaleSettingCreateOrUpdateParametersValue = {};
    requestDoc = {};
    requestDoc['autoscaleSettingCreateOrUpdateParameters'] = autoscaleSettingCreateOrUpdateParametersValue;

    if (parameters.location) {
      autoscaleSettingCreateOrUpdateParametersValue['location'] = parameters.location;
    }

    var tagsDictionary = {};
    if (parameters.tags) {
      for (var tagsKey in parameters.tags) {
        var tagsValue = parameters.tags[tagsKey];
        tagsDictionary[tagsKey] = tagsValue;
      }
    }
    autoscaleSettingCreateOrUpdateParametersValue['tags'] = tagsDictionary;

    if (parameters.properties) {
      var propertiesValue = {};
      autoscaleSettingCreateOrUpdateParametersValue['properties'] = propertiesValue;

      if (parameters.properties.profiles) {
        var profilesArray = [];
        for (var loweredIndex3 = 0; loweredIndex3 < parameters.properties.profiles.length; loweredIndex3 = loweredIndex3 + 1) {
          var profilesItem = parameters.properties.profiles[loweredIndex3];
          var autoscaleProfileValue = {};
          profilesArray.push(autoscaleProfileValue);

          if (profilesItem.name) {
            autoscaleProfileValue['name'] = profilesItem.name;
          }

          if (profilesItem.capacity) {
            var capacityValue = {};
            autoscaleProfileValue['capacity'] = capacityValue;

            if (profilesItem.capacity.minimum) {
              capacityValue['minimum'] = profilesItem.capacity.minimum;
            }

            if (profilesItem.capacity.maximum) {
              capacityValue['maximum'] = profilesItem.capacity.maximum;
            }

            if (profilesItem.capacity.default) {
              capacityValue['default'] = profilesItem.capacity.default;
            }
          }

          if (profilesItem.rules) {
            var rulesArray = [];
            for (var loweredIndex4 = 0; loweredIndex4 < profilesItem.rules.length; loweredIndex4 = loweredIndex4 + 1) {
              var rulesItem = profilesItem.rules[loweredIndex4];
              var scaleRuleValue = {};
              rulesArray.push(scaleRuleValue);

              if (rulesItem.metricTrigger) {
                var metricTriggerValue = {};
                scaleRuleValue['metricTrigger'] = metricTriggerValue;

                if (rulesItem.metricTrigger.metricName) {
                  metricTriggerValue['metricName'] = rulesItem.metricTrigger.metricName;
                }

                if (rulesItem.metricTrigger.metricNamespace) {
                  metricTriggerValue['metricNamespace'] = rulesItem.metricTrigger.metricNamespace;
                }

                if (rulesItem.metricTrigger.metricResourceUri) {
                  metricTriggerValue['metricResourceUri'] = rulesItem.metricTrigger.metricResourceUri;
                }

                metricTriggerValue['timeGrain'] = rulesItem.metricTrigger.timeGrain.toIsoString();

                metricTriggerValue['statistic'] = rulesItem.metricTrigger.statistic ? rulesItem.metricTrigger.statistic.toString() : 'Average';

                metricTriggerValue['timeWindow'] = rulesItem.metricTrigger.timeWindow.toIsoString();

                metricTriggerValue['timeAggregation'] = rulesItem.metricTrigger.timeAggregation ? rulesItem.metricTrigger.timeAggregation.toString() : 'Average';

                metricTriggerValue['operator'] = rulesItem.metricTrigger.operator ? rulesItem.metricTrigger.operator.toString() : 'Equals';

                metricTriggerValue['threshold'] = rulesItem.metricTrigger.threshold;
              }

              if (rulesItem.scaleAction) {
                var scaleActionValue = {};
                scaleRuleValue['scaleAction'] = scaleActionValue;

                scaleActionValue['direction'] = rulesItem.scaleAction.direction ? rulesItem.scaleAction.direction.toString() : 'None';

                scaleActionValue['type'] = rulesItem.scaleAction.type ? rulesItem.scaleAction.type.toString() : 'ChangeSize';

                if (rulesItem.scaleAction.value) {
                  scaleActionValue['value'] = rulesItem.scaleAction.value;
                }

                scaleActionValue['cooldown'] = rulesItem.scaleAction.cooldown.toIsoString();
              }
            }
            autoscaleProfileValue['rules'] = rulesArray;
          }

          if (profilesItem.fixedDate) {
            var fixedDateValue = {};
            autoscaleProfileValue['fixedDate'] = fixedDateValue;

            if (profilesItem.fixedDate.timeZone) {
              fixedDateValue['timeZone'] = profilesItem.fixedDate.timeZone;
            }

            fixedDateValue['start'] = profilesItem.fixedDate.start;

            fixedDateValue['end'] = profilesItem.fixedDate.end;
          }

          if (profilesItem.recurrence) {
            var recurrenceValue = {};
            autoscaleProfileValue['recurrence'] = recurrenceValue;

            recurrenceValue['frequency'] = profilesItem.recurrence.frequency ? profilesItem.recurrence.frequency.toString() : 'None';

            if (profilesItem.recurrence.schedule) {
              var scheduleValue = {};
              recurrenceValue['schedule'] = scheduleValue;

              if (profilesItem.recurrence.schedule.timeZone) {
                scheduleValue['timeZone'] = profilesItem.recurrence.schedule.timeZone;
              }

              if (profilesItem.recurrence.schedule.days) {
                var daysArray = [];
                for (var loweredIndex5 = 0; loweredIndex5 < profilesItem.recurrence.schedule.days.length; loweredIndex5 = loweredIndex5 + 1) {
                  var daysItem = profilesItem.recurrence.schedule.days[loweredIndex5];
                  daysArray.push(daysItem);
                }
                scheduleValue['days'] = daysArray;
              }

              if (profilesItem.recurrence.schedule.hours) {
                var hoursArray = [];
                for (var loweredIndex6 = 0; loweredIndex6 < profilesItem.recurrence.schedule.hours.length; loweredIndex6 = loweredIndex6 + 1) {
                  var hoursItem = profilesItem.recurrence.schedule.hours[loweredIndex6];
                  hoursArray.push(hoursItem);
                }
                scheduleValue['hours'] = hoursArray;
              }

              if (profilesItem.recurrence.schedule.minutes) {
                var minutesArray = [];
                for (var loweredIndex7 = 0; loweredIndex7 < profilesItem.recurrence.schedule.minutes.length; loweredIndex7 = loweredIndex7 + 1) {
                  var minutesItem = profilesItem.recurrence.schedule.minutes[loweredIndex7];
                  minutesArray.push(minutesItem);
                }
                scheduleValue['minutes'] = minutesArray;
              }
            }
          }
        }
        propertiesValue['profiles'] = profilesArray;
      }

      propertiesValue['enabled'] = parameters.properties.enabled;

      if (parameters.properties.name) {
        propertiesValue['name'] = parameters.properties.name;
      }

      if (parameters.properties.targetResourceUri) {
        propertiesValue['targetResourceUri'] = parameters.properties.targetResourceUri;
      }
    }

    requestContent = JSON.stringify(requestDoc);
    httpRequest.body = requestContent;
    httpRequest.headers['Content-Length'] = Buffer.isBuffer(requestContent) ? requestContent.length : Buffer.byteLength(requestContent, 'UTF8');
    // Send Request
    return this.client.pipeline(httpRequest, function (err, response, body) {
      if (err) {
        return callback(err);
      }
      var statusCode = response.statusCode;
      if (statusCode !== 200 && statusCode !== 201) {
        var error = new Error(body);
        error.statusCode = response.statusCode;
        return callback(error);
      }

      // Create Result
      var result = null;
      result = {};
      result.statusCode = statusCode;
      result.requestId = response.headers['x-ms-request-id'];

      return callback(null, result);
    });
  };

  /**
   *
   * @param {string} resourceGroupName The resource name.
   *
   * @param {string} autoscaleSettingName The autoscale setting name.
   *
   * @param {function} callback
   *
   * @returns {Stream} The response stream.
   */
  SettingOperations.prototype.delete = function(resourceGroupName, autoscaleSettingName, callback) {
    if (callback === null || callback === undefined) {
      throw new Error('callback cannot be null.');
    }
    // Validate
    if (resourceGroupName === null || resourceGroupName === undefined) {
      return callback(new Error('resourceGroupName cannot be null.'));
    }
    if (autoscaleSettingName === null || autoscaleSettingName === undefined) {
      return callback(new Error('autoscaleSettingName cannot be null.'));
    }

    // Tracing

    // Construct URL
    var url2 = '/subscriptions/' + (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/resourcegroups/' + resourceGroupName.trim() + '/providers/microsoft.insights/autoscalesettings/' + autoscaleSettingName.trim() + '?';
    url2 = url2 + 'api-version=2014-04';
    var baseUrl = this.client.baseUri;
    // Trim '/' character from the end of baseUrl and beginning of url.
    if (baseUrl[baseUrl.length - 1] === '/') {
      baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
    }
    if (url2[0] === '/') {
      url2 = url2.substring(1);
    }
    url2 = baseUrl + '/' + url2;
    url2 = url2.replace(' ', '%20');

    // Create HTTP transport objects
    var httpRequest = new WebResource();
    httpRequest.method = 'DELETE';
    httpRequest.headers = {};
    httpRequest.url = url2;

    // Set Headers
    httpRequest.headers['Accept'] = 'application/json';
    httpRequest.headers['Content-Type'] = 'application/json';

    // Send Request
    return this.client.pipeline(httpRequest, function (err, response, body) {
      if (err) {
        return callback(err);
      }
      var statusCode = response.statusCode;
      if (statusCode !== 200) {
        var error = new Error(body);
        error.statusCode = response.statusCode;
        return callback(error);
      }

      // Create Result
      var result = null;
      result = {};
      result.statusCode = statusCode;
      result.requestId = response.headers['x-ms-request-id'];

      return callback(null, result);
    });
  };

  /**
   *
   * @param {string} resourceGroupName The resource name.
   *
   * @param {string} autoscaleSettingName The autoscale setting name.
   *
   * @param {function} callback
   *
   * @returns {Stream} The response stream.
   */
  SettingOperations.prototype.get = function(resourceGroupName, autoscaleSettingName, callback) {
    if (callback === null || callback === undefined) {
      throw new Error('callback cannot be null.');
    }
    // Validate
    if (resourceGroupName === null || resourceGroupName === undefined) {
      return callback(new Error('resourceGroupName cannot be null.'));
    }
    if (autoscaleSettingName === null || autoscaleSettingName === undefined) {
      return callback(new Error('autoscaleSettingName cannot be null.'));
    }

    // Tracing

    // Construct URL
    var url2 = '/subscriptions/' + (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/resourcegroups/' + resourceGroupName.trim() + '/providers/microsoft.insights/autoscalesettings/' + autoscaleSettingName.trim() + '?';
    url2 = url2 + 'api-version=2014-04';
    var baseUrl = this.client.baseUri;
    // Trim '/' character from the end of baseUrl and beginning of url.
    if (baseUrl[baseUrl.length - 1] === '/') {
      baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
    }
    if (url2[0] === '/') {
      url2 = url2.substring(1);
    }
    url2 = baseUrl + '/' + url2;
    url2 = url2.replace(' ', '%20');

    // Create HTTP transport objects
    var httpRequest = new WebResource();
    httpRequest.method = 'GET';
    httpRequest.headers = {};
    httpRequest.url = url2;

    // Set Headers
    httpRequest.headers['Accept'] = 'application/json';
    httpRequest.headers['Content-Type'] = 'application/json';

    // Send Request
    return this.client.pipeline(httpRequest, function (err, response, body) {
      if (err) {
        return callback(err);
      }
      var statusCode = response.statusCode;
      if (statusCode !== 200) {
        var error = new Error(body);
        error.statusCode = response.statusCode;
        return callback(error);
      }

      // Create Result
      var result = null;
      // Deserialize Response
      var responseContent = body;
      result = { tags: {} };
      var responseDoc = null;
      if (responseContent) {
        responseDoc = JSON.parse(responseContent);
      }

      if (responseDoc) {
        var idValue = responseDoc['id'];
        if (idValue) {
          var idInstance = idValue;
          result.id = idInstance;
        }

        var nameValue = responseDoc['name'];
        if (nameValue) {
          var nameInstance = nameValue;
          result.name = nameInstance;
        }

        var locationValue = responseDoc['location'];
        if (locationValue) {
          var locationInstance = locationValue;
          result.location = locationInstance;
        }

        var tagsSequenceElement = responseDoc['tags'];
        if (tagsSequenceElement) {
          for (var property in tagsSequenceElement) {
            var tagsKey = property;
            var tagsValue = tagsSequenceElement[property];
            result.tags[tagsKey] = tagsValue;
          }
        }

        var propertiesValue = responseDoc['properties'];
        if (propertiesValue) {
          var propertiesInstance = { profiles: [] };
          result.properties = propertiesInstance;

          var profilesArray = propertiesValue['profiles'];
          if (profilesArray) {
            for (var loweredIndex1 = 0; loweredIndex1 < profilesArray.length; loweredIndex1 = loweredIndex1 + 1) {
              var profilesValue = profilesArray[loweredIndex1];
              var autoscaleProfileInstance = { rules: [] };
              propertiesInstance.profiles.push(autoscaleProfileInstance);

              var nameValue2 = profilesValue['name'];
              if (nameValue2) {
                var nameInstance2 = nameValue2;
                autoscaleProfileInstance.name = nameInstance2;
              }

              var capacityValue = profilesValue['capacity'];
              if (capacityValue) {
                var capacityInstance = {};
                autoscaleProfileInstance.capacity = capacityInstance;

                var minimumValue = capacityValue['minimum'];
                if (minimumValue) {
                  var minimumInstance = minimumValue;
                  capacityInstance.minimum = minimumInstance;
                }

                var maximumValue = capacityValue['maximum'];
                if (maximumValue) {
                  var maximumInstance = maximumValue;
                  capacityInstance.maximum = maximumInstance;
                }

                var defaultValue = capacityValue['default'];
                if (defaultValue) {
                  var defaultInstance = defaultValue;
                  capacityInstance.default = defaultInstance;
                }
              }

              var rulesArray = profilesValue['rules'];
              if (rulesArray) {
                for (var loweredIndex2 = 0; loweredIndex2 < rulesArray.length; loweredIndex2 = loweredIndex2 + 1) {
                  var rulesValue = rulesArray[loweredIndex2];
                  var scaleRuleInstance = {};
                  autoscaleProfileInstance.rules.push(scaleRuleInstance);

                  var metricTriggerValue = rulesValue['metricTrigger'];
                  if (metricTriggerValue) {
                    var metricTriggerInstance = {};
                    scaleRuleInstance.metricTrigger = metricTriggerInstance;

                    var metricNameValue = metricTriggerValue['metricName'];
                    if (metricNameValue) {
                      var metricNameInstance = metricNameValue;
                      metricTriggerInstance.metricName = metricNameInstance;
                    }

                    var metricNamespaceValue = metricTriggerValue['metricNamespace'];
                    if (metricNamespaceValue) {
                      var metricNamespaceInstance = metricNamespaceValue;
                      metricTriggerInstance.metricNamespace = metricNamespaceInstance;
                    }

                    var metricResourceUriValue = metricTriggerValue['metricResourceUri'];
                    if (metricResourceUriValue) {
                      var metricResourceUriInstance = metricResourceUriValue;
                      metricTriggerInstance.metricResourceUri = metricResourceUriInstance;
                    }

                    var timeGrainValue = metricTriggerValue['timeGrain'];
                    if (timeGrainValue) {
                      var timeGrainInstance = moment.duration(timeGrainValue);
                      metricTriggerInstance.timeGrain = timeGrainInstance;
                    }

                    var statisticValue = metricTriggerValue['statistic'];
                    if (statisticValue) {
                      var statisticInstance = statisticValue;
                      metricTriggerInstance.statistic = statisticInstance;
                    }

                    var timeWindowValue = metricTriggerValue['timeWindow'];
                    if (timeWindowValue) {
                      var timeWindowInstance = moment.duration(timeWindowValue);
                      metricTriggerInstance.timeWindow = timeWindowInstance;
                    }

                    var timeAggregationValue = metricTriggerValue['timeAggregation'];
                    if (timeAggregationValue) {
                      var timeAggregationInstance = timeAggregationValue;
                      metricTriggerInstance.timeAggregation = timeAggregationInstance;
                    }

                    var operatorValue = metricTriggerValue['operator'];
                    if (operatorValue) {
                      var operatorInstance = operatorValue;
                      metricTriggerInstance.operator = operatorInstance;
                    }

                    var thresholdValue = metricTriggerValue['threshold'];
                    if (thresholdValue) {
                      var thresholdInstance = thresholdValue;
                      metricTriggerInstance.threshold = thresholdInstance;
                    }
                  }

                  var scaleActionValue = rulesValue['scaleAction'];
                  if (scaleActionValue) {
                    var scaleActionInstance = {};
                    scaleRuleInstance.scaleAction = scaleActionInstance;

                    var directionValue = scaleActionValue['direction'];
                    if (directionValue) {
                      var directionInstance = directionValue;
                      scaleActionInstance.direction = directionInstance;
                    }

                    var typeValue = scaleActionValue['type'];
                    if (typeValue) {
                      var typeInstance = typeValue;
                      scaleActionInstance.type = typeInstance;
                    }

                    var valueValue = scaleActionValue['value'];
                    if (valueValue) {
                      var valueInstance = valueValue;
                      scaleActionInstance.value = valueInstance;
                    }

                    var cooldownValue = scaleActionValue['cooldown'];
                    if (cooldownValue) {
                      var cooldownInstance = moment.duration(cooldownValue);
                      scaleActionInstance.cooldown = cooldownInstance;
                    }
                  }
                }
              }

              var fixedDateValue = profilesValue['fixedDate'];
              if (fixedDateValue) {
                var fixedDateInstance = {};
                autoscaleProfileInstance.fixedDate = fixedDateInstance;

                var timeZoneValue = fixedDateValue['timeZone'];
                if (timeZoneValue) {
                  var timeZoneInstance = timeZoneValue;
                  fixedDateInstance.timeZone = timeZoneInstance;
                }

                var startValue = fixedDateValue['start'];
                if (startValue) {
                  var startInstance = startValue;
                  fixedDateInstance.start = startInstance;
                }

                var endValue = fixedDateValue['end'];
                if (endValue) {
                  var endInstance = endValue;
                  fixedDateInstance.end = endInstance;
                }
              }

              var recurrenceValue = profilesValue['recurrence'];
              if (recurrenceValue) {
                var recurrenceInstance = {};
                autoscaleProfileInstance.recurrence = recurrenceInstance;

                var frequencyValue = recurrenceValue['frequency'];
                if (frequencyValue) {
                  var frequencyInstance = frequencyValue;
                  recurrenceInstance.frequency = frequencyInstance;
                }

                var scheduleValue = recurrenceValue['schedule'];
                if (scheduleValue) {
                  var scheduleInstance = { days: [], hours: [], minutes: [] };
                  recurrenceInstance.schedule = scheduleInstance;

                  var timeZoneValue2 = scheduleValue['timeZone'];
                  if (timeZoneValue2) {
                    var timeZoneInstance2 = timeZoneValue2;
                    scheduleInstance.timeZone = timeZoneInstance2;
                  }

                  var daysArray = scheduleValue['days'];
                  if (daysArray) {
                    for (var loweredIndex3 = 0; loweredIndex3 < daysArray.length; loweredIndex3 = loweredIndex3 + 1) {
                      var daysValue = daysArray[loweredIndex3];
                      scheduleInstance.days.push(daysValue);
                    }
                  }

                  var hoursArray = scheduleValue['hours'];
                  if (hoursArray) {
                    for (var loweredIndex4 = 0; loweredIndex4 < hoursArray.length; loweredIndex4 = loweredIndex4 + 1) {
                      var hoursValue = hoursArray[loweredIndex4];
                      scheduleInstance.hours.push(hoursValue);
                    }
                  }

                  var minutesArray = scheduleValue['minutes'];
                  if (minutesArray) {
                    for (var loweredIndex5 = 0; loweredIndex5 < minutesArray.length; loweredIndex5 = loweredIndex5 + 1) {
                      var minutesValue = minutesArray[loweredIndex5];
                      scheduleInstance.minutes.push(minutesValue);
                    }
                  }
                }
              }
            }
          }

          var enabledValue = propertiesValue['enabled'];
          if (enabledValue) {
            var enabledInstance = enabledValue;
            propertiesInstance.enabled = enabledInstance;
          }

          var nameValue3 = propertiesValue['name'];
          if (nameValue3) {
            var nameInstance3 = nameValue3;
            propertiesInstance.name = nameInstance3;
          }

          var targetResourceUriValue = propertiesValue['targetResourceUri'];
          if (targetResourceUriValue) {
            var targetResourceUriInstance = targetResourceUriValue;
            propertiesInstance.targetResourceUri = targetResourceUriInstance;
          }
        }
      }

      result.statusCode = statusCode;
      result.requestId = response.headers['x-ms-request-id'];

      return callback(null, result);
    });
  };

  /**
   *
   * @param {string} resourceGroupName The resource name.
   *
   * @param {string} [targetResourceUri] The resource uri of the target of the
   * autoscale setting.
   *
   * @param {function} callback
   *
   * @returns {Stream} The response stream.
   */
  SettingOperations.prototype.list = function(resourceGroupName, targetResourceUri, callback) {
    if (callback === null || callback === undefined) {
      throw new Error('callback cannot be null.');
    }
    // Validate
    if (resourceGroupName === null || resourceGroupName === undefined) {
      return callback(new Error('resourceGroupName cannot be null.'));
    }

    // Tracing

    // Construct URL
    var url2 = '/subscriptions/' + (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/resourcegroups/' + resourceGroupName.trim() + '/providers/microsoft.insights/autoscalesettings?';
    url2 = url2 + 'api-version=2014-04';
    if (targetResourceUri) {
      url2 = url2 + '&$filter=targetResourceUri eq ' + encodeURIComponent(targetResourceUri ? targetResourceUri.trim() : '');
    }
    var baseUrl = this.client.baseUri;
    // Trim '/' character from the end of baseUrl and beginning of url.
    if (baseUrl[baseUrl.length - 1] === '/') {
      baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
    }
    if (url2[0] === '/') {
      url2 = url2.substring(1);
    }
    url2 = baseUrl + '/' + url2;
    url2 = url2.replace(' ', '%20');

    // Create HTTP transport objects
    var httpRequest = new WebResource();
    httpRequest.method = 'GET';
    httpRequest.headers = {};
    httpRequest.url = url2;

    // Set Headers
    httpRequest.headers['Accept'] = 'application/json';
    httpRequest.headers['Content-Type'] = 'application/json';

    // Send Request
    return this.client.pipeline(httpRequest, function (err, response, body) {
      if (err) {
        return callback(err);
      }
      var statusCode = response.statusCode;
      if (statusCode !== 200) {
        var error = new Error(body);
        error.statusCode = response.statusCode;
        return callback(error);
      }

      // Create Result
      var result = null;
      // Deserialize Response
      var responseContent = body;
      result = {};
      var responseDoc = null;
      if (responseContent) {
        responseDoc = JSON.parse(responseContent);
      }

      if (responseDoc) {
        var autoscaleSettingResourceCollectionInstance = { value: [] };
        result.autoscaleSettingResourceCollection = autoscaleSettingResourceCollectionInstance;

        var valueArray = responseDoc['value'];
        if (valueArray) {
          for (var loweredIndex1 = 0; loweredIndex1 < valueArray.length; loweredIndex1 = loweredIndex1 + 1) {
            var valueValue = valueArray[loweredIndex1];
            var autoscaleSettingResourceInstance = { tags: {} };
            autoscaleSettingResourceCollectionInstance.value.push(autoscaleSettingResourceInstance);

            var idValue = valueValue['id'];
            if (idValue) {
              var idInstance = idValue;
              autoscaleSettingResourceInstance.id = idInstance;
            }

            var nameValue = valueValue['name'];
            if (nameValue) {
              var nameInstance = nameValue;
              autoscaleSettingResourceInstance.name = nameInstance;
            }

            var locationValue = valueValue['location'];
            if (locationValue) {
              var locationInstance = locationValue;
              autoscaleSettingResourceInstance.location = locationInstance;
            }

            var tagsSequenceElement = valueValue['tags'];
            if (tagsSequenceElement) {
              for (var property in tagsSequenceElement) {
                var tagsKey = property;
                var tagsValue = tagsSequenceElement[property];
                autoscaleSettingResourceInstance.tags[tagsKey] = tagsValue;
              }
            }

            var propertiesValue = valueValue['properties'];
            if (propertiesValue) {
              var propertiesInstance = { profiles: [] };
              autoscaleSettingResourceInstance.properties = propertiesInstance;

              var profilesArray = propertiesValue['profiles'];
              if (profilesArray) {
                for (var loweredIndex2 = 0; loweredIndex2 < profilesArray.length; loweredIndex2 = loweredIndex2 + 1) {
                  var profilesValue = profilesArray[loweredIndex2];
                  var autoscaleProfileInstance = { rules: [] };
                  propertiesInstance.profiles.push(autoscaleProfileInstance);

                  var nameValue2 = profilesValue['name'];
                  if (nameValue2) {
                    var nameInstance2 = nameValue2;
                    autoscaleProfileInstance.name = nameInstance2;
                  }

                  var capacityValue = profilesValue['capacity'];
                  if (capacityValue) {
                    var capacityInstance = {};
                    autoscaleProfileInstance.capacity = capacityInstance;

                    var minimumValue = capacityValue['minimum'];
                    if (minimumValue) {
                      var minimumInstance = minimumValue;
                      capacityInstance.minimum = minimumInstance;
                    }

                    var maximumValue = capacityValue['maximum'];
                    if (maximumValue) {
                      var maximumInstance = maximumValue;
                      capacityInstance.maximum = maximumInstance;
                    }

                    var defaultValue = capacityValue['default'];
                    if (defaultValue) {
                      var defaultInstance = defaultValue;
                      capacityInstance.default = defaultInstance;
                    }
                  }

                  var rulesArray = profilesValue['rules'];
                  if (rulesArray) {
                    for (var loweredIndex3 = 0; loweredIndex3 < rulesArray.length; loweredIndex3 = loweredIndex3 + 1) {
                      var rulesValue = rulesArray[loweredIndex3];
                      var scaleRuleInstance = {};
                      autoscaleProfileInstance.rules.push(scaleRuleInstance);

                      var metricTriggerValue = rulesValue['metricTrigger'];
                      if (metricTriggerValue) {
                        var metricTriggerInstance = {};
                        scaleRuleInstance.metricTrigger = metricTriggerInstance;

                        var metricNameValue = metricTriggerValue['metricName'];
                        if (metricNameValue) {
                          var metricNameInstance = metricNameValue;
                          metricTriggerInstance.metricName = metricNameInstance;
                        }

                        var metricNamespaceValue = metricTriggerValue['metricNamespace'];
                        if (metricNamespaceValue) {
                          var metricNamespaceInstance = metricNamespaceValue;
                          metricTriggerInstance.metricNamespace = metricNamespaceInstance;
                        }

                        var metricResourceUriValue = metricTriggerValue['metricResourceUri'];
                        if (metricResourceUriValue) {
                          var metricResourceUriInstance = metricResourceUriValue;
                          metricTriggerInstance.metricResourceUri = metricResourceUriInstance;
                        }

                        var timeGrainValue = metricTriggerValue['timeGrain'];
                        if (timeGrainValue) {
                          var timeGrainInstance = moment.duration(timeGrainValue);
                          metricTriggerInstance.timeGrain = timeGrainInstance;
                        }

                        var statisticValue = metricTriggerValue['statistic'];
                        if (statisticValue) {
                          var statisticInstance = statisticValue;
                          metricTriggerInstance.statistic = statisticInstance;
                        }

                        var timeWindowValue = metricTriggerValue['timeWindow'];
                        if (timeWindowValue) {
                          var timeWindowInstance = moment.duration(timeWindowValue);
                          metricTriggerInstance.timeWindow = timeWindowInstance;
                        }

                        var timeAggregationValue = metricTriggerValue['timeAggregation'];
                        if (timeAggregationValue) {
                          var timeAggregationInstance = timeAggregationValue;
                          metricTriggerInstance.timeAggregation = timeAggregationInstance;
                        }

                        var operatorValue = metricTriggerValue['operator'];
                        if (operatorValue) {
                          var operatorInstance = operatorValue;
                          metricTriggerInstance.operator = operatorInstance;
                        }

                        var thresholdValue = metricTriggerValue['threshold'];
                        if (thresholdValue) {
                          var thresholdInstance = thresholdValue;
                          metricTriggerInstance.threshold = thresholdInstance;
                        }
                      }

                      var scaleActionValue = rulesValue['scaleAction'];
                      if (scaleActionValue) {
                        var scaleActionInstance = {};
                        scaleRuleInstance.scaleAction = scaleActionInstance;

                        var directionValue = scaleActionValue['direction'];
                        if (directionValue) {
                          var directionInstance = directionValue;
                          scaleActionInstance.direction = directionInstance;
                        }

                        var typeValue = scaleActionValue['type'];
                        if (typeValue) {
                          var typeInstance = typeValue;
                          scaleActionInstance.type = typeInstance;
                        }

                        var valueValue2 = scaleActionValue['value'];
                        if (valueValue2) {
                          var valueInstance = valueValue2;
                          scaleActionInstance.value = valueInstance;
                        }

                        var cooldownValue = scaleActionValue['cooldown'];
                        if (cooldownValue) {
                          var cooldownInstance = moment.duration(cooldownValue);
                          scaleActionInstance.cooldown = cooldownInstance;
                        }
                      }
                    }
                  }

                  var fixedDateValue = profilesValue['fixedDate'];
                  if (fixedDateValue) {
                    var fixedDateInstance = {};
                    autoscaleProfileInstance.fixedDate = fixedDateInstance;

                    var timeZoneValue = fixedDateValue['timeZone'];
                    if (timeZoneValue) {
                      var timeZoneInstance = timeZoneValue;
                      fixedDateInstance.timeZone = timeZoneInstance;
                    }

                    var startValue = fixedDateValue['start'];
                    if (startValue) {
                      var startInstance = startValue;
                      fixedDateInstance.start = startInstance;
                    }

                    var endValue = fixedDateValue['end'];
                    if (endValue) {
                      var endInstance = endValue;
                      fixedDateInstance.end = endInstance;
                    }
                  }

                  var recurrenceValue = profilesValue['recurrence'];
                  if (recurrenceValue) {
                    var recurrenceInstance = {};
                    autoscaleProfileInstance.recurrence = recurrenceInstance;

                    var frequencyValue = recurrenceValue['frequency'];
                    if (frequencyValue) {
                      var frequencyInstance = frequencyValue;
                      recurrenceInstance.frequency = frequencyInstance;
                    }

                    var scheduleValue = recurrenceValue['schedule'];
                    if (scheduleValue) {
                      var scheduleInstance = { days: [], hours: [], minutes: [] };
                      recurrenceInstance.schedule = scheduleInstance;

                      var timeZoneValue2 = scheduleValue['timeZone'];
                      if (timeZoneValue2) {
                        var timeZoneInstance2 = timeZoneValue2;
                        scheduleInstance.timeZone = timeZoneInstance2;
                      }

                      var daysArray = scheduleValue['days'];
                      if (daysArray) {
                        for (var loweredIndex4 = 0; loweredIndex4 < daysArray.length; loweredIndex4 = loweredIndex4 + 1) {
                          var daysValue = daysArray[loweredIndex4];
                          scheduleInstance.days.push(daysValue);
                        }
                      }

                      var hoursArray = scheduleValue['hours'];
                      if (hoursArray) {
                        for (var loweredIndex5 = 0; loweredIndex5 < hoursArray.length; loweredIndex5 = loweredIndex5 + 1) {
                          var hoursValue = hoursArray[loweredIndex5];
                          scheduleInstance.hours.push(hoursValue);
                        }
                      }

                      var minutesArray = scheduleValue['minutes'];
                      if (minutesArray) {
                        for (var loweredIndex6 = 0; loweredIndex6 < minutesArray.length; loweredIndex6 = loweredIndex6 + 1) {
                          var minutesValue = minutesArray[loweredIndex6];
                          scheduleInstance.minutes.push(minutesValue);
                        }
                      }
                    }
                  }
                }
              }

              var enabledValue = propertiesValue['enabled'];
              if (enabledValue) {
                var enabledInstance = enabledValue;
                propertiesInstance.enabled = enabledInstance;
              }

              var nameValue3 = propertiesValue['name'];
              if (nameValue3) {
                var nameInstance3 = nameValue3;
                propertiesInstance.name = nameInstance3;
              }

              var targetResourceUriValue = propertiesValue['targetResourceUri'];
              if (targetResourceUriValue) {
                var targetResourceUriInstance = targetResourceUriValue;
                propertiesInstance.targetResourceUri = targetResourceUriInstance;
              }
            }
          }
        }
      }

      result.statusCode = statusCode;
      result.requestId = response.headers['x-ms-request-id'];

      return callback(null, result);
    });
  };

  /**
   *
   * @param {string} resourceGroupName The resource name.
   *
   * @param {string} autoscaleSettingName The autoscale setting name.
   *
   * @param {AutoscaleSettingCreateOrUpdateParameters} parameters Parameters
   * supplied to the operation.
   *
   * @param {string} [parameters.location] The location of the setting.
   *
   * @param {object} [parameters.tags] The tags of the rule.
   *
   * @param {AutoscaleSetting} [parameters.properties] The setting to create or
   * update.
   *
   * @param {array} [parameters.properties.profiles]
   *
   * @param {boolean} [parameters.properties.enabled]
   *
   * @param {string} [parameters.properties.name]
   *
   * @param {string} [parameters.properties.targetResourceUri]
   *
   * @param {function} callback
   *
   * @returns {Stream} The response stream.
   */
  SettingOperations.prototype.update = function(resourceGroupName, autoscaleSettingName, parameters, callback) {
    if (callback === null || callback === undefined) {
      throw new Error('callback cannot be null.');
    }
    // Validate
    if (resourceGroupName === null || resourceGroupName === undefined) {
      return callback(new Error('resourceGroupName cannot be null.'));
    }
    if (autoscaleSettingName === null || autoscaleSettingName === undefined) {
      return callback(new Error('autoscaleSettingName cannot be null.'));
    }
    if (parameters === null || parameters === undefined) {
      return callback(new Error('parameters cannot be null.'));
    }
    if (parameters.properties) {
      if (parameters.properties.enabled === null || parameters.properties.enabled === undefined) {
        return callback(new Error('parameters.properties.enabled cannot be null.'));
      }
      if (parameters.properties.profiles) {
        for (var loweredIndex1 = 0; loweredIndex1 < parameters.properties.profiles.length; loweredIndex1 = loweredIndex1 + 1) {
          var profilesParameterItem = parameters.properties.profiles[loweredIndex1];
          if (profilesParameterItem.fixedDate) {
            if (profilesParameterItem.fixedDate.end === null || profilesParameterItem.fixedDate.end === undefined) {
              return callback(new Error('parameters.properties.profiles.fixedDate.end cannot be null.'));
            }
            if (profilesParameterItem.fixedDate.start === null || profilesParameterItem.fixedDate.start === undefined) {
              return callback(new Error('parameters.properties.profiles.fixedDate.start cannot be null.'));
            }
          }
          if (profilesParameterItem.rules) {
            for (var loweredIndex2 = 0; loweredIndex2 < profilesParameterItem.rules.length; loweredIndex2 = loweredIndex2 + 1) {
              var rulesParameterItem = profilesParameterItem.rules[loweredIndex2];
              if (rulesParameterItem.metricTrigger) {
                if (rulesParameterItem.metricTrigger.threshold === null || rulesParameterItem.metricTrigger.threshold === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.threshold cannot be null.'));
                }
                if (rulesParameterItem.metricTrigger.timeGrain === null || rulesParameterItem.metricTrigger.timeGrain === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.timeGrain cannot be null.'));
                }
                if (rulesParameterItem.metricTrigger.timeWindow === null || rulesParameterItem.metricTrigger.timeWindow === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.metricTrigger.timeWindow cannot be null.'));
                }
              }
              if (rulesParameterItem.scaleAction) {
                if (rulesParameterItem.scaleAction.cooldown === null || rulesParameterItem.scaleAction.cooldown === undefined) {
                  return callback(new Error('parameters.properties.profiles.rules.scaleAction.cooldown cannot be null.'));
                }
              }
            }
          }
        }
      }
    }

    // Tracing

    // Construct URL
    var url2 = '/subscriptions/' + (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/resourcegroups/' + resourceGroupName.trim() + '/providers/microsoft.insights/autoscalesettings/' + autoscaleSettingName.trim() + '?';
    url2 = url2 + 'api-version=2014-04';
    var baseUrl = this.client.baseUri;
    // Trim '/' character from the end of baseUrl and beginning of url.
    if (baseUrl[baseUrl.length - 1] === '/') {
      baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
    }
    if (url2[0] === '/') {
      url2 = url2.substring(1);
    }
    url2 = baseUrl + '/' + url2;
    url2 = url2.replace(' ', '%20');

    // Create HTTP transport objects
    var httpRequest = new WebResource();
    httpRequest.method = 'PATCH';
    httpRequest.headers = {};
    httpRequest.url = url2;

    // Set Headers
    httpRequest.headers['Accept'] = 'application/json';
    httpRequest.headers['Content-Type'] = 'application/json';

    // Serialize Request
    var requestContent = null;
    var requestDoc = null;

    var autoscaleSettingCreateOrUpdateParametersValue = {};
    requestDoc = {};
    requestDoc['autoscaleSettingCreateOrUpdateParameters'] = autoscaleSettingCreateOrUpdateParametersValue;

    if (parameters.location) {
      autoscaleSettingCreateOrUpdateParametersValue['location'] = parameters.location;
    }

    var tagsDictionary = {};
    if (parameters.tags) {
      for (var tagsKey in parameters.tags) {
        var tagsValue = parameters.tags[tagsKey];
        tagsDictionary[tagsKey] = tagsValue;
      }
    }
    autoscaleSettingCreateOrUpdateParametersValue['tags'] = tagsDictionary;

    if (parameters.properties) {
      var propertiesValue = {};
      autoscaleSettingCreateOrUpdateParametersValue['properties'] = propertiesValue;

      if (parameters.properties.profiles) {
        var profilesArray = [];
        for (var loweredIndex3 = 0; loweredIndex3 < parameters.properties.profiles.length; loweredIndex3 = loweredIndex3 + 1) {
          var profilesItem = parameters.properties.profiles[loweredIndex3];
          var autoscaleProfileValue = {};
          profilesArray.push(autoscaleProfileValue);

          if (profilesItem.name) {
            autoscaleProfileValue['name'] = profilesItem.name;
          }

          if (profilesItem.capacity) {
            var capacityValue = {};
            autoscaleProfileValue['capacity'] = capacityValue;

            if (profilesItem.capacity.minimum) {
              capacityValue['minimum'] = profilesItem.capacity.minimum;
            }

            if (profilesItem.capacity.maximum) {
              capacityValue['maximum'] = profilesItem.capacity.maximum;
            }

            if (profilesItem.capacity.default) {
              capacityValue['default'] = profilesItem.capacity.default;
            }
          }

          if (profilesItem.rules) {
            var rulesArray = [];
            for (var loweredIndex4 = 0; loweredIndex4 < profilesItem.rules.length; loweredIndex4 = loweredIndex4 + 1) {
              var rulesItem = profilesItem.rules[loweredIndex4];
              var scaleRuleValue = {};
              rulesArray.push(scaleRuleValue);

              if (rulesItem.metricTrigger) {
                var metricTriggerValue = {};
                scaleRuleValue['metricTrigger'] = metricTriggerValue;

                if (rulesItem.metricTrigger.metricName) {
                  metricTriggerValue['metricName'] = rulesItem.metricTrigger.metricName;
                }

                if (rulesItem.metricTrigger.metricNamespace) {
                  metricTriggerValue['metricNamespace'] = rulesItem.metricTrigger.metricNamespace;
                }

                if (rulesItem.metricTrigger.metricResourceUri) {
                  metricTriggerValue['metricResourceUri'] = rulesItem.metricTrigger.metricResourceUri;
                }

                metricTriggerValue['timeGrain'] = rulesItem.metricTrigger.timeGrain.toIsoString();

                metricTriggerValue['statistic'] = rulesItem.metricTrigger.statistic ? rulesItem.metricTrigger.statistic.toString() : 'Average';

                metricTriggerValue['timeWindow'] = rulesItem.metricTrigger.timeWindow.toIsoString();

                metricTriggerValue['timeAggregation'] = rulesItem.metricTrigger.timeAggregation ? rulesItem.metricTrigger.timeAggregation.toString() : 'Average';

                metricTriggerValue['operator'] = rulesItem.metricTrigger.operator ? rulesItem.metricTrigger.operator.toString() : 'Equals';

                metricTriggerValue['threshold'] = rulesItem.metricTrigger.threshold;
              }

              if (rulesItem.scaleAction) {
                var scaleActionValue = {};
                scaleRuleValue['scaleAction'] = scaleActionValue;

                scaleActionValue['direction'] = rulesItem.scaleAction.direction ? rulesItem.scaleAction.direction.toString() : 'None';

                scaleActionValue['type'] = rulesItem.scaleAction.type ? rulesItem.scaleAction.type.toString() : 'ChangeSize';

                if (rulesItem.scaleAction.value) {
                  scaleActionValue['value'] = rulesItem.scaleAction.value;
                }

                scaleActionValue['cooldown'] = rulesItem.scaleAction.cooldown.toIsoString();
              }
            }
            autoscaleProfileValue['rules'] = rulesArray;
          }

          if (profilesItem.fixedDate) {
            var fixedDateValue = {};
            autoscaleProfileValue['fixedDate'] = fixedDateValue;

            if (profilesItem.fixedDate.timeZone) {
              fixedDateValue['timeZone'] = profilesItem.fixedDate.timeZone;
            }

            fixedDateValue['start'] = profilesItem.fixedDate.start;

            fixedDateValue['end'] = profilesItem.fixedDate.end;
          }

          if (profilesItem.recurrence) {
            var recurrenceValue = {};
            autoscaleProfileValue['recurrence'] = recurrenceValue;

            recurrenceValue['frequency'] = profilesItem.recurrence.frequency ? profilesItem.recurrence.frequency.toString() : 'None';

            if (profilesItem.recurrence.schedule) {
              var scheduleValue = {};
              recurrenceValue['schedule'] = scheduleValue;

              if (profilesItem.recurrence.schedule.timeZone) {
                scheduleValue['timeZone'] = profilesItem.recurrence.schedule.timeZone;
              }

              if (profilesItem.recurrence.schedule.days) {
                var daysArray = [];
                for (var loweredIndex5 = 0; loweredIndex5 < profilesItem.recurrence.schedule.days.length; loweredIndex5 = loweredIndex5 + 1) {
                  var daysItem = profilesItem.recurrence.schedule.days[loweredIndex5];
                  daysArray.push(daysItem);
                }
                scheduleValue['days'] = daysArray;
              }

              if (profilesItem.recurrence.schedule.hours) {
                var hoursArray = [];
                for (var loweredIndex6 = 0; loweredIndex6 < profilesItem.recurrence.schedule.hours.length; loweredIndex6 = loweredIndex6 + 1) {
                  var hoursItem = profilesItem.recurrence.schedule.hours[loweredIndex6];
                  hoursArray.push(hoursItem);
                }
                scheduleValue['hours'] = hoursArray;
              }

              if (profilesItem.recurrence.schedule.minutes) {
                var minutesArray = [];
                for (var loweredIndex7 = 0; loweredIndex7 < profilesItem.recurrence.schedule.minutes.length; loweredIndex7 = loweredIndex7 + 1) {
                  var minutesItem = profilesItem.recurrence.schedule.minutes[loweredIndex7];
                  minutesArray.push(minutesItem);
                }
                scheduleValue['minutes'] = minutesArray;
              }
            }
          }
        }
        propertiesValue['profiles'] = profilesArray;
      }

      propertiesValue['enabled'] = parameters.properties.enabled;

      if (parameters.properties.name) {
        propertiesValue['name'] = parameters.properties.name;
      }

      if (parameters.properties.targetResourceUri) {
        propertiesValue['targetResourceUri'] = parameters.properties.targetResourceUri;
      }
    }

    requestContent = JSON.stringify(requestDoc);
    httpRequest.body = requestContent;
    httpRequest.headers['Content-Length'] = Buffer.isBuffer(requestContent) ? requestContent.length : Buffer.byteLength(requestContent, 'UTF8');
    // Send Request
    return this.client.pipeline(httpRequest, function (err, response, body) {
      if (err) {
        return callback(err);
      }
      var statusCode = response.statusCode;
      if (statusCode !== 200 && statusCode !== 201) {
        var error = new Error(body);
        error.statusCode = response.statusCode;
        return callback(error);
      }

      // Create Result
      var result = null;
      result = {};
      result.statusCode = statusCode;
      result.requestId = response.headers['x-ms-request-id'];

      return callback(null, result);
    });
  };

  return SettingOperations;
})();

redpajama_set_name: RedPajamaGithub


text:
Tag Archives: Data
From the Lab, Interview, Movies, Natural Science, Technology
How Animation Technology Is Helping Scientists Visualize Data
August 2, 2016 Jovana Grbic Leave a comment
A spiral galaxy in the Dorado constellation created by a black hole. Technology from the film Interstellar is helping scientists gain greater understanding of this phenomenon. (credit: Roberto Colombari/Stocktrek Images/Corbis)
From its earliest inceptions, science fiction has blurred the line between reality and technological fantasy in a remarkably prescient manner. Many of the discoveries and gadgets that have integrated seamlessly into modern life were first preconceived theoretically. More recently, the technologies behind ultra-realistic visual and motion capture effects are simultaneously helping scientists as research tools on a granular level in real time. The dazzling visual effects within the time-jumping space film Interstellar included creating original code for a physics-based ultra-realistic depiction of what it would be like to orbit around and through a black hole. Astrophysics researchers soon utilized the film's code to visualize black hole surfaces and their effects on nearby objects. Virtual reality, whose initial development was largely rooted in imbuing realism into the gaming and video industries, has advanced towards multi-purpose applications in film, technology and science. The Science Channel is augmenting traditional programming with a 'virtual experience' to simulate the challenges and scenarios of an astronaut's journey into space; VR-equipped GoPro cameras are documenting remote research environments to foster scientific collaboration and share knowledge; it's even being implemented in health care for improving training, diagnosis and treatment concepts. The ability to record high-definition film of landscapes and isolated areas with drones, which will have an enormous impact on cinematography, carries with it the simultaneous capacity to aid scientists and health workers with disaster relief, wildlife conservation and remote geomapping.
The evolution of entertainment industry technology is sophisticated, computationally powerful and increasingly cross-functional. A cohort of interdisciplinary researchers at Northwestern University is adapting computing and screen resolution developed at DreamWorks Animation Studios as a vehicle for data visualization, innovation and producing more rapid and efficient results. Their efforts, detailed below, and a collective trend towards integration of visual design in interpreting complex research, portends a collaborative future between science and entertainment.
Continue reading How Animation Technology Is Helping Scientists Visualize Data →
DataentertainmentFrom the LabScienceTechnologyVirtual Reality

redpajama_set_name: RedPajamaCommonCrawl


One of the appealing characteristics of Solaris and other UNIX-like systems is that applications can execute (or spawn) other applications: after all, user shells are nothing more than applications themselves. A shell can spawn another shell or application, which can spawn another shell or application, and so on. Instances of applications, such as the sendmail mail transport agent or the telnet remote access application, can be uniquely identified as individual processes and are associated with a unique process identifier (PID), which is an integer.
You may be wondering why process identifiers are not content addressable—that is, why the sendmail process cannot be identified as simply sendmail. Such a scheme would be quite sensible if it were impossible to execute multiple, independent instances of the same application (like early versions of the MacOS). However, Solaris allows the same user or different users to concurrently execute the same application independently, which means that an independent identifier is required for each process. This also means that each PID is related to a user identifier (UID) and to that user's group identifier (GID). The UID in this case can be either the real UID of the user who executed the process or the effective UID if the file executed is setUID. Similarly, the GID in this case can either be the real GID, which the user who executed the process belongs to, or the effective GID if the file executed is setGID.
When an application can be executed as setUID and setGID, other users can execute such a program as the user who owns the file. This means that setting a file as setGID for root can be dangerous in some situations, although necessary in others.
An application, such as a shell, can spawn another application by using the system call system() in a C program. This is expensive performance-wise, however, because a new shell process is spawned in addition to the target application. An alternative is to use the fork() system call, which spawns child processes directly, with applications executed using exec(). Each child process is linked back to its parent process: if the parent process exits, the parent process automatically reverts to PID 1, which exits when the system is shut down or rebooted.
In this section, you'll look at ways to determine which processes are currently running on your system and how to examine process lists and tables to determine what system resources are being used by specific processes.
The main command used to list commands is ps, which is highly configurable and has many command-line options. These options, and the command format, changed substantially from Solaris 1.x to Solaris 2.x: the former used BSD-style options, like ps aux, while the latter uses System V–style parameters, like ps -eaf. The proctool monitoring application is also supplied with Solaris 9.
ps takes a snapshot of the current process list; many administrators find that they need to interactively monitor processes on systems that have a high load, so they kill processes that are consuming too much memory, or at least assign them a lower execution priority.
As shown in Figure 8-1, the CDE (Common Desktop Environment) also has its own graphical "process finder," which lists currently active processes. It is possible to list processes here by PID, name, owner, percentage of CPU time consumed, physical memory used, virtual memory used, date started, parent PID, and the actual command executed. This does not provide as much information as top, but it is a useful tool within the CDE.
Because all processes are identifiable by a single PID, the PID can be used to manage that process by means of a signal. Signals can be sent to other processes in C programs using the signal() function, or they can be sent directly from within the shell. Solaris supports a number of standard signal types that can be used as a means of interprocess communication.
A common use for signals is to manage user applications that are launched from a shell. A "suspend" signal, for example, can be sent to an application running in the foreground by pressing CTRL-Z at any time. To run this application in the background in the C shell, for example, you would need to type bg at the command prompt. A unique background job number is then assigned to the job, and typing fg n, where n is that job number, brings the process back to the foreground.
You can run as many applications as you like in the background.
In the following example, httpd is run in the foreground. When you press CTRL-Z, the process is suspended, and when you type bg, it is assigned the background process number 1. You can then execute other commands, such as ls, while httpd runs in the background. When you then type fg, the process is brought once again into the foreground.
The columns in the default ps list are the process identifier (PID), the terminal from which the command was executed (TTY), the CPU time consumed by the process (TIME), and the actual command that was executed (CMD), including any command- line options passed to the program.
Again, the default display of PID, TTY, CPU time, and command is generated. The processes listed relate to the scheduler, init, the system logging facility, the NIS cache, and several other standard applications and services.
It is good practice for you to become familiar with the main processes on your system and the relative CPU times they usually consume. This can be useful information when troubleshooting or when evaluating security.
If you're an administrator, you probably want to keep an eye on all processes running on a system, particularly if the system is in production use. This is because buggy programs can consume large amounts of CPU time, preventing operational applications from carrying out their duties efficiently. Monitoring the process list almost constantly is necessary, especially if performance begins to suffer on a system. Although you could keep typing ps –eaf every 5 minutes or so, a much more efficient method is to use the top program to monitor the processes in your system interactively, and to use its "vital statistics," such as CPU activity states, real and virtual memory status, and the load average. In addition, top displays the details of the leading processes that consume the greatest amount of CPU time during each sampling period. An alternative to top is prstat, which has the advantage of being bundled with the operating system.
The display of top can be customized to include any number of these leading processes at any one time, but displaying the top 10 or 20 processes is usually sufficient to keep an eye on rogue processes.
The latest version of top can always be downloaded from ftp://ftp.groupsys.com/pub/top.
top reads the /proc file system to generate its process statistics. This usually means that top runs as a setUID process, unless you remove the read and execute permissions for nonroot users and run it only as root. Paradoxically, doing this may be just as dangerous, because any errors in top may impact the system at large if executed by the root user. Again, setUID processes are dangerous, and you should evaluate whether the tradeoff between accessibility and security is worthwhile in this case.
One of the main problems with top running on Solaris is that top is very sensitive to changes in architecture and/or operating system versions. This is particularly the case if the GNU gcc 2.x compiler is used to build top, as it has its own set of include files. These must exactly match the version of the current operating system; otherwise, top will not work properly: the CPU state percentages may be wrong, indicating that processes are consuming all CPU time, when the system is actually idle. The solution is to rebuild gcc so that it generates header files that are appropriate for your current operating system version.
This summary tells us that the system has 72 processes, with only 1 running actively and 71 sleeping. The system was 87.6 percent idle in the previous sampling epoch, and there was little swapping or iowait activity, ensuring fast performance. The load average for the previous 1, 5, and 15 minutes was 0.17, 0.08, and 0.06 respectively—this is not a machine that is taxed by its workload. The last PID to be issued to an application, 16630, is also displayed.
This top listing shows a lot of information about each process running on the system, including the PID, the user who owns the process, the nice value (priority), the size of the application, the amount resident in memory, its current state (active or sleeping), the CPU time consumed, and the command name. For example, the Apache web server runs as the httpd process (PID=4910), by the user nobody, and is 1916KB in size.
This summary tells you that the system now has 73 processes, with only 1 running actively, 1 on the CPU, and 71 sleeping. The new process is the find command, which is actively running. The system is now only 2.2 percent idle, a large increase on the previous sampling epoch. There is still no swapping activity, but iowait activity has risen to 85.6 percent, slowing system performance. The load average for the previous 1, 5, and 15 minutes was 0.10, 0.07, and 0.06, respectively—on the average, this machine is still not taxed by its workload and wouldn't be unless the load averages grew to greater than 1. The last PID to be issued to an application, 16631, is also displayed, and in this case it again refers to the find command.
find now uses 1.1 percent of CPU power, which is the highest of any active process (that is, in the "run" state) on the system. It uses 788K of RAM, less than most other processes; however, most other processes are in the "sleep" state, and do not occupy much resident memory.
If you've identified a process that appears to be having problems, and you suspect it's an application bug, it's not just a matter of going back to the source to debug the program or making an educated guess about what's going wrong. In fact, one of the great features of Solaris is the ability to trace system calls for every process running on the system. This means that if a program is hanging—for example, because it can't find its initialization file—the failed system call revealed using truss would display this information. truss prints out each system call, line by line, as it is executed by the system. The syntax is rather like a C program, making it easy for C programmers to interpret the output. The arguments are displayed by retrieving information from the appropriate headers, and any file information is also displayed.
Firstly, cat is called using execve(), with two arguments (that is, the application name, cat, and the file to be displayed, /etc/resolv.conf). The arguments to execve() include the name of the application (/usr/bin/cat), a pointer to the argument list (0xEFFFF740), and a pointer to the environment (0xEFFFF74C). Next, library files such as /usr/lib/libc.so.1 are read. Memory operations (such as mmap()) are performed continuously. The resolv.conf file is opened as read-only, after which the contents are literally printed to standard output. Then the file is closed.
truss can be used to trace the system calls for any process running on your system.
Kill the daemon affected, using the kill command.
Compress the log file using the gzip or compress command.
Change the log filename to include a time stamp so that it can be distinguished from other log files by using the time command.
Move it to an archive directory, using the mv command.
Create a new log file by using the touch command.
Restart the daemon by calling the appropriate /etc/init.d script.
Instead of the administrator having to execute these commands interactively at midnight, they can be scheduled to run daily using the cron scheduling command. Alternatively, if a job needs to be run only once at a particular time, like bringing a new web site online at 7:00 A.M. one particular morning, the at scheduler can be used. The next section looks at the advantages and disadvantages of each scheduling method.
You can schedule a single system event for execution at a specified time by using the at command. The jobs are specified by files in the /var/spool/cron/atjobs, while configuration is managed by the file /etc/cron.d/at.deny. The job can be a single command, or it can refer to a script that contains a set of commands.
This looks good. After 8:40 A.M. the next morning, the command should have executed at the appropriate time, and some output should have been generated and sent to you as an e-mail message.
Oops! You forgot to submit the job as root: normal users don't have permission to start sendmail in the background daemon mode. You would need to submit this job as root to be successful.
An at job executes only once at a particular time. However, cron is much more flexible because you can schedule system events to execute repetitively at regular intervals by using the crontab command.
Each user on the system can have a crontab file, which allows them to schedule multiple events at multiple times on multiple dates. The jobs are specified by files in the /var/spool/cron/cronjobs, while configuration information is managed by the files /etc/ cron.d/cron.allow and /etc/cron.d/cron.deny.
This is the standard crontab command generated by Solaris for root, and it performs tasks like checking whether the cron log file is approaching the system limit at 3:10 A.M. on Sundays and Thursdays, creating a new system log at 3:10 A.M. only on Sundays, and reconciling time differences at 2:01 A.M every day of the year.
If you want to add or delete an entry from your crontab file, you can use the crontab -e command. This will start up your default editor (vi on the command line, textedit in CDE, or as defined by the EDITOR environment variable), and you can make changes interactively.
After saving your job, you need to run crontab by itself to make the changes.


F2Movies is Free Movies Streaming website that allows you to watch your fav Movies and Series for free.
2/Is it legal to watch movies/series on F2Movies ?
3/I don't see the movie/show I wanna watch, what should I do ?
4/Do you have subtitle ?
Sure, most movies/shows comes with English and Spanish Subtitle, and can be enabled by clicking on the CC icon on the bottom right corner of the player.
5/The movies/series can not be streammed or there is an error message during streaming, what should I do ?
Please use the report/contact us Form to submit the error to us, we will fix it asap.
6/Why there are so many servers on each movie/show ?
We provide you with about 4 servers choices on each movie/show so you can choose the server option that give you the best streaming experience.
7/How to contact F2Movies ?


text:
Ex-Cal star, partner blow it (twice) in Brisbane final
Raquel Kops-Jones and Abigail Spears apparently didn't learn their lesson.
The unseeded California pair not only blew a 5-2 lead in the first set of the doubles final in the Brisbane (Australia) International, they did it again in the second set.
The lapses proved fatal as Kops-Jones, a former Cal All-American from Fresno, and Spears, from San Diego, lost to fourth-seeded Nuria Llagostera Vives and Arantxa Parra Santonja of Spain 7-6 (2), 7-6 (2) today in the $655,000 tournament.
Kops-Jones, 29, had sought her fifth career WTA doubles crown and third with Spears, 30. They won Estoril in 2009 and Quebec City last September.
Llagostera Vives has 15 WTA doubles titles and Parra Santonja five.
ATP World Tour -- Top-seeded Andy Murray, the 2006 and 2007 SAP Open champion in San Jose, routed third-seeded Alexandr Dolgopolov 6-1, 6-3 to win the men's singles title in Brisbane.
Murray, a 24-year-old Scotsman, captured his 22nd career singles crown on the ATP Tour and first in front of his new coach, former world No. 1 Ivan Lendl.
Top-seeded Max Mirnyi of Belarus and Daniel Nestor of Canada took the doubles title with a 6-1, 6-2 victory over second-seeded Jurgen Melzer of Austria and Philipp Petzschner of Germany.
Mirnyi once worked with Sacramento State men's coach Slava Konikov, and Nestor was named World TeamTennis' Male Rookie of the Year in 2003 as a member of the Sacramento Capitals. Melzer and Petzschner won last year's U.S. Open.
In Chennai, India, fourth-seeded Milos Raonic of Canada will meet top-seeded Janko Tipsarevic of Serbia in the singles final.
Raonic, the reigning SAP Open champion and 2011 ATP Newcomer of the Year, beat second-seeded Nicolas Almagro of Spain 6-4, 6-4, and Tipsarevic ousted Japanese qualifier Go Soeda, the 2009 Tiburon Challenger champion, 6-1, 6-4.
Second-seeded Scott Lipsky and Rajeev Ram, last year's SAP Open doubles champions, lost to third-seeded Leander Paes of India and Tipsarevic in the doubles semifinals 6-2, 6-7 (1), 10-7 tiebreak.


text:
'There is a need to identify dubious digital lenders and cast them out'
Recent popularity of online lending platforms/ mobile lending apps ('digital lending') has raised certain serious concerns that have wider systemic implications. Raman Aggarwal of FIDC believes we need to identify these lenders and cast them out because there is a lot of genuine and excellent digital lending happening in the country. "What RBI is doing is absolutely right because a lot of such cases are being witnessed; you don't know where these people are getting funds from or who back these people."
Shreya Sinha
Earlier this month, the Reserve Bank of India (RBI) had announced the setting up of a working group (WG) on digital lending — online platforms and mobile apps — in an attempt to tackle dubious lending apps that have been luring underserved customers.
This came in the backdrop of harassment due to high-handed recovery methods used by the lending apps and the resultant suicide cases linked to harsh loan collection tactics.
Last year, the regulator had sent out a clear message after receiving complaints from individuals and small players: "These reports refer to excessive rates of interest and additional hidden charges being demanded from borrowers; adoption of unacceptable and high-handed recovery methods; and misuse of agreements to access data on the mobile phones of the borrowers."
What led to the rise in harassment?
The COVID-19 pandemic led to job losses and pay cuts. With this, the need for credit among people increased. Eyeing the opportunity, the number of instant loan apps also went up. Recent popularity of online lending platforms/ mobile lending apps ('digital lending') has raised certain serious concerns that have wider systemic implications. Against this backdrop, RBI's WG will study all aspects of digital lending activities in the regulated financial sector as well as by unregulated players so that an appropriate regulatory approach can be put in place.
According to Cashless Consumer, citizen-led initiative to raise awareness around digital transactions, the year 2020 saw a large uptake in the registration of instant loan apps, most of which were found to be storing user information, such as facial recognition data and personal data, on Chinese servers.
Srikanth L of Cashless Consumer told PTI, "There is an urgent need for a regulatory arm of the government that look at the digital ecosystem. In the absence of the data protection laws, users are left vulnerable."
He further stated there is a clear lack of supervision when it comes to lending apps. He elucidated, "In one model it was observed, individuals came and set up a company with the help of a few Indians. It set up as a micro-financing company with loan amounts as low as Rs 2,000 and the transactions were done through digital payment gateways such as Google PayGoogle Pay, Paytm and others."
Fight against dubious lending apps
Raman Aggarwal, co-chairman, Finance Industry Development Council (FIDC), said, "The problem lies with digital lenders who have not partnered with anyone, are not registered anywhere neither they are answerable to anyone."
There are three kinds of digital lenders — the registered NBFC using digital platform, and he other two have either partnered with a bank or an NBFC. All of these are regulated by and answerable to the RBI because of the outsourcing guidelines being in place for banks and NBFCs.
"These lending apps need to state in the profile that whether they are a company and if yes are they properly registered. What RBI is doing is absolutely right because a lot of such cases are being witnessed; you don't know where these people are getting funds from or who back these people. There could be money-laundering happening along with many other malpractices," Aggarwal showed concerns.
Meanwhile, the RBI has also taken various measures to contain the fraudulent practices. It urged people to never share KYC documents with unidentified persons unverified/unauthorised apps. And if such an incident happened, one must report about it to the law enforcement agencies or RBI's Sachet portal. The central bank also mandated digital lending platforms to disclose the name of their partnered banks or NBFCs upfront to the customers.
"We need to identify these lenders and cast them out because there is a lot of genuine and excellent digital lending happening in the country. I know many traditional NBFCs that have fully shifted to digital and banks who are fully utilising their digital platforms like SBI YONO," concluded Aggarwal.
Instant Loan Apps
RBI Working Group
fraud digital lenders
sbi yono
online ledning
Finance Industry Development Council
Multiple fintechs impacted with RBI's order against SBM India
Top 5 asks of FinTech Industry from Union Budget 2023


text:
Q: Pivot a datatable in .NET Code I have a stored procedure in SQL that returns the following schema:
ID  Category        AgeBucket   Cnt     Amount
28  Mack - Class 8  1To60         1       88000
28  Mack - Class 8  1To89         1       88000
28  Mack - Class 8  Over180      24     1067260.01
28  Mack - Class 8  Over359      24     1067260.01
28  Mack - Class 8  Over360      24     1067260.01
29  Volvo - Class 8 Over180      19      869100
29  Volvo - Class 8 Over359      19      869100
29  Volvo - Class 8 Over360      19      869100
30  Other - Class 8 Over180      13     232500.01
30  Other - Class 8 Over359      13     232500.01
30  Other - Class 8 Over360      13     232500.01

I want to pivot it in Vb.net (for some reasons) and the output datatable should look like this:
ID  Category SaleCategory   [1To60]  [1To89] [61To120] [90To179] [121To180]
28     Mackclass8    N      88000   88000       0         0        0
29     Volvoclass8   N          0       0       0         0        869100
30     OtherClass8   N          0       0       0         0        232500.01

etc...
So, I have to pivot only the AgeBucket rows into different columns. Any suggestions?

redpajama_set_name: RedPajamaStackExchange


text:
International Royals
The Bachelorette Australia
Australia's Got Talent
The Bachelor Australia
The Super Switch
I'm A Celebrity…Get Me Out of Here!
Celebrity Families
Sweepon
DWTS' Craig Revel Horwood reveals his predictions ahead of tonight's finale
The judge is backing Courtney Act for the win – but says anybody could take the Dancing With The Stars crown
Apr 22, 2019 12:05pm
By Zara Zubeidi
Dancing With The Stars 'villain' Craig Revel Horwood has revealed his favourite to take home the mirrorball trophy in tonight's finale.
While the judge says it's impossible to predict the public vote, his confidence lies in drag queen Courtney Act.
"Out of the three, she's the most qualified dancer," Craig, 54, tells TV WEEK. "But it boils down to the public vote. There's going to be blood on the dance floor, as they say!"
"She's the most qualified dancer," Craig says of Courtney Act (Image: Network 10).
It's certainly been a season full of surprises.
The Living Room star and audience favourite, Miguel Maestre, was voted off first in the competition, while Olympia Valance's exit shocked viewers just a few weeks later. Then children's entertainer Jimmy Rees was forced to leave the competition due to the ill health of his newborn son.
Craig thinks Jimmy "had what it takes to win". "He's a family favourite and kids love him," he says.
As for what's next, Craig reveals there's been talks for another season of the hit 10 show.
"I'll definitely come back as I love it here, it's absolutely fantastic," he says.
Craig says he'll definitely come back to DWTS (Image: Network 10).
Away from DWTS, Craig is looking forward to filming for another season of Strictly Come Dancing back in the UK later this year.
But he's just as clueless as anyone as to who will replace recently departed Darcey Bussell on the judging panel.
"It was a huge shock for me, if I'm honest," he says. "I love her and we've got on so well over the last seven years. But people like to move on and she wants to do other things. I encourage that, and change is good."
Nicole Scherzinger is at the top of Craig's wish-list.
"She'd be fabulous," he reveals. "And Anton du Beke definitely wants to do it. I'd love to see Nicole, or Carlos [Acosta]. But nobody has actually expressed anything to me. And I'm generally the last to find out!"
Does Craig get to have any say on who he'd like to judge alongside him?!
"No, of course not!" laughs the star. "But it doesn't matter if I don't get on with them. The difference of opinion is rather good, generally. For me it's of no concern, I just hope they choose the right person and they know what they're talking about."
After DWTS, Craig will be heading back to Strictly Come Dancing (Image: Network 10).
As for the reported romance between last year's winner Stacey Dooley and Kevin Clifton, Craig says "good luck" to them.
"I was surprised by that! Obviously they left it until later on. I hope they live happily ever after," he says.
"It will be another Strictly success story. I never call it the 'Strictly curse'. I call if the Strictly blessing. People need to fall in love."
Craig – who has also watched the rumoured romance between Jett Kenny and his professional dancer partner Lily Cornish evolve on DWTS – says he can understand why relationships can form on his shows.
"You're dancing up close and personal and spending all of your time with that one person," he says.
"Of course people fall in love. But my point is, if your relationship in 'real life' is suffering anyway, it's going to happen anyway whether it happens on Strictly, DWTS or in real life.
"There's got to be something wrong with the relationship for something to go wrong in the first place.
"If you have a strong loving relationship in the first place, that stuff just doesn't happen."
Jett Kenny and his dancer partner Lily Cornish were the subject of romance rumours (Image: Network 10).
Dancing With The Stars finale airs Monday, 7:30pm, on Network 10.
Dancing With The StarsDancing With The Stars' Courtney Act says the show has given her a new confidence
Dancing With The StarsEXCLUSIVE: Jett Kenny opens up on his DWTS elimination and sets the record straight on THOSE dating rumours
Dancing with the Stars,
undefined: Zara Zubeidi
I'm A Celebrity…Get Me Out of Here!EXCLUSIVE FIRST LOOK: Charlotte Crosby and Ryan Gallagher share a steamy kiss on I'm A Celeb as romance heats up
British Royal FamilyHarry & Meghan to lose HRH status and repay Frogmore Cottage renovation costs as the Queen releases rare statement
I'm A Celebrity…Get Me Out of Here!I'm a Celebrity... gossip guru edition! Yep, Perez Hilton is officially heading into the jungle
Money5 diet "rules" you should apply to your finances too
Fashion TrendsBefore her Duchess days, Kate Middleton was the ultimate 2000s style icon
Fashion NewsMeghan Markle's iconic royal wardrobe is about to be completely overhauled - and it's going to be better than ever
Dancing With The StarsEXCLUSIVE: Dean Wells hits back after The Bachelorette's Lee Elliott sparks feud in war of words
Celebrity Families"I am really, really proud of my dad": Meet Richard Wilkins' five children
Celebrity FamiliesRichard Wilkins opens up about raising his son with Down syndrome
Fashion NewsMeghan Markle's chic cable jumper from surprise Vancouver outing was actually from her original Suits wardrobe
BodyAdele has lost an enormous 45kg- but her brutal diet has been labelled as controversial
British Royal FamilyDuchess Catherine finally reveals whether she and Prince William will have another baby
TVMeet the entire cast of Netflix's Sex Education Season 2
Fashion TrendsQueen of casual: All the super-chic outfits you forgot Princess Diana wore back in the day
Celebrity FamiliesGwyneth Paltrow and Chris Martin's daughter Apple is all grown up- and she's landed her first job
British Royal FamilyPrince Harry's ex-girlfriend breaks her silence amidst royal crisis
Dancing With The StarsAngie Kent is making her fourth reality TV appearance on Dancing With The Stars - and she's getting slammed for it
British Royal FamilyHarry & Meghan drop a big update on one of their key projects as they enter a new chapter outside of the royal family
Celeb NewsTuria Pitt shares her gratitude for the support of her bushfire campaign Spend With Them
NewsMum-to-be Cyrell Paule reveals that she and Eden Dally got back together over the New Year
Prizes To Love
Women's Weekly Food
Gourmet Traveller
Women of the Future
Books To Love


International Planning Allianc, Nonclassifiable Establishments, listed under "Nonclassifiable Establishments" category, is located at 1 Cragwood Rd South Plainfield NJ, 07080 and can be reached by 9087910200 phone number. International Planning Allianc has currently 0 reviews.
Browse all Nonclassifiable Establishments in South Plainfield NJ. Discover census data for South Plainfield, NJ.