// ==================== |-------| ====================
// ==================== | DuAEF | ====================
// ==================== |-------| ====================

// ==================== |----------| ====================
// ==================== | DuAEFLib | ====================
// ==================== |----------| ====================

/* License
	DuAEF - Duduf After Effects Framework

	Copyright (c) 2008 - 2020 Nicolas Dufresne, Rainbox Productions

	https://rainboxlab.org

	__DuAEF makes use of:__

		• x2js
		Copyright (c) 2011-2013 Abdulla Abdurakhmanov
		Original sources are available at https://code.google.com/p/x2js/
		Licensed under the Apache License, Version 2.0

		• json2
		See http://www.JSON.org/js.html
		Public Domain

		• seedRandom
		Copyright (c) David Bau
		Licensed under the MIT license

	This file is part of DuAEF.

		DuAEF is free software: you can redistribute it and/or modify
		it under the terms of the GNU General Public License as published by
		the Free Software Foundation, either version 3 of the License, or
		(at your option) any later version.

		DuAEF is distributed in the hope that it will be useful,
		but WITHOUT ANY WARRANTY; without even the implied warranty of
		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
		GNU General Public License for more details.

		You should have received a copy of the GNU General Public License
		along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
 * The Duduf After Effects ExtendScript Framework.<br />
 * by {@link https://rainboxlab.org Rainbox Lab}.
 * @example
 *   //encapsulate the script in a function to avoid global variables
 *   (function (thisObj) {
 *
 *       //================
 *       #include DuAEF.jsxinc
 *       DuAEF.init("Your Script Name", "1.0.2");
 *
 *       DuAEF.forumURL = 'https://forum.rainboxlab.org';
 *       DuAEF.chatURL = 'http://chat.rainboxlab.org';
 *       DuAEF.bugReportURL = 'https://github.com/Rainbox-dev/DuAEF/issues/new?template=bug_report.md';
 *       DuAEF.featureRequestURL = 'https://github.com/Rainbox-dev/DuAEF/issues/new?template=feature_request.md';
 *       DuAEF.aboutURL = 'https://rainboxlab.org/tools/duik/';
 *       DuAEF.scriptAbout = 'The Duduf After Effects Framework\nDeveloped by Nicolas Dufresne and Contributors.\n\nLicensed under the GNU General Public License v3.';
 *       DuAEF.newsServer = 'rainboxprod.net'
 *       DuAEF.newsArgs = 'wp/?call_custom_simple_rss=1&csrp_show_meta=0&csrp_cat=20';
 *
 *       // ================ FUNCTIONS =============
 *       //MAIN
 *
 *
 *       //UI EVENTS
 *
 *
 *       // _______ UI SETUP _______
 *       var ui = DuAEF.DuScriptUI.createUI(thisObj);
 *
 *       // ============ UI CONTENT =================
 *       var contents = ui.contents;
 *       DuAEF.DuScriptUI.addStaticText(contents, "Welcome to " + DuAEF.scriptName);
 *
 *
 *       //Show UI
 *       DuAEF.DuScriptUI.showUI(ui);
 *       DuAEF.enterRunTime();
 *   })(this);
 * @namespace
 * @author Nicolas Dufresne and contributors
 * @copyright 2017 - 2020 Nicolas Dufresne, Rainbox Laboratory
 * @version 0.5.0
 * @license GPL-3.0 <br />
 * DuAEF is free software: you can redistribute it and/or modify<br />
 * it under the terms of the GNU General Public License as published by<br />
 * the Free Software Foundation, either version 3 of the License, or<br />
 * (at your option) any later version.<br />
 *<br />
 * DuAEF is distributed in the hope that it will be useful,<br />
 * but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br />
 * GNU General Public License for more details.<br />
 *<br />
 * You should have received a copy of the GNU General Public License<br />
 * along with DuAEF. If not, see {@link http://www.gnu.org/licenses/}.
 */
var DuAEF = {};
/**
 * The Current DuAEF Version
 * @readonly
 * @memberof DuAEF
 * @type {string}
 */
DuAEF.version = new DuVersion('0.5.0');
/**
 * Set to true and enable debug mode if you're a developper
 * @memberof DuAEF
 * @type {boolean}
 */
DuAEF.debug = false;
/**
 * The name of the script using this instance of DuAEF. Must be set by {@link  DuAEF.init}.
 * @memberof DuAEF
 * @type {string}
 * @readonly
 */
DuAEF.scriptName = "DuAEF";
/**
 * The version of the script using this instance of DuAEF. Must be set by {@link  DuAEF.init}.
 * @memberof DuAEF
 * @type {DuVersion}
 * @readonly
 */
DuAEF.scriptVersion = new DuVersion('0.0.0');
/**
 * True if the script is run for the first time (new or the version has changed since last run)
 * @memberof DuAEF
 * @type {boolean}
 * @readonly
 */
DuAEF.scriptFirstRun = true;
/**
 * An icon for this script
 */
DuAEF.scriptIcon = '';
/**
 * A mouseover icon for this script
 */
DuAEF.scriptIconOver = '';
/**
 * The url for the forum about the script
 */
DuAEF.forumURL = '';
/**
 * The url for a chat server about the script
 */
DuAEF.chatURL = '';
/**
 * The url for reporting bugs
 */
DuAEF.bugReportURL = '';
/**
 * The url for requesting features
 */
DuAEF.featureRequestURL = '';
/**
 * The url about the script
 */
DuAEF.aboutURL = '';
/**
 * The url to the documentation of the script
 */
DuAEF.docURL = '';
/**
 * The text about the script
 */
DuAEF.scriptAbout = '';
/**
 * The RSS server providing some news (only the domain name)
 * @default 'rainboxprod.net'
 */
DuAEF.newsServer = 'rainboxprod.net';
/**
 * The  subfolder and arguments needed to get the news
 */
DuAEF.newsArgs = 'wp/feed';
/**
 * The port of the RSS server
 * @default 80
 */
DuAEF.newsPort = 80;
/**
 * The user agent to use when getting news
 */
DuAEF.newsUserAgentVersion = 'DuAEF/' + DuAEF.version.fullVersion;
/**
 * The name of the company/organisation/individual developping this tool
 */
DuAEF.companyName = 'Rainbox Laboratory';
/**
 * The URL to the company's website
 */
DuAEF.companyURL = 'https://rainboxlab.org';
/**
 * An icon for this company
 */
DuAEF.companyIcon = '';
/**
 * A mouseover icon for this company
 */
DuAEF.companyIconOver = '';

/**
 * The current DuAEF File
 * @readonly
 * @memberof DuAEF
 * @type {File}
 */
DuAEF.file = new File( $.fileName );

/**
 * Enum for states.
 * @readonly
 * @enum {int}
 */
DuAEF.States = {
    NOT_SET: -1,
    INIT: 0,
    RUNTIME: 1
};

/**
 * The current state of the script
 * @type {DuAEF.States}
 */
DuAEF.state = DuAEF.States.NOT_SET;

( function()
{
    var mac = $.os.toLowerCase().indexOf( "mac" ) >= 0;
    /**
     * The current OS, true if we're on Mac OS
     * @memberof DuAEF
     * @readonly
     * @type {boolean}
     */
    DuAEF.mac = mac;
    /**
     * The current OS, true if we're on Windows
     * @memberof DuAEF
     * @readonly
     * @type {boolean}
     */
    DuAEF.win = !mac;
} )();

/**
 * This method has to be called once at the very beginning of the script, just after the inclusion of DuAEF <code>#include DuAEF.jsxinc</code>
 * @param {string} [scriptName="DuAEF"] - The name of your script, as it has to be displayed in the UI and the filesystem
 * @param {string} [scriptVersion="0.0.0"] - The version of your script, in the form "XX.XX.XX-Comment", for example "1.0.12-Beta". The "-Comment" part is optional.
 */
DuAEF.init = function( scriptName, scriptVersion )
{
    DuAEF.state = DuAEF.States.INIT;

    scriptName = def( scriptName, "DuAEF" );
    scriptVersion = def( scriptVersion, "0.0.0" );
    DuAEF.scriptName = scriptName;
    DuAEF.scriptVersion = new DuVersion(scriptVersion);

    if ( app.settings.haveSetting( DuAEF.scriptName, "version" ) )
    {
        var prevVersion = app.settings.getSetting( DuAEF.scriptName, "version" );
        if ( prevVersion == scriptVersion ) DuAEF.scriptFirstRun = false;
    }
}

/**
 * This method has to be called once at the end of the script, when everything is ready and the main UI visible (after any prompt or setup during startup).
 */
DuAEF.enterRunTime = function()
{
    app.settings.saveSetting( DuAEF.scriptName, "version", DuAEF.scriptVersion.fullVersion );
    DuAEF.state = DuAEF.States.RUNTIME;

    if (DuAEF.DuAE) DuAEF.DuAE.postInit();
    if (DuAEF.Duik) DuAEF.Duik.postInit();
}
// ==================== |------| ====================
// ==================== | JSON | ====================
// ==================== |------| ====================

/**
 * JSON parser.
 * @name JSON
 * @see {@link http://www.JSON.org/js.html|Json2}
 * @license Public-Domain
 */

DuAEF.JSON = {};

 (function () {
     "use strict";

     var rx_one = /^[\],:{}\s]*$/;
     var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
     var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
     var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
     var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
     var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;

     function f(n) {
         return (n < 10)
             ? "0" + n
             : n;
     }

     function this_value() {
         return this.valueOf();
     }

     if (typeof Date.prototype.toJSON !== "function") {

         Date.prototype.toJSON = function () {

             return isFinite(this.valueOf())
                 ? (
                     this.getUTCFullYear()
                     + "-"
                     + f(this.getUTCMonth() + 1)
                     + "-"
                     + f(this.getUTCDate())
                     + "T"
                     + f(this.getUTCHours())
                     + ":"
                     + f(this.getUTCMinutes())
                     + ":"
                     + f(this.getUTCSeconds())
                     + "Z"
                 )
                 : null;
         };

         Boolean.prototype.toJSON = this_value;
         Number.prototype.toJSON = this_value;
         String.prototype.toJSON = this_value;
     }

     var gap;
     var indent;
     var meta;
     var rep;


     function quote(string) {


         rx_escapable.lastIndex = 0;
         return rx_escapable.test(string)
             ? "\"" + string.replace(rx_escapable, function (a) {
                 var c = meta[a];
                 return typeof c === "string"
                     ? c
                     : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
             }) + "\""
             : "\"" + string + "\"";
     }


     function str(key, holder) {


         var i;          // The loop counter.
         var k;          // The member key.
         var v;          // The member value.
         var length;
         var mind = gap;
         var partial;
         var value = holder[key];


         if (
             value
             && typeof value === "object"
             && typeof value.toJSON === "function"
         ) {
             value = value.toJSON(key);
         }


         if (typeof rep === "function") {
             value = rep.call(holder, key, value);
         }


         switch (typeof value) {
         case "string":
             return quote(value);

         case "number":


             return (isFinite(value))
                 ? String(value)
                 : "null";

         case "boolean":
         case "null":


             return String(value);


         case "object":


             if (!value) {
                 return "null";
             }


             gap += indent;
             partial = [];


             if (Object.prototype.toString.apply(value) === "[object Array]") {


                 length = value.length;
                 for (i = 0; i < length; i += 1) {
                     partial[i] = str(i, value) || "null";
                 }


                 v = partial.length === 0
                     ? "[]"
                     : gap
                         ? (
                             "[\n"
                             + gap
                             + partial.join(",\n" + gap)
                             + "\n"
                             + mind
                             + "]"
                         )
                         : "[" + partial.join(",") + "]";
                 gap = mind;
                 return v;
             }


             if (rep && typeof rep === "object") {
                 length = rep.length;
                 for (i = 0; i < length; i += 1) {
                     if (typeof rep[i] === "string") {
                         k = rep[i];
                         v = str(k, value);
                         if (v) {
                             partial.push(quote(k) + (
                                 (gap)
                                     ? ": "
                                     : ":"
                             ) + v);
                         }
                     }
                 }
             } else {


                 for (k in value) {
                     if (Object.prototype.hasOwnProperty.call(value, k)) {
                         v = str(k, value);
                         if (v) {
                             partial.push(quote(k) + (
                                 (gap)
                                     ? ": "
                                     : ":"
                             ) + v);
                         }
                     }
                 }
             }


             v = partial.length === 0
                 ? "{}"
                 : gap
                     ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}"
                     : "{" + partial.join(",") + "}";
             gap = mind;
             return v;
         }
     }


     if (typeof DuAEF.JSON.stringify !== "function") {
         meta = {    // table of character substitutions
             "\b": "\\b",
             "\t": "\\t",
             "\n": "\\n",
             "\f": "\\f",
             "\r": "\\r",
             "\"": "\\\"",
             "\\": "\\\\"
         };
         DuAEF.JSON.stringify = function (value, replacer, space) {


             var i;
             gap = "";
             indent = "";


             if (typeof space === "number") {
                 for (i = 0; i < space; i += 1) {
                     indent += " ";
                 }


             } else if (typeof space === "string") {
                 indent = space;
             }


             rep = replacer;
             if (replacer && typeof replacer !== "function" && (
                 typeof replacer !== "object"
                 || typeof replacer.length !== "number"
             )) {
                 throw new Error("JSON.stringify");
             }


             return str("", {"": value});
         };
     }



     if (typeof DuAEF.JSON.parse !== "function") {
         DuAEF.JSON.parse = function (text, reviver) {


             var j;

             function walk(holder, key) {


                 var k;
                 var v;
                 var value = holder[key];
                 if (value && typeof value === "object") {
                     for (k in value) {
                         if (Object.prototype.hasOwnProperty.call(value, k)) {
                             v = walk(value, k);
                             if (v !== undefined) {
                                 value[k] = v;
                             } else {
                                 delete value[k];
                             }
                         }
                     }
                 }
                 return reviver.call(holder, key, value);
             }



             text = String(text);
             rx_dangerous.lastIndex = 0;
             if (rx_dangerous.test(text)) {
                 text = text.replace(rx_dangerous, function (a) {
                     return (
                         "\\u"
                         + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
                     );
                 });
             }



             if (
                 rx_one.test(
                     text
                         .replace(rx_two, "@")
                         .replace(rx_three, "]")
                         .replace(rx_four, "")
                 )
             ) {


                 j = eval("(" + text + ")");


                 return (typeof reviver === "function")
                     ? walk({"": j}, "")
                     : j;
             }


             throw new SyntaxError("JSON.parse");
         };
     }
 }());
// ==================== |--------| ====================
// ==================== | Matrix | ====================
// ==================== |--------| ====================

/*!
  2D Transformation Matrix v2.7.5 LT
  (c) Epistemex.com 2014-2018
  License: MIT
*/

/**
  * 2D transformation matrix object initialized with identity matrix.
  *
  * @prop {number} a - scale x
  * @prop {number} b - shear y
  * @prop {number} c - shear x
  * @prop {number} d - scale y
  * @prop {number} e - translate x
  * @prop {number} f - translate y
  * @constructor
  * @overview 2D Transformation Matrix.
  * @author Epistemex
  * @version 2.7.5
  * @license MIT license (header required)
  * @copyright Epistemex.com 2014-2018
*/
function Matrix() {

	var me = this, _el;
	me._t = me.transform;

	me.a = me.d = 1;
	me.b = me.c = me.e = me.f = 0;
}

 /**
  * Create and transform a new matrix based on given matrix values, or
  * provide SVGMatrix or a (2D) DOMMatrix, WebKitCSSMatrix or another
  * instance of a generic matrix.
  *
  * @example
  *
  * var m = Matrix.from(1, 0.2, 0, 2, 120, 97);
  * var m = Matrix.from(domMatrix, ctx);
  * var m = Matrix.from(svgMatrix);
  * var m = Matrix.from(matrix);
  *
  * @param {*} a - number representing a (scale x) in [a-f], or a Matrix object containing properties a-f.
  * @param {*} [b] - b property (shear y) if a is not a matrix object, or optional canvas 2D context.
  * If vector is input this will be pre-translate for x.
  * @param {number} [c] - c property (shear x)
  * @param {number} [d] - d property (scale y)
  * @param {number} [e] - e property (translate x)
  * @param {number} [f] - f property (translate y)
  * @param {CanvasRenderingContext2D} [context] - optional canvas context to synchronize
  * @returns {Matrix} - new Matrix instance
  * @static
  */
Matrix.from = function(a, b, c, d, e, f, context) {

	var m = new Matrix(context), scale, dist, q;

	if (typeof a === "number")
	 m.setTransform(a, b, c, d, e, f);

	else {
	 if (typeof a.is2D === "boolean" && !a.is2D) throw "Cannot use 3D DOMMatrix.";
	 if (b) m.context = b;
	 m.multiply(a)
	}

	return m
 };

Matrix.prototype = {

	/**
	* Short-hand to reset current matrix to an identity matrix.
	* @returns {Matrix}
	*/
	reset: function() {
	 return this.setTransform(1, 0, 0, 1, 0, 0)
	},

	/**
	* Rotates current matrix by angle (accumulative).
	* @param {number} angle - angle in degrees
	* @returns {Matrix}
	*/
	rotate: function(angle) {
	 angle = DuAEF.DuJS.Math.toRadians(angle);
	 var
		cos = Math.cos(angle),
		sin = Math.sin(angle);

	 return this._t(cos, sin, -sin, cos, 0, 0)
	},

	/**
	* Converts a vector given as `x` and `y` to angle, and
	* rotates (accumulative). x can instead contain an object with
	* properties x and y and if so, y parameter will be ignored.
	* @param {number|*} x
	* @param {number} [y]
	* @returns {Matrix}
	*/
	rotateFromVector: function(x, y) {
	 return this.rotate(typeof x === "number" ? Math.atan2(y, x) : Math.atan2(x.y, x.x))
	},

	/**
	* Scales current matrix accumulative.
	* @param {number[]} s - scale factor [x, y]. 1 does nothing, any third value (Z) is ignored.
	* @returns {Matrix}
	*/
	scale: function(s) {
	 return this._t(s[0], 0, 0, s[1], 0, 0);
	},

	/**
	* Apply shear to the current matrix accumulative.
	* @param {number} sx - amount of shear for x
	* @param {number} sy - amount of shear for y
	* @returns {Matrix}
	*/
	shear: function(sx, sy) {
	 return this._t(1, sy, sx, 1, 0, 0)
	},

	/**
	* Apply skew to the current matrix accumulative. Angles in radians.
	* Also see [`skewDeg()`]{@link Matrix#skewDeg}.
	* @param {number} ax - angle of skew for x
	* @param {number} ay - angle of skew for y
	* @returns {Matrix}
	*/
	skew: function(ax, ay) {
	 return this.shear(Math.tan(ax), Math.tan(ay))
	},

	/**
	* Set current matrix to new absolute matrix.
	* @param {number} a - scale x
	* @param {number} b - shear y
	* @param {number} c - shear x
	* @param {number} d - scale y
	* @param {number} e - translate x
	* @param {number} f - translate y
	* @returns {Matrix}
	*/
	setTransform: function(a, b, c, d, e, f) {
	 var me = this;
	 me.a = a;
	 me.b = b;
	 me.c = c;
	 me.d = d;
	 me.e = e;
	 me.f = f;
	 return me._x()
	},

	/**
	* Translate current matrix accumulative.
	* @param {number[]} t - translation [x, y]. Any third value (Z) is ignored.
	* @returns {Matrix}
	*/
	translate: function(t) {
	 return this._t(1, 0, 0, 1, t[0], t[1]);
	},

	/**
	* Multiplies current matrix with new matrix values. Also see [`multiply()`]{@link Matrix#multiply}.
	*
	* @param {number} a2 - scale x
	* @param {number} b2 - skew y
	* @param {number} c2 - skew x
	* @param {number} d2 - scale y
	* @param {number} e2 - translate x
	* @param {number} f2 - translate y
	* @returns {Matrix}
	*/
	transform: function(a2, b2, c2, d2, e2, f2) {

	 var
		me = this,
		a1 = me.a,
		b1 = me.b,
		c1 = me.c,
		d1 = me.d,
		e1 = me.e,
		f1 = me.f;

	 /* matrix column order is:
	  *	a c e
	  *	b d f
	  *	0 0 1
	  */
	 me.a = a1 * a2 + c1 * b2;
	 me.b = b1 * a2 + d1 * b2;
	 me.c = a1 * c2 + c1 * d2;
	 me.d = b1 * c2 + d1 * d2;
	 me.e = a1 * e2 + c1 * f2 + e1;
	 me.f = b1 * e2 + d1 * f2 + f1;

	 return me._x()
	},

	/**
	* Multiplies current matrix with source matrix.
	* @param {Matrix|Matrix|DOMMatrix|SVGMatrix} m - source matrix to multiply with.
	* @returns {Matrix}
	*/
	multiply: function(m) {
	 return this._t(m.a, m.b, m.c, m.d, m.e, m.f)
	},

	/**
	* Get an inverse matrix of current matrix. The method returns a new
	* matrix with values you need to use to get to an identity matrix.
	* Context from parent matrix is not applied to the returned matrix.
	*
	* @param {boolean} [cloneContext=false] - clone current context to resulting matrix
	* @throws Exception is input matrix is not invertible
	* @returns {Matrix} - new Matrix instance
	*/
	inverse: function(cloneContext) {

	 var
		me = this,
		m  = new Matrix(cloneContext ? me.context : null),
		dt = me.determinant();

	 if (dt === 0) throw "Matrix not invertible.";

	 m.a = me.d / dt;
	 m.b = -me.b / dt;
	 m.c = -me.c / dt;
	 m.d = me.a / dt;
	 m.e = (me.c * me.f - me.d * me.e) / dt;
	 m.f = -(me.a * me.f - me.b * me.e) / dt;

	 return m
	},

	/**
	* Decompose the current matrix into simple transforms using QR.
	*
	* @returns {*} - an object containing current decomposed values (translate, rotation, scale, skew)
	* @see {@link https://en.wikipedia.org/wiki/QR_decomposition|More on QR decomposition}
	*/
	decompose: function() {

	 var
		me		= this,
		a		 = me.a,
		b		 = me.b,
		c		 = me.c,
		d		 = me.d,
		acos	  = Math.acos,
		atan	  = Math.atan,
		sqrt	  = Math.sqrt,
		pi		= Math.PI,

		translate = {x: me.e, y: me.f},
		rotation  = 0,
		scale	 = {x: 1, y: 1},
		skew	  = {x: 0, y: 0},

		determ	= a * d - b * c,	// determinant(), skip DRY here...
		r, s;

	 if (a || b) {
		r = sqrt(a * a + b * b);
		rotation = b > 0 ? acos(a / r) : -acos(a / r);
		scale = {x: r, y: determ / r};
		skew.x = atan((a * c + b * d) / (r * r));
	 }
	 else if (c || d) {
		s = sqrt(c * c + d * d);
		rotation = pi * 0.5 - (d > 0 ? acos(-c / s) : -acos(c / s));
		scale = {x: determ / s, y: s};
		skew.y = atan((a * c + b * d) / (s * s));
	 }
	 else { // a = b = c = d = 0
		scale = {x: 0, y: 0};
	 }

	 return {
		translate: translate,
		rotation : rotation,
		scale	: scale,
		skew	 : skew
	 }
	},

	/**
	* Returns the determinant of the current matrix.
	* @returns {number}
	*/
	determinant: function() {
	 return this.a * this.d - this.b * this.c
	},

	/**
	* Apply current matrix to `x` and `y` of a point.
	* Returns a point object.
	*
	* @param {number[]} pt - the point to transform ([x, y]).<br />
	* If an optionnal Z value is provided, it will be kept without transformation.
	* @returns {number[]} A new transformed point [x, y]. If pt had a third value, it is returned too, as it was without transformation.
	*/
	applyToPoint: function(pt) {
	 var me = this;
	 var x = pt[0] * me.a + pt[1] * me.c + me.e;
	 var y = pt[0] * me.b + pt[1] * me.d + me.f;
	 var result = [x,y];
	 if (pt.length == 3) result.push(pt[2]);
	 return result;
	},

	/**
	* Returns true if matrix is an identity matrix (no transforms applied).
	* @returns {boolean}
	*/
	isIdentity: function() {
	 var me = this;
	 return me.a === 1 && !me.b && !me.c && me.d === 1 && !me.e && !me.f
	},

	/**
	* Returns true if matrix is invertible
	* @returns {boolean}
	*/
	isInvertible: function() {
	 return !this._q(this.determinant(), 0)
	},

	/**
	* The method is intended for situations where scale is accumulated
	* via multiplications, to detect situations where scale becomes
	* "trapped" with a value of zero. And in which case scale must be
	* set explicitly to a non-zero value.
	*
	* @returns {boolean}
	*/
	isValid: function() {
	 return !(this.a * this.d)
	},

	/**
	* Compares current matrix with another matrix. Returns true if equal
	* (within epsilon tolerance).
	* @param {Matrix|Matrix|DOMMatrix|SVGMatrix} m - matrix to compare this matrix with
	* @returns {boolean}
	*/
	isEqual: function(m) {

	 var
		me = this,
		q = me._q;

	 return  q(me.a, m.a) &&
			 q(me.b, m.b) &&
			 q(me.c, m.c) &&
			 q(me.d, m.d) &&
			 q(me.e, m.e) &&
			 q(me.f, m.f)
	},

	/**
	* Clones current instance and returning a new matrix.
	* @param {boolean} [noContext=false] don't clone context reference if true
	* @returns {Matrix} - a new Matrix instance with identical transformations as this instance
	*/
	clone: function(noContext) {
	 return new Matrix(noContext ? null : this.context).multiply(this)
	},

	/**
	* Generates a string that can be used with CSS `transform`.
	* @example
	*	 element.style.transform = m.toCSS();
	* @returns {string}
	*/
	toCSS: function() {
	 return "matrix(" + this.toArray() + ")"
	},

	/**
	* Generates a `matrix3d()` string that can be used with CSS `transform`.
	* Although the matrix is for 2D use you may see performance benefits
	* on some devices using a 3D CSS transform instead of a 2D.
	* @example
	*	 element.style.transform = m.toCSS3D();
	* @returns {string}
	*/
	toCSS3D: function() {
	 var me = this;
	 return "matrix3d(" + me.a + "," + me.b + ",0,0," + me.c + "," + me.d + ",0,0,0,0,1,0," + me.e + "," + me.f + ",0,1)"
	},

	/**
	* Returns a JSON compatible string of current matrix.
	* @returns {string}
	*/
	toJSON: function() {
	 var me = this;
	 return '{"a":' + me.a + ',"b":' + me.b + ',"c":' + me.c + ',"d":' + me.d + ',"e":' + me.e + ',"f":' + me.f + '}'
	},

	/**
	* Compares floating point values with some tolerance (epsilon)
	* @param {number} f1 - float 1
	* @param {number} f2 - float 2
	* @returns {boolean}
	* @private
	*/
	_q: function(f1, f2) {
	 return Math.abs(f1 - f2) < 1e-14
	},

	/**
	* Apply current absolute matrix to context if defined, to sync it.
	* Apply current absolute matrix to element if defined, to sync it.
	* @returns {Matrix}
	* @private
	*/
	_x: function() {

	 var me = this;

	 if (me.context)
		me.context.setTransform(me.a, me.b, me.c, me.d, me.e, me.f);

	 return me
	}
};
// ==================== |------------| ====================
// ==================== | SeedRandom | ====================
// ==================== |------------| ====================

/**
 * Adds a new Math.seedRandom() method, used as a workaround for a bug in Math.random() with After Effects on Mac OS
 * @name seedRandom
 * @author David Bau
 * @copyright David Bau
 * @license MIT
 */

!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;q>a;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u["double"]=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);l>e;)g[e]=e++;for(e=0;l>e;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(g){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{if(j)return i(j.randomBytes(l));var b=new Uint8Array(l);return(k.crypto||k.msCrypto).getRandomValues(b),i(b)}catch(c){var d=k.navigator,e=d&&d.plugins;return[+new Date,k,e,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(t){}}else"function"==typeof define&&define.amd&&define(function(){return c})}([],Math);
// ==================== |-------------| ====================
// ==================== | colorPicker | ====================
// ==================== |-------------| ====================

;(function(){
/**
 * ColorPicker v2.0 for Adobe scripting.<br />
 * 2016-5-11 -> 2016-7-24<br />
 * This is a rebuilt color picker for Adobe scripting.<br />
 * Support all Adobe softwares such as PS,AI,PR and so on.<br />
 * See usage on {@link github.com/Smallpath/AdobeColorPicker}
 * @name colorPicker
 * @author smallpath
 * @copyright smallpath
 * @license MIT
 * @link https://github.com/Smallpath/AdobeColorPicker
 */
function colorPicker(inputColour,options){
    if(!(this instanceof colorPicker))
        return new colorPicker(inputColour,options)

    this.options = {
        name : "Adobe Color Picker ",
        version : "v2.0",
        shouldUpdateCursor: false,
        backupLocation : [],

        windowType:"dialog",  // "dialog","palette" and the reference of Panel
    }

    if(options && colorPicker.isType(options,"Object")){
        for(var i in options)
            this.options[i] = options[i];
    }
    
    this.inputColour = colorPicker.parseColor(inputColour);
    this.outputColour = this.inputColour.slice(0);
    this.initSetting();
    return this.showColorPicker();
}

colorPicker.parseColor = function(inputValue){
        if(!inputValue)
            return [1,1,1];
            
        if(colorPicker.isRgb(inputValue))                   //[0,0,0] - [1,1,1] 
            return colorPicker.parseRgb(inputValue);
        else if(colorPicker.isLargeRgb(inputValue))    //[0,0,0] - [255,255,255]
            return colorPicker.parseLargeRgb(inputValue);
        else if(colorPicker.isHex(inputValue) )            //FFFFFF
            return colorPicker.parseHex(inputValue);
        else if(colorPicker.isShortHex(inputValue))     //FFF
            return colorPicker.parseShortHex(inputValue);
        else if(colorPicker.isHsb(inputValue))             //[0,0,0,'hsb'] - [360,100,100,'hsb']
            return colorPicker.parseHsb(inputValue);
        else
            return [1,1,1];
}

colorPicker.prototype.showColorPicker =  function(){
        var win = this.initWindow();
        if(win.type == "dialog" ||win.type == "palette" ){
            if(this.haveSetting ("location")){
                win.location = this.getSetting ("location").split(",");
                if(win.location.length != 2)
                    win.center();
                else if(win.location[0]<0 || win.location[1]<0)
                    win.center();
            } 
            win.show();
            this.saveSetting ("location", win.location);
        }else if(win.type == "panel"){
            win.layout.layout(true);
        }
        if(!this.isSmallMode){
            this.outputColour.hex = colorPicker.RgbToHex(this.outputColour);
            this.outputColour.hsb = colorPicker.RgbToHsb(this.outputColour);
            this.outputColour.rgb = this.outputColour.slice(0);
            
            return this.outputColour;
        }else{
            return {
                window:win, 
                colorPicker:this
            };
        }
}

colorPicker.prototype.initWindow = function(){
            var _this = this;
            var type = this.options["windowType"];
            if(type=="palette"){
                    var win = new Window("palette", this.options["name"] + this.options["version"], undefined, {
                            maximizeButton: false,
                            minimizeButton: false,
                        });
                    this.size = this.options["size"] = 90;
            }else if(type instanceof Panel){
                    var win = type;
                    this.size = this.options["size"] = 90;
            }else{
                    var win = new Window("dialog", this.options["name"] + this.options["version"], undefined, {
                        maximizeButton: false,
                        minimizeButton: false,
                        closeButton:false
                    });
                    this.size = this.options["size"] = 130;
            }
        
            var isSmallMode = this.isSmallMode = this.size != 130;
            var targetImage = isSmallMode ? this.options["smallColorWheel"]:  this.img ;
            var targetSize = this.size*2;

            var colourGroup = win.add('group');
            	colourGroup.orientation = "stack";
                    
	    		win.image = colourGroup.add("image", undefined,targetImage);

	    		var colourCursorGroup = this.colourCursorGroup = colourGroup.add('customBoundedValue',[0,0,targetSize+2,targetSize+2]);
		    		colourCursorGroup.fillColour = [0,0,0,0];

                 var colourSelectCursor = this.colourSelectCursor = colourCursorGroup.colourSelectCursor = {};
                        colourSelectCursor.size = [12,12];
                        colourSelectCursor.strokeWidth = 1;
                        colourSelectCursor.strokeColour = [0,0,0];
                        
                        this.setCursorLocation (this.inputColour);
                        
                colourCursorGroup.onDraw = function () {
		                this.graphics.drawOSControl();
		                this.graphics.newPath();
		                this.graphics.ellipsePath(0,0,this.size[0],this.size[1]);
		                this.graphics.fillPath(colourCursorGroup.graphics.newBrush(colourCursorGroup.graphics.BrushType.SOLID_COLOR, colourCursorGroup.fillColour));
                        
		                this.graphics.newPath();
                        
		                this.graphics.ellipsePath(this.colourSelectCursor.location[0]+this.colourSelectCursor.strokeWidth/2+1,
                                                                        this.colourSelectCursor.location[1]+this.colourSelectCursor.strokeWidth/2+1,
                                                                        this.colourSelectCursor.size[0]-this.colourSelectCursor.strokeWidth,
                                                                        this.colourSelectCursor.size[1]-this.colourSelectCursor.strokeWidth);
		                this.graphics.strokePath(this.graphics.newPen(this.graphics.PenType.SOLID_COLOR, 
                                                                   this.colourSelectCursor.strokeColour, this.colourSelectCursor.strokeWidth));
		    		};  


            win.brightGroup = win.add("group");
            win.staticBright = win.brightGroup.add("statictext",undefined,"Bright:");
            win.editBright = win.brightGroup.add("edittext{text:'0',characters:3,justify:'center',active:1}");
            win.slider = win.brightGroup.add("slider",undefined,100,0,100); 
            if(!isSmallMode){
                win.slider.size = "width:160,height:20";
                var spacing = 10;
                var character = 4;
            }else{
                win.slider.size = "width:100,height:20";
                win.brightGroup.spacing = 2;
                win.spacing = 5;
                win.margins = 2;
                var spacing = 0;
                var character = 3;
            }


            var editor = win.add('group');
                editor.orientation = 'column';

                editor.gulu = editor.add('group');

                    editor.gulu.uni = editor.gulu.add('group');
                    editor.gulu.uni.spacing = spacing;

                        editor.gulu.uni.Ed = editor.gulu.uni.add('statictext', undefined, '#');
                        editor.gulu.uni.unicode = editor.gulu.uni.add('edittext', undefined, 'FF0000')
                        editor.gulu.uni.unicode.characters = 6;
                        editor.gulu.uni.unicode.justify = 'center';

                    editor.gulu.color = editor.gulu.add('customBoundedValue', undefined, 'Redraw original image');
                    editor.gulu.color.size = [80, 25];

                editor.colorHolder = editor.add('group');
                editor.colorHolder.orientation = 'row';

                    editor.colorHolder.colorCol1 = editor.colorHolder.add('group');
                    editor.colorHolder.colorCol1.orientation = 'column';

                        editor.colorHolder.colorCol1.hGroup = editor.colorHolder.colorCol1.add('group');
                        editor.colorHolder.colorCol1.hGroup.spacing = spacing;

                            editor.colorHolder.colorCol1.hGroup.hRad = editor.colorHolder.colorCol1.hGroup.add('statictext', undefined, 'H:');
                            editor.colorHolder.colorCol1.hGroup.hValue = editor.colorHolder.colorCol1.hGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol1.hGroup.hValue.characters = character;
                            editor.colorHolder.colorCol1.hGroup.hValue.justify = 'center';
                            editor.colorHolder.colorCol1.hGroup.hValue._index = 0;

                        editor.colorHolder.colorCol1.rGroup = editor.colorHolder.colorCol1.add('group');
                        editor.colorHolder.colorCol1.rGroup.spacing = spacing;

                            editor.colorHolder.colorCol1.rGroup.rRad = editor.colorHolder.colorCol1.rGroup.add('statictext', undefined, 'R:');
                            editor.colorHolder.colorCol1.rGroup.rValue = editor.colorHolder.colorCol1.rGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol1.rGroup.rValue.characters = character;
                            editor.colorHolder.colorCol1.rGroup.rValue.justify = 'center';
                            editor.colorHolder.colorCol1.rGroup.rValue._index = 0;

                    editor.colorHolder.colorCol2 = editor.colorHolder.add('group');
                    editor.colorHolder.colorCol2.orientation = 'column';

                        editor.colorHolder.colorCol2.sGroup = editor.colorHolder.colorCol2.add('group');
                        editor.colorHolder.colorCol2.sGroup.spacing = spacing;

                            editor.colorHolder.colorCol2.sGroup.sRad = editor.colorHolder.colorCol2.sGroup.add('statictext', undefined, 'S:');
                            editor.colorHolder.colorCol2.sGroup.sValue = editor.colorHolder.colorCol2.sGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol2.sGroup.sValue.characters = character;
                            editor.colorHolder.colorCol2.sGroup.sValue.justify = 'center';
                            editor.colorHolder.colorCol2.sGroup.sValue._index = 1;

                        editor.colorHolder.colorCol2.gGroup = editor.colorHolder.colorCol2.add('group');
                        editor.colorHolder.colorCol2.gGroup.spacing = spacing;

                            editor.colorHolder.colorCol2.gGroup.gRad = editor.colorHolder.colorCol2.gGroup.add('statictext', undefined, 'G:');
                            editor.colorHolder.colorCol2.gGroup.gValue = editor.colorHolder.colorCol2.gGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol2.gGroup.gValue.characters = character;
                            editor.colorHolder.colorCol2.gGroup.gValue.justify = 'center';
                            editor.colorHolder.colorCol2.gGroup.gValue._index = 1;

                    editor.colorHolder.colorCol3 = editor.colorHolder.add('group');
                    editor.colorHolder.colorCol3.orientation = 'column';

                        editor.colorHolder.colorCol3.lGroup = editor.colorHolder.colorCol3.add('group');
                        editor.colorHolder.colorCol3.lGroup.spacing = spacing;

                            editor.colorHolder.colorCol3.lGroup.lRad = editor.colorHolder.colorCol3.lGroup.add('statictext', undefined, 'B:');
                            editor.colorHolder.colorCol3.lGroup.lValue = editor.colorHolder.colorCol3.lGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol3.lGroup.lValue.characters = character;
                            editor.colorHolder.colorCol3.lGroup.lValue.justify = 'center';
                            editor.colorHolder.colorCol3.lGroup.lValue._index = 2;

                        editor.colorHolder.colorCol3.bGroup = editor.colorHolder.colorCol3.add('group');
                        editor.colorHolder.colorCol3.bGroup.spacing = spacing;

                            editor.colorHolder.colorCol3.bGroup.bRad = editor.colorHolder.colorCol3.bGroup.add('statictext', undefined, 'B:');
                            editor.colorHolder.colorCol3.bGroup.bValue = editor.colorHolder.colorCol3.bGroup.add('edittext', undefined, '0');
                            editor.colorHolder.colorCol3.bGroup.bValue.characters = character;
                            editor.colorHolder.colorCol3.bGroup.bValue.justify = 'center';
                            editor.colorHolder.colorCol3.bGroup.bValue._index = 2;


                win.editor = editor;
                if(win.type == "dialog"){

                    
                    editor.oc = win.editor.oc = win.add("Group{ok:Button{text:'Ok'},can:Button{text:'Cancel'}}");
                    
                        editor.oc.ok.onClick = function(){
                            win.close();
                        }

                        editor.oc.can.onClick = function(){
                            colorPicker.copyArr(_this.outputColour,_this.inputColour);
                            win.close();
                        }
                    
                    }

            editor.gulu.color.onDraw = function(draw){
            	var targetColour = _this.outputColour;

                var gfxs=this.graphics;
                gfxs.newPath();
                gfxs.rectPath(0, 0, this.size[0], this.size[1]);
                gfxs.fillPath(gfxs.newBrush (gfxs.BrushType.SOLID_COLOR, targetColour));
            };




        
            this.updateCursor(win);

            this.setDefaultValue(win)

            this.bindingKeydown(win);

            this.bindingHandler(win);

            return win;

}

colorPicker.prototype.setDefaultValue = function(win){
        var pi = win.editor;
        var startColour = this.outputColour;


        pi.gulu.uni.unicode.text= colorPicker.RgbToHex (startColour);
        pi.gulu.uni.unicode.active = true;



        pi.colorHolder.colorCol1.rGroup.rValue.text=Math.round(startColour[0]*255);
        pi.colorHolder.colorCol2.gGroup.gValue.text=Math.round(startColour[1]*255);
        pi.colorHolder.colorCol3.bGroup.bValue.text=Math.round(startColour[2]*255);

        var hsbHere= colorPicker.RgbToHsb([
                                        startColour[0]*255,
                                        startColour[1]*255,
                                        startColour[2]*255
                                    ]);
                                    

        pi.colorHolder.colorCol1.hGroup.hValue.text=hsbHere[0];
        pi.colorHolder.colorCol2.sGroup.sValue.text=hsbHere[1];
        pi.colorHolder.colorCol3.lGroup.lValue.text=hsbHere[2];

        win.slider.value=hsbHere[2];
        win.editBright.text=hsbHere[2];
        
        this.colourCursorGroup.fillColour[3] = 1 - (hsbHere[2])/100;
        this.colourCursorGroup.notify("onDraw");
}

colorPicker.prototype.bindingHandler =  function(win){
           var _this = this;

          win.editor.colorHolder.colorCol1.hGroup.hValue.onChange =
          win.editor.colorHolder.colorCol2.sGroup.sValue.onChange =
          win.editor.colorHolder.colorCol3.lGroup.lValue.onChange = function(){
                    _this.options.backupLocation.length = 0;
                    this.text=Math.round(this.text);

                    if(this._index ==0 ){
                        if( this.text<0 || this.text>360 || isNaN(this.text)==true ){
                                this.text= colorPicker.RgbToHsb([
                                                                                    _this.outputColour[0]*255,
                                                                                    _this.outputColour[1]*255,
                                                                                    _this.outputColour[2]*255,
                                                                                ])[this._index];
                       }
                    }else{
                        if( this.text<0 || this.text>100 || isNaN(this.text)==true ){
                                this.text= colorPicker.RgbToHsb([
                                                                                    _this.outputColour[0]*255,
                                                                                    _this.outputColour[1]*255,
                                                                                    _this.outputColour[2]*255,
                                                                                ])[this._index];
                       }
                    }
                    var hsbArr = [
                                          Math.round(win.editor.colorHolder.colorCol1.hGroup.hValue.text),
                                          Math.round(win.editor.colorHolder.colorCol2.sGroup.sValue.text),
                                          Math.round(win.editor.colorHolder.colorCol3.lGroup.lValue.text)
                                        ];

                    var rgbArr = colorPicker.HsbToRgb (hsbArr);
                    var hexStr = colorPicker.RgbToHex ([rgbArr[0]/255,rgbArr[1]/255,rgbArr[2]/255]);
                    win.editor.gulu.uni.unicode.text = hexStr;
                    win.editor.gulu.uni.unicode.notify("onChange");
                     
          }


           win.editor.colorHolder.colorCol1.rGroup.rValue.onChange  =
           win.editor.colorHolder.colorCol2.gGroup.gValue.onChange =
           win.editor.colorHolder.colorCol3.bGroup.bValue.onChange = function (){
                    _this.options.backupLocation.length = 0;
                    this.text=Math.round(this.text);

                    if( this.text<0 || this.text>255 || isNaN(this.text)==true ){
                            this.text=Math.round(_this.outputColour[this._index]*255);
                   }

                    if(this._index ==0)
                        win.editor.gulu.uni.unicode.text= colorPicker.RgbToHex ([this.text/255,_this.outputColour[1],_this.outputColour[2]]);
                    else if(this._index ==1)
                        win.editor.gulu.uni.unicode.text= colorPicker.RgbToHex ([_this.outputColour[0],this.text/255,_this.outputColour[2]]);
                    else if(this._index ==2)
                        win.editor.gulu.uni.unicode.text= colorPicker.RgbToHex ([_this.outputColour[0],_this.outputColour[1],this.text/255]);
                     win.editor.gulu.uni.unicode.notify("onChange");
                     
               }

           win.editBright.onChange = win.editBright.onChanging = function () {
                    _this.options.backupLocation.length = 0;
           		if (this.text < 0)
           			this.text = 0;
           		if (this.text > 100)
           			this.text = 100;
           		if (isNaN(this.text)==true)
           			this.text = 100;

           		win.slider.value = parseInt(this.text);
                    if(isNaN(win.slider.value))
                        return;
           		win.slider.notify('onChange');
           };

           win.slider.onChange = win.slider.onChanging = function(){

                    var thisColor= colorPicker.HsbToRgb ([
                                                            Math.round(win.editor.colorHolder.colorCol1.hGroup.hValue.text),
                                                            Math.round(win.editor.colorHolder.colorCol2.sGroup.sValue.text),
                                                            Math.round(this.value)
                                                        ]);
                    if(this.value != 0){
                        if(_this.options.backupLocation.length != 0 && _this.options.shouldUpdateCursor == true){
                            _this.getColor({
                                    type:"mouseup",
                                    clientX: _this.options.backupLocation[0]+6,
                                    clientY: _this.options.backupLocation[1]+6,
                            });
                            _this.options.backupLocation.length = 0;
                            _this.colourCursorGroup.fillColour[3] = 1 - (this.value)/100;
                            _this.colourCursorGroup.notify("onDraw");
                            return;
                        }
                    }                
                                             
                    colorPicker.copyArr(_this.outputColour,[thisColor[0]/255,thisColor[1]/255,thisColor[2]/255]);

                    _this.setDefaultValue(win);
                    _this.notifyColor(win);
                	_this.updateCursor(win);
                    
                    _this.setCursorLocation (_this.outputColour);

                    if(this.value == 0){
                        _this.options.shouldUpdateCursor = true;
                    }else{
                        _this.options.shouldUpdateCursor = false;
                    }
                            
                            
                    if(_this.options.backupLocation.length == 0){
                        colorPicker.copyArr(_this.options.backupLocation,_this.colourSelectCursor.location);
                    }

                    _this.colourCursorGroup.fillColour[3] = 1 - (this.value)/100;
                    _this.colourCursorGroup.notify("onDraw");
                     
               }

            win.editor.gulu.uni.unicode.onChange= function(){
                    var hexHere="0x"+this.text;
                    var eV=0;
                    if(colorPicker.isHex (this.text) == false && colorPicker.isShortHex(this.text) == false){
                        this.text = colorPicker.RgbToHex (_this.outputColour);
                        eV=1;
                    }
                    if(eV==0){
                            var rgbHere= (this.text.length == 6) ? colorPicker.parseHex (this.text): colorPicker.parseShortHex (this.text);
                            colorPicker.copyArr(_this.outputColour,rgbHere);
                            _this.setDefaultValue(win);
                            _this.setCursorLocation(rgbHere);
                            _this.notifyColor(win);
                        }
                }

}

colorPicker.prototype.updateCursor = function(win) {
    if (colorPicker.arraysEqual(this.colourSelectCursor.strokeColour,[1,1,1])) {
		if (win.slider.value > 63)
	    	this.colourSelectCursor.strokeColour = [0,0,0];
	} else if (colorPicker.arraysEqual(this.colourSelectCursor.strokeColour,[0,0,0])) {
		if (win.slider.value <= 63)
			this.colourSelectCursor.strokeColour = [1,1,1];
	}
};

colorPicker.prototype.notifyColor = function(win){
    win.editor.gulu.color.notify("onDraw");
}

colorPicker.prototype.setCursorLocation= function(inputColor){
     this.colourSelectCursor.location = (function(_this){
            var hsb = colorPicker.RgbToHsb(inputColor);  
            hsb = colorPicker.convertHsbToKulerHsb(hsb);
            var angle = Math.round(hsb[0]); 
            var length = Math.round(hsb[1]/100*_this.size);
                            
            var point = [length*Math.cos(angle*2*Math.PI/360),length*Math.sin(angle*2*Math.PI/360)];

            return [point[0]+_this.size,_this.size-point[1]]
      })(this)
    
      this.colourSelectCursor.location = [this.colourSelectCursor.location[0]-this.colourSelectCursor.size[0]/2,
                                                         this.colourSelectCursor.location[1]-this.colourSelectCursor.size[1]/2];    
};

colorPicker.prototype.bindingKeydown = function(win){
    var _this = this;


    var keyDownHandle1 = function(k){
        if (k.keyName == "Up") {
            if (k.shiftKey == false) {
                this.text = parseFloat(this.text) + 1;
            } else {
                this.text = parseFloat(this.text) + 10;
            }
        } else if (k.keyName == "Down") {
            if (k.shiftKey == false) {
                this.text = parseFloat(this.text) - 1;
            } else {
                this.text = parseFloat(this.text) - 10;
            }
        }
    }

    win.editor.colorHolder.colorCol1.rGroup.rValue.addEventListener('keydown', keyDownHandle1);
    win.editor.colorHolder.colorCol2.gGroup.gValue.addEventListener('keydown', keyDownHandle1);
    win.editor.colorHolder.colorCol3.bGroup.bValue.addEventListener('keydown', keyDownHandle1);
    win.editBright.addEventListener('keydown', keyDownHandle1);

    win.addEventListener('keydown', function (k) {
        if (k.keyName == "Escape") {
            win.close();
        }
    });

    var leftPressed = false;

    var getColor = this.getColor = function (k) {
        _this.options.backupLocation.length = 0;
        
        if(k.type == "mouseup"){
                leftPressed = false;
        }else if(k.type == "mousemove"){
                if(leftPressed == false)
                    return;
        }else if(k.type == "mousedown"){
                leftPressed = true;
        }
        var point = [k.clientX, k.clientY];
        if(!_this.isInCircle(point)) return;

        var thisColor = _this.getColorFromPoint(point);
        thisColor = colorPicker.RgbToHsb(thisColor);
        thisColor[2] = win.slider.value;
        thisColor = colorPicker.HsbToRgb(thisColor);

        colorPicker.copyArr(_this.outputColour ,[
                                            thisColor[0]/255,
                                            thisColor[1]/255,
                                            thisColor[2]/255
        ]);
        _this.setCursorLocation (_this.outputColour);
        _this.setDefaultValue(win);
        win.editor.gulu.color.notify("onDraw");
    }

    this.colourCursorGroup.addEventListener ('mouseup', getColor)
    this.colourCursorGroup.addEventListener ('mousemove',getColor)
    this.colourCursorGroup.addEventListener ('mousedown',getColor)
}

colorPicker.prototype.isInCircle = function(point){
    return Math.pow (point[0]-this.size, 2) + Math.pow(point[1]-this.size,2) <= Math.pow(this.size,2);
}

colorPicker.prototype.getColorFromPoint =  function(point){
    var transformedPoint = this.transformPoint(point);
    var hAndS =  this.getAngleAndLength(transformedPoint);
    return this.CoreGetColorFromPoint(hAndS[0],hAndS[1]);
}

colorPicker.prototype.getAngleAndLength = function(point){
        var angle,length;
        var x = point[0],y=point[1];
        length =Math.sqrt( x*x + y*y);
        angle = Math.atan2(y,x)/Math.PI*180
        if(angle<=0)
            angle += 360;
        return [angle,length/this.size];
    }

colorPicker.prototype.transformPoint = function(point){
        var x = point[0];
        var y = point[1];
        return [x-this.size,this.size-y];
    },


colorPicker.prototype.CoreGetColorFromPoint = function(h,s){
    var i;
    
    var f, p, q, t;
    var r=1,g=1,b=1;
    var v = 1;
    if( s == 0 ) {
        v = Math.floor(v*255);
        return [v,v,v];
        }
    var originHeight = h;
    var condition;
    var tempI
    
    if(originHeight<45 && originHeight>=0){
        i = 0;      
        f = originHeight/90; 
    }else if(originHeight<120 && originHeight>=45){ 
        i = 1 
        f = (originHeight-45)/(120-45); 
    }else if(originHeight<180 && originHeight>=120){ 
        i = 2 
        f = (originHeight-120)/(180-120); 
    }else if(originHeight<220 && originHeight>=180){ 
        i = 3 
        f = (originHeight-180)/(220-180); 
    }else if(originHeight<275 && originHeight>=220){ 
        i = 4  
        f = (originHeight-220)/(275-220); 
    }else if(originHeight<320 && originHeight>=275){ 
        i = 5  
        f = (originHeight-275)/(320-275);
    }else if(originHeight<360 && originHeight>=320){ 
        i = 6
        f = (originHeight-320)/(360-320)
    }

    p =  1 - s ;
    q =  1 - s * f ;
    t =  1 - s * ( 1 - f );
    
    switch( i ) {
        case 0:r = v;g = t;b = p;break;        
        case 1:r = v;g = 0.5+t/2;b = p;break;   
        case 2:r = q;g = v;b = p;break;     
        case 3:r = p;g = v;b = t;break;      
        case 4:r = p;g = q;b = v;break;        
        case 5:r = t;g = p;b = v;break;         
        case 6:r = v;g = p;b = q;break;         
        
    }
    return [r,g,b];
}

colorPicker.copyArr =  function(defaultArr,otherArr){
    while(defaultArr.length!=0){
        defaultArr.pop();
    }
    defaultArr.push(otherArr[0]);
    defaultArr.push(otherArr[1]);
    defaultArr.push(otherArr[2]);
    return defaultArr;
}

colorPicker.HexToRgb =  function(hex){
            var ccolorhex = hex.toString(16);
            ccolorb = parseInt(ccolorhex.substr(-2), 16);
            ccolorg = parseInt(ccolorhex.substr(-4).substr(0, 2), 16);
            ccolorr = parseInt(ccolorhex.substr(-6).substr(0, 2), 16);
            return [ccolorr / 255, ccolorg / 255, ccolorb / 255];
}

colorPicker.RgbToHex =  function(rgb){
                var a=(rgb[0]*255).toString(16);
                var b=(rgb[1]*255).toString(16);
                var c=(rgb[2]*255).toString(16);
                if(a.length!=2){
                    a="0"+a;
                    }
                if(b.length!=2){
                    b="0"+b;
                    }
                if(c.length!=2){
                    c="0"+c;
                    }
                return (a+b+c).toUpperCase();
}

colorPicker.HsbToRgb =  function(hsb){
        var rgb = [];
        hsb = [hsb[0], hsb[1] / 100, hsb[2] / 100];
        for (var offset = 240, i = 0; i < 3; i++, offset -= 120) {
            x = Math.abs((hsb[0] + offset) %360 - 240);
            if (x <= 60) {
                rgb[i] = 255;
            } else if (60 < x && x < 120) {
                rgb[i] = ((1 - (x - 60) / 60) * 255);
            } else {
                rgb[i] = 0;
            }
        }
        for (var i = 0; i < 3; i++) {
            rgb[i] += (255 - rgb[i]) * (1 - hsb[1]);
        }
        for (var i = 0; i < 3; i++) {
            rgb[i] *= hsb[2];
        }
        return [rgb[0], rgb[1], rgb[2]]
}

colorPicker.RgbToHsb = function(rgb){
        rgb = colorPicker.parseColor (rgb);
        rgb = [rgb[0]*255,rgb[1]*255,rgb[2]*255]
        var hsb = [];
        var rearranged=rgb.slice(0);
        var maxIndex = 0;
        var minIndex = 0;
        var tmp;
        rearranged.sort(function(a, b) {
            return a - b;
        })
        for (var i = 0; i < 3; i++) {
            if (rearranged[0] == rgb[i]) minIndex = i;
            if (rearranged[2] == rgb[i]) maxIndex = i;
        }
        if(rearranged[2] !=0 ){
            hsb[2] = rearranged[2] / 255;
            hsb[1] = 1 - rearranged[0] / rearranged[2];
            if(hsb[1]!=0){
                hsb[0] = maxIndex * 120 + 60 * (rearranged[1] / hsb[1] / rearranged[2] + (1 - 1 / hsb[1])) * ((maxIndex - minIndex + 3) % 3 == 1 ? 1 : -1);
                hsb[0] = (hsb[0] + 360) % 360;
            }else{
                hsb[0] =0;
            }
        }else{
            hsb[2]=0;
            hsb[1]=0;
            hsb[0]=0;
        }
        return [Math.round(hsb[0]), Math.round(hsb[1] * 100), Math.round(hsb[2] * 100)];
}

colorPicker.convertHsbToKulerHsb =  function(hsb){
    var originHeight = hsb[0];
    var s = hsb[1], b = hsb[2];
    var i,f,h;
    if(originHeight<30 && originHeight>=0){
        
        h = (originHeight-0)/(30-0)*(45-0)+0;
        
    }else if(originHeight<60 && originHeight>=30){ 
        h = (originHeight-30)/(60-30)*(120-45)+45;
        
    }else if(originHeight<120 && originHeight>=60){ 
        h = (originHeight-60)/(120-60)*(180-120)+120;
        
    }else if(originHeight<180 && originHeight>=120){ 
        h = (originHeight-120)/(180-120)*(220-180)+180;
        
    }else if(originHeight<240 && originHeight>=180){ 
        h = (originHeight-180)/(240-180)*(275-220)+220;
        
    }else if(originHeight<300 && originHeight>=240){ 
        h = (originHeight-240)/(300-240)*(320-275)+275;
        
    }else if(originHeight<360 && originHeight>=300){ 
        h = (originHeight-300)/(360-300)*(360-320)+320;
        
    }else{
      return hsb;
    }

    return [h,s,b];

}



colorPicker.isType =  function(content,type){
    return Object.prototype.toString.call(content) == "[object "+type+"]"
}

colorPicker.isRgb =  function(rgbArr){
    if(!rgbArr) 
        return false;
    
    if(!colorPicker.isType(rgbArr,"Array")) 
        return false;
    
    if(rgbArr.length != 3)
        return false;
    
    for(var i =0,len = rgbArr.length;i<len;i++){
            if(rgbArr[i]>1 || rgbArr[i]<0)
                return false;
    }
        
    return true;
}

colorPicker.isLargeRgb =  function(rgbArr){
    if(!rgbArr) 
        return false;
    
    if(!colorPicker.isType(rgbArr,"Array")) 
        return false;
        
    if(rgbArr.length != 3)
        return false;
    
    for(var i =0,len = rgbArr.length;i<len;i++){
            if(rgbArr[i]>255 || rgbArr[i]<0)
                return false;
    }

    return true;
}


colorPicker.isHex = function(hexStr){
    if(!hexStr)
        return false;
        
    if(!colorPicker.isType(hexStr,"String")) 
        return false;
        
    if(hexStr.length != 6) 
        return false;
        
    
    var arr = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
    var isHex = true;
    hexStr = hexStr.toUpperCase();
    for(var i=0,len = hexStr.length;i<len;i++){
            if(this.arrayIndexOf(arr,hexStr[i]) == false){
                    isHex = false;
                    break;
                }
        }

    return isHex;
}


colorPicker.isShortHex =  function(hexStr){
    if(!hexStr)
        return false;
        
    if(!colorPicker.isType(hexStr,"String")) 
        return false;
        
    
    if(hexStr.length != 3) 
        return false;
        
    var arr = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
    var isShortHex = true;
    hexStr = hexStr.toUpperCase();
    for(var i=0,len = hexStr.length;i<len;i++){
        if(colorPicker.arrayIndexOf(arr,hexStr[i]) == false){
            isShortHex = false;
            break;
        }
    }
        
    return isShortHex;
}

colorPicker.isHsb =  function(hsbArr){
    if(!hsbArr)
        return false;
        
    if(!colorPicker.isType(hsbArr,"Array")) 
        return false;
        
    if(hsbArr.length!=4)   
        return false;   
        
    if(hsbArr[3] !="hsb") return false;
    if(hsbArr[0]>360 || hsbArr[0]<0) return false;
    if(hsbArr[1]>100 || hsbArr[1]<0) return false;
    if(hsbArr[2]>100 || hsbArr[2]<0) return false;

    
    return true;
}

colorPicker.parseRgb =  function(inputValue){
    return inputValue;
}

colorPicker.parseLargeRgb =  function(inputValue){
    var arr = [inputValue[0]/255,inputValue[1]/255,inputValue[2]/255];
    return arr;
}

colorPicker.parseHex =  function(inputValue){
    return colorPicker.HexToRgb("0x"+inputValue);
}

colorPicker.parseShortHex =  function(inputValue){
    inputValue = inputValue.toUpperCase();
    var hex = "0x"+inputValue[0].toString() + inputValue[0].toString() 
                            +inputValue[1].toString() +inputValue[1].toString()
                                +inputValue[2].toString() +inputValue[2].toString();
    return colorPicker.HexToRgb(hex);
}

colorPicker.parseHsb =  function(inputValue){
    var hsb = [inputValue[0],inputValue[1],inputValue[2]];
    return colorPicker.parseLargeRgb(colorPicker.HsbToRgb (hsb));
}

colorPicker.arrayIndexOf = function(arr,str){
    for(var i=0,len = arr.length;i<len;i++){
        if(arr[i] == str)
            return true;
    }
    return false;
}
    
colorPicker.arraysEqual = function(a, b) {
    if (a === b) return true;
    if (a == null || b == null) return false;
    if (a.length != b.length) return false;

    for (var i = 0; i < a.length; ++i) {
        if (a[i] !== b[i]) return false;
    }

    return true;
}

colorPicker.prototype.initSetting = function(){
    this.img ="\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01\x04\x00\x00\x01\x04\b\x06\x00\x00\x00\u00CE\bJ\n\x00\x00\x00\tpHYs\x00\x00\x00\x01\x00\x00\x00\x01\x018\"\u00F4@\x00\x00\x00$zTXtCreator\x00\x00\b\u0099sL\u00C9OJUpL+I-RpMKKM.)\x06\x00Az\x06\u00CEjz\x15\u00C5\x00\x00 \x00IDATx\u009C\u00EC\u00BD{\u00BCeWU&\u00FA\u008D\u00B9\u00F6>\u00E7T*\x02I\u0088\x04A\u00D4hLT\u00BC\b-\bb\x0B\x11[\u00EDn\x04\u00FBj\u00BC\u00F8k\x105\u00B7\u00EDn\x1Ft\u00B7^_\r\u00AD\x17\u00C5\u00A6\x01\u00DB\u009F\u00B7\u00B1\x1BE\u00BD`@\x1E\"\u00D7\u0080\u00A1\u0095\u0097B\b\x10\f\x1D\b\t\x18\b\x04\b\u00AF<I\u00AAR\u008Fs\u00CE\u00DEk\u008E\u00FB\u00C7\x18\u00DF\x18c\u00EDS\u0095\u00A4\u008A$\u0095\u0084\u009ApR{\u00EF\u00B5\u00D6\\s\u00CD5\u00C7\x18\u00DFxN\u00C1\u00F1v\u00AFn\u00AA\u00FBw\u00A3\u00DF\u00F8\u00B5\u0090\u008F}\r\u00B6\u00AE}\u00D8\u00E6\u0081[\x1E\u00D2\u00C6\x1B\x1F\u00DC\u00967\u009E\u00A6\u00BA\u00E7T\u00F4}\u00A7\u00E88\u009C\u008C>\u00DEO\u00C6[\x06\u00E8\u008D\u0090\u00C5-h\u008B\u00BD\u0090\u00BE\x1F2\u008E\u00806\x00\x02@\x01\b\u00BA\u009C\x00\u009D\u00ED\u0086\u00B6\x07`9<\x10\u0083\u00EC\x1E\u0081\u008D\u00BD\u00E3\u00AC\x7F\u00B1\u00C9\u00EE\u009B\u00BA|\u00C5\r\u00D2\u00BE\u00F2Zi\u00A7~a~\u00E2\u00FD>'\u00F7\u00FB\u00AAk0\u00FF\u00FAO\u008F\u00FA\u00D0O\u00CD\u0086]\u00FB\u008F\u00F1\u0094\x1Co_B\u0093c=\u0080\u00E3\u00ED\u008E\u00B5\u00DE?\u00F5 \x197\u00BFu\\^\u00FE\u00F0\u00BE\u00F5\u00C1o\u0092\u00C5\u00CDg\u00E9\u00F2\u008630\u00DEx\u009An\u00DE \u00C3\u00E2F\u00A8\u00DE\x02\u00C56\u00A0\u008A\u00D6gh\u00AA\x10\u0085\u00D19:\u00A0\x02h\x07\x7F\x12\x00\u00D2\u00FD\u008B\u008A\u00FD\u00A2\u0080\u00EA\b\u0085@\u00B4\x01\u00BDC\u00BA\x02*PQ(\x06@;D\u00ED\u00B2\u00A5\u00AE\x01r?\u00C8\u00FCd\f\u00B3Su\u00B9~\u00EA\u00B5m~\u00D2U2\u00BF\u00FF\u0095\u008B\u00FB\u009F\u00F9\x0F\u00EB\x0Fx\u00CC\x152?\u00E5r\u0091\u00AF\u00B9\u00EEX\u00CD\u00DD\u00F1v\u00C7\u00DBq\u0086p\x0Fl\u00AA\u00B7<P\u00F5\u00EF\x1F+\x07\u00AEy\u00F4x\u00F0#\u00DF\u00DE\u00FB\x17\x1E%\u00DB\u009F9M\x16\u009F\u00C4\u00B8\u00BC\x193l\x03\u00B2\u0084\u008Cpb\u00E7kT@\u00C4\u0088\u00BB7\u0088*T\u009DrU\u00ED\u00AC`\x00~\u009D\u00AA\u00FDu\x01\u00A4\u00F9\u00B5\u00A3\u00FD\x16\x03r\u00F4\u00D0\u00F3^\u00DD\u00FBU\x00\u00AD[\u00BF\x12\u00C7\x05\u00A36\u008Ch\u00C0\u00B0\x1B\u00BA\u00FB\u00EB\u00D0\u00D6\u00BE\u00E1\u00DA\u00E5\u00C6)\u0097\u00CEv\u009D\u00FE\u00FE\u00F9i\u00DFr\t6\u00BE\u00FDb\u0091\u00AF\u00BC\u00F1\u00AE\u009E\u00CB\u00E3\u00ED\u00C8\u00DAq\u0086p\x0Fh\u00AAW?\f\u00CB\x1B\u009F\u00B8\u00DC|\u00F3\x13d\u00F3\x0B\u00DF\u00D5\u00C7\u008F\u009E\u00A1\u008B\u00ABd\u00B6}=\x1A\u0096\x00:\u00D0;T\x05]\x14\u00A2\x02\u0081K\u00FF.\u00DE\u0087N\u00FA\u0094n\u008C\u00A1\u00BB4\x07\x0Fk\u00B3\u00EFPC\tD\x07\n'x\x04\x03a\u00BF\u0093\u00EB\x01h\u00CF\u00AF\u00810\u00BA3\rm\u00CE|$\x18\u008F\u00F5!q\u00ED8;\t\u00F8\u008A\u00B3\u00B4\u00AF\u009Fq\x15v=\u00F8\u00A2\u00F9\u0083\u00FF\u00F1;\u00E5\u00FEg\u00BDC\u00DA\u00E9\u00D7\u00DCi\u0093z\u00BC\x1DU;\u00CE\x10\u008EAS\u00DD{\u00A2\u00F6\x0F=i{\u00EB\u00B2\u00EF\u009Fm_\u00FA\u00BD\u00D8\u00FE\u00F8\x19}\u00FB\u0083\x10=\x00\u00C1\x12\u00AD\u00CF\u00A1:\u00A2\x05\u00B1\x1ACX\x11\u00D2.\u0099\x1D\x11\u00A8B\u00A5R- *\u00E8\u00DD~\x13%\x1Ahf-P\u00A3V\u00FB]\u0092\th^\x0F\x15\u00A8vg\"\u00C9\x15\u00B4\u00E7m\u00D0\u00ADoU\u00C4qh2\u00A4`4\u0093\u008B\x00\u008C\u00E2\u00C0\u00C4m\x16\u00BB\u00BF\t\u00FD\x01_\x7F\u0095\u00EC\u00FE\u00A6\u00B7\u00AD?\u00F8\u00F1o\u00D6]\u008Fz{\u009B\u009D\u00BC\u00EFN\u0099\u00F0\u00E3\u00ED\x0E\u00B7\u00E3\f\u00E1nj\u00DA?\u00FD\u00D0qq\u00D9Se\u00EB\u00A2\u00A7\u00E8\u00F8\u0091'\u008C[\u0097\u00AF\u008B~\x1Es\u00C2\u00F3\x15\t\u008F.P'(C\x02\u00C6\x10H\u00D7\x00\u00D0\u00D4\u00E8L\x0Eq\u00B9\u00DD\u00B4\x15\u00E9,\u00E8\u00DD\u0098\u00CC\u00E4\u00FC\u00EE\u008B@\x04\u00E8\u0085!t^\u00DF\u00ED\x18\x00\u00ED\u008A\u00D6\u00A7\u00F72\x1E\u00D4\u00FC\x11\x12\u008D\u0088#\u0097\u00E8\u00B32\x1Ax\x1F\u00CA\x05(\u0086:D\u00A0P\u008Cr\x1A\u00DA\u00C9\u008F\u00D8\u00D2\u00DD\u00DF\u00F8N|\u00E5\u00B7\u00BDq\u00FE\u00A0\u00EF~\u0083\u00B4o\u00F8\u00EC\u0091\u00CF\u00FA\u00F1v\u00A4\u00ED8C\u00B8\x0B\u009B\u00EA\u00E7\x1F\u00A6\u00E3\u00C5\u00E7\u00F4}\x17\u009E#\u00FD\u0083\u008F\u00D1\u00ED\u00F7\u008B\u00E8\x01\u0093\u00EC\nhs8n'\x17\u00E3\x1E\u0092\u0088*J \u00BD\u00FA\u00BFBf\u00A1I`\u00D3\x01\x14\u0086\u0082f\u00EACg\x07\u0085`A\x04\u0081r\x03\u00DA\"4\f\u0090\u00DAs\u00BC\x13\x06\u00B4\u008A0t\u00B5?8\u0083\tS\u00A6\u00DB6\u00AA:\"9|\x15H\x17ho\x18e\x06}\u00C0\u00B7h\x7F\u00C0#\u00FE~v\u00D2\u00E3^'\x0Fy\u00FC\u00EB\u0086\u00F97\x1DW-\u00EE\u00A2v\u009C!\u00DC\u00C9M\u00F5\u00B3'a\u00FC\u00F0\u008F\u00EA\u00E6\u00DB\u009F\u00DE\x17\u0097<\x1E[\u0097\u0089\u00C8^4\b:\x16\u00C1\fr\u00F5K\u00BD\x18\u00E8-\u00A9-\u0088L\u00F28\x7Fr\x04\u00DE\u0082Z\u0091\u00A8\x02T\x07\u00F8\u00D1\x11\u0082\u00A3\x05\u00A2\x06\u0081\u00A2Ol\x11\u00E2\u00E8\u0081\u00D7\u00B6D/ac\u00D0\u00B0E\x06_\u00F1c\u00D5\u00D6`*\x03\u009F\u00CB\u00FB\u00D7\x0E\u00A09\u00CFQc\x01\u009C\x0F\x01\u00B4O\u00E7B|.\u0094\fMf\x18\u00BF\u00E2\u00E1:\u009C\u00F4\u00A8w\u00E3k\u00BE\u00F7\u0095\u00C3\u00C9\u008F\u00FAs\x19\u00CE\u00B8\u00F9(_\u00D5\u00F1v\u0088v\u009C!\u00DC\tm\u00B9\u00D8\u00D7\x06\\\u00F6\u00A4\u00AE\x17\u009E\u00DB\u00B7/~j\u00DBz\u00D7\u0086\u00F4\u00BD\x10\x1D\u00FD\u008CJP(\x04\u00CC/~\u0096\x16\u00A3\\X\u00FC\x10\u00C4j\x12Z\x0F\u00CF\x10T\x12\u00E6\x17\u00B8@\u00C2\u00A2\u00B4\u00AF\u00E8\u00A2\u00A3\x10\u00B28C\x18\x15\u0082\x06\u00A0%3Pu\u0095@\u00CAE\u00C0\u00A8H5$\u00DC\u0096\u008A6J\x1D\u0082\u00DD{\u0082*\u00A8\na\u00C2\x10\u00BAx\x7F\u00BD2GI\u00A68\u008EP\x05\u00C6a7\u0096\x0F|\u00DC&N\u00F9\u008E7\u00AC\x7F\u00ED\u00D9\x7F\"\u00BB\x1F\u00FFv\x19v\u00AD\x18*\u008E\u00B7#m\u00C7\x19\u00C2\u0097\u00D0T\u00AF:\u00B5/\u00DE\u00FFS\u00BAx\u00C7O\u00CB\u00E2\x1D\u00A7k\u00FF\x14\u009A*\u0080\u00D1\u008CpA\x01+\f\x01HB\u00A8\f\u00A1\u00FC^\u00ED\u0083\u008C\x0F q\u00AA\u00EB\u00E5\u00EA\u00E7E\x0Fa\u00C9\u009F\u00EA\x0ER\u008D{\u00D0T/(\u00DE\u00DD0!$\u00BC\u009E\u00D0~\u00CA\x10\u00EC\u00B3t\u0089\x01\u00F6^\u00EF\u00EF\x06F\x1F\x1F\u008D\u008D\x02^o\u00F7\u0094 \u00F2|&\x1Bw\u00CE\x07c\x1Fv\u00B8H\u00F9\u00EC\u00BD\u00C5\u00B9\u00DBk\x0F\u0081<\u00F8\u00B1W\u00B7\x07=\u00F6\u00A5\u00B3\u00D3\x7F\u00F8\u00FF\x15\u00F9\u009A\x1Bn\u00E7\u00D5\x1Do\u0087i\u00C7\x19\u00C2Q\u00B4\u00BE\u00FC\u00C0#\u00D1/|\u0096.\u00DE\u00F64]\u00BC{\u00A3\u00F5\u00BD\x10\u008CyB\u00D1\u00A5\u00A7\x17\x02\u0080\x13\x1C!\u00F5\u00EA\x1B\u00A8\u00C4\x1A\u00FC\u00A4X\x12\x01wA\u00DA\u00EF\u00AA\u008A\u00A6\u00D4\u00CB{\u00DC~\u0095\u00A1H\x10\u00BA\u008D\u0083h$\"\x18h_\u00D06}\u0086\x18SJx\x19WPM\x19\u00BBT\u00A3\u00A3\x1B5\u009B\u00E6\u00B9\u0081VB\r\u00EAq\u00ADj2\u00AFP[\u00F8\u00FC\x00z\u00D7psNb*`\u00F6\u0086e\u00DB\u0080\u009E\u00F4\u00E8M<\u00F81\u00AFY\u00FB\u00FA\x7F\u00F1\u00DF\u00E4+\x1E\u00F7\x01\x1CoG\u00D4\u008E3\u0084;\u00D8T\u00AF\x17\u00E8U?0.\u00DE\u00F8K\u00B2x\u00D7\u00D9\u00B2|?\x04K\u00A4B\u008D)\u00D1R\x02\u00F6\x02\x0B\u00C8\x10&F8\u00CD\u00F3\u00E3^\u00E9\x19\u0098\u00A0\n\x12\u00D2\nC\x00\u00DC\u0095\u0088\x1E\u009E\u0087\x1D\u00CC\b\b\u00E9\u00CE\u00A0\"\u00C2|\t\u00C9\u00EF\u00E3\u0090\x12\u00B0\x14\u0092\u00DC\u00A5}Hz\u009D0\x1D%R\u00E0e\n\u00A0\u00B7\x15\u00C2V\u008F~\u009C\"\x04u\u00DD\u00C5\u00AE\u0097\x00TfG\u00F0>\u0091\u00F7\u0097\u008E\u00F0\u00AELl1*\u00E8\x1E\u0086\u00BD}\u00E27b8\u00ED\u00BB\u00FF\u00AE\u009D\u00FE/^4<\u00F0\u00B1\x7F#\u00ED~\u0087\u009A\u0091\u00E3m\u00A5\x1Dg\b\u00B7\u00D3Tu\u00D0\u00E5[\x7Fd\u00EC\x17\u00FC\u009A.\u00FE\u00FA\x11\u00D2?\u0085\x06E\u00EB\u0087\u0080\x00U\u00AA\x020\u0082.Q<\x13\u0098\u008E\t\u00EC\u008F\u00F3\u00E1\f\u00A1\u00C2w\u0091 \x10\u00B3\u00C0\x17\u0086\u00D0\u008D!Xs\u0086\u00B0\u00AA\u009E\u0094\u00E1I7\u00D7^\u00C4\x0F\u0088\x13\x1D\x10\u00FF\u00D2\u00E2OF\x116\fu\x1BF\u00C0w\u00F7Hja\b(\fI\x0BC\x0B&\u0092\f&\x18\u0082O\u0090I})\u00FCU\u008B'%\u00BD/\u00DA\x01\x14\u00B4\u0090\x0F\u00E8j\u0084\x02\x18\u00E7PUl\u009Ep\n\u00F0\u00E0\u00EF\u00B9l\u00FEuO~\u00FE\u00EC\u00C1\u00FF\u00E4/d8\u00A5@\u00B9\u00E3m\u00B5\x1Dg\b\u0087i\u00AA\u00D7\x0F\u00D0\x0F?M\x17\u00AF\x7FN_\u00BE\u00F1\u00AC\u00A1_\x0B\u00C8\u00B6/H\u0087\u00E0h\x00z\x12+\u00CA\u0084V=~\x07\u00E4OF\u00D0\x1D\u00FE\u008AN\u00AE\u009E\u00C2k0\u008F\u00C0m\x06\u00BD\x10g\u0091\u00DE\u00ADx!v\u00A8,D\x1C\x107\u00D8\u00F9u\x18w\u00BA\x12\x15\x19i\u00B8\u00D4\u00B8n\u00E2\u00FA\u00F4F\u00F5\u0081\u00AAC\u00C48L\u0090\u008D\u00DB\x1DbNJ|D\x18:]\u00B5\u00D0\x16@H\u00DCf\x10h\u00896\x14\u00F5\u00F9%##\u00E3\u0099\u00DC3U.\u00ED\u00C0b~\n\u00F0\u0090\u00B3\u00AF\x1C\u00BE\u00FE\u009F?o\u00F8\u00EA\x1F|\u008D\u00C8\u00C9\u00C7\x19\u00C3!\u00DAq\u0086\u00B0\u00D2TU\u00FA\u00F8\u008E\x1F\u00D6\u00F1\u0082\u00E7\x02\u00AF\u00FDf\x19o@\u00EB\u00DB)\u00C6}\u00D1\u0086qK\u00A6D\u00DC\u0082Z\x14\x13\u00A3Xa\b\n\x14(\\\u00AC\u00ED\u00AB\u00AF\u00A3\u00B8(\u00ABI\u0081\u00C4%+\f \rx\u00E5F;`u\u00D1\u00F3\u00CB\u00B8\u00C4\u00EFA\u00DBF\u00C0w\x12\u00F1\x04\u00D9PUQg\b9\u008E\n\u00E3\u0095\u00FF\u00E9S7\u00A4B\u0092\u00D0\u00E3\u00F9z\u00AA,Z\u0080E\u00D7\u00F0b\u00D49RG(D:\u0093\u00A0\u00AA\x1A}\u00C9\u0081i\x03\u00C6\u008E\u00ED\u00F9\x03\u00D0\x1F\u00F6O?2\u00FF\u00FA\x1F\u00FC\u008D~\u00EA\u00F7\u00BD~m\u00D7)\u00C7U\u0089\u00D2\u008E3\u0084\u00D2\u00C6\u00F1\u00D2\u00B3u|\u00D5\x0B\u00B4\u00BF\u00E1\u00D1\rW\u00FB\u00E2\x1E'\u00BA\u00B2-22\x04\u0087\u00CFe\u0091N\x18\x02m\x00\u00AB\fA\u009C!t\u00B1K\u008B\u00B4\u009B\u00BC\x12^W \u00B3\u00B2\u0083\u00C2\x10\u00E0\u00A7u]\u00F5: u\u00ED\u00C9\u0083\u008A\u008F\u00DD\u00CE\u00A9\u00C6;\t\u00D5\x00\u00888\u0084\u00A2\u00E2\u0098+\x12\u0080v'J\u0089\u0090\u00A2\u00C9\u00BD\u009COtOz\u0092\x12c@\x04!\u00D5\u00CB\u0081>\u0091\u00F0]\u00BD\u00D7C1\x04\u00D1D!=\x19\u00E4\x04\u00BA\u00F4\u00B6\u00C2\x10`>RiP\fX\u00CENA\u00FF\u00EA\u00EF\u00BF\x04\u00DFr\u00CE\u00AFl<\u00E8\u00C9\x7F\u0087\u00E3\r\u00C0q\u0086\x00\x00\u00E8\u00FA\u00E13\u00FB\u00F8W\u00BF\u0083\u00EDW=\u00B9\rW\x01\u00D8\u0086\u00D0\u00FAM\x1D\u00BEH\u00D2$\x14\u0093`\u00D5\x18\x16m\u0095\bU\u00A0\u00BDO\u0088\x15\u00B1\u00C8W~\u00B3;\u00D9OaX+\x04\x15\u0092\u00BE\x01\u00BA\u00F4\u00F3\u008C \u00D3\u00A2O\u0082\u00F3{\u00D7\x1B\x15\u00EB?\x01\u00800\nq\x15U\u00D0\u00C0X=\x10\u00B4a\u00DC\u00CE\u00B3P\u00B5\u0089\u009F\x14h+\u00AAC\x18]\u00FBT\u00AD\u00D22\u009F\u0093x\x05m\u00C6a\u00C2\u00FD\u0088dj<\u00DE\u0089X\u008C\u00D9H\u00A7\u00E7\x04\u00C1\u00C8\u00CC%\u00DA\u00B0\u00BD\u00FBk\u00A0_}\u00F6\x05\x1B\x0F\u00FF\u00F1\u00FFKN~\u00C2G\u00F1e\u00DE\u00BE\u00AC\x19\u0082\u00EA\u00A7\u00EE?\u008Eo\u00FB\r\u00ED\u00AF\u00FD\u00B9\u0086w\u00CE\x1B:\u0080\x11\x1A\u00BEr$\u00E1\u00C3\u008Cq\u0093\u00EC@\u0097\u00E0i\u00F4\u0092\u00C95\u00AB\fbjq/\u00FFR\bWi]\u00FB\u00AA\u00F7\u008C\u00B1\u008B\u00DF\u0097H\x05\u00A0:0\u0085\u00CE\u00DEw\u00B9\u0098\f\u00A5Q(ke\b+\u00CF0\u0089E :\u00C8\u0098\x04E\u00BA\nWU\u0098I\u00CE\u0084\x16\u0086\u0080\u00D2\x1F\x19\x02\u009F\u00BF\u00CC\x17m#S\u0082'\u00F4\u00D0\u00B8\x06\u00F5\u009C\u00BE\u00C2\x10 \u00AE\u00D6\u00D0k\u00D3\x11\x01Vj\u0091\u009D#\u0080\u00F1\u00E4oY\u00C8\u00D7\u00FD\u00E0\u00EF\u00AF}\u00EB\u008F?W\u00D6\u00CF\u00DC\u0083/\u00D3\u00F6e\u00C9\x10\u00C6qK\u009A\u00BE\u00ED\x19\x1D\x7F\u00FE\u00C2\u00AEox\u00D0L\u00F6B\u00A5\u00E7\"\u00EE2\u00CD1\x00\u00A0\u00AD\u00A1\u00FB\u00E2m!\x11\u009DI8\u0094\x15\x14\t*\u0098\x12\u00BF\x1B\x00W\u00E1;\u00D5\x07\x1DI\\\u00F6\u00BB\x14D\u0090\x12\u00D8\x16\u00B8\rK]\u00EFoa|c\u00EB\x0E\u00C7\x05\u0088 \u00A1\t3q\u0084\u00DE\u00BA\u00A07u\u00C8\r\u0084[\x10\u0080\u00D6\u00EC\u00C4\u009A\x13\u00A1\u0080\u00A2\x01}\u00CCHG\u0097\u00EE4\u00A70@s5\u0089\u008A\f!\u00DC\u008C\u0095!`\u00FA\u00FC6^\u0081\u008EN\u00D4\u0095\u00A1\x16\u00DBF\f\u0093Lal\u0089J\u0098\u00A7\u00C1\u00CC\u00CB`\bD\b\u00D3\u00F7\u00B1\u00A5s\u00E8iO\u00BC\u00AE\u009Du\u00CE/\u00EB\u00D7\u00FE\u00D0+66N]y[\u00F7\u00FD\u00F6e\u00C7\x10\u00B4_qV\u00D7\u00BFx\t\u00FA+\u009E\u0088\u00E1\u0093\u0096[P\u00CD\u00EC\u00AB\b .\u00AC\x04M\u00A3\u0095QVD\u00F0\u00D5\u00A0\x1E\u0094\u00EB\x15\x0E\u00BD\u00D9w1pS\x1D \u0095\u00C6}\x0FaK\u0088\u00CF2\u00FDL\u0094P\u00A5\u00AA\u009FP\u00DDv\t\u00DF\u0093@\u00A4{\x05%WM\u00EATD\u00CA4\u00C7\u00C2\u0080*\u00B1\u00AAI\u00F0k\u00D9\u00A8\u00DA\u00D4\u00FBs\u00CE\u0098CAU\"]\u00B45_B\u00A6\u00CF\n\u0089\u00E8E\x16{YuA\u00C2]\u0090;T\u0096.1\u0096L\u00E8B0>\u00DE&\f\u009B\u0081Z\x06\u008C\u00EDT,N\u00FF\u00A7\u00EFX\u00FF\u00DF\u009E\u00FEo\u0087\x07=\u00E9J|\x19\u00B5/\x1B\u0086\u00A0\u00BAw\u00DE\u00FB\x1B~u\u00C4\u009F>[\u00E5]\u00EB\x03\u00B6\u00C3\x1C\u00B8#\u00E30\u008C\u0081\u00E9\u00DF?$CpW\u009C\u00C6\"n\t\u00E3\u0081)C\u00A1\x1B/\u00EE\u00B3B\u00E0\u00BCn\u00C2\u0088n\u00DB\u00C08\u00D5\u00F7ih3\u00C2\u00AB\b\u00A5\x05\u00A1\u00EEd\b\u00E1Jt\u00A9)u\f\u00D5]*\x00F\u00DE{\u0088\u00EB\u008C!\u00FA)\u00E5>\u00BC\u00FF\u00E1\x19B\u00CE\x19B\x05Xa\b\x13\u00E6\x027\u00A4\u0096\u00E7\u0087\u008F\u00A9\u0097w\x13\u0088$\x19B\u00A83\u00EC\u00BB\x0B\u00BA[U\u009A\u00A3\u008DV\u00E7s\\G\u00EFKl\u009D\u00F2\u00AD[\u00C3YO\u00FB\u00ED\u00B53\u00FF\u00E5\x7F\u0091\x13\u00BFz\u0081/\u0083\u00F6e\u00C1\x10T/}\u00E4v\x7F\u00F9\u00CB\u00C6\u00FE\u00DAG\u00CCf7`\x00Cy:F\u00E4\u0082\x05\x17q\r\u00ACA\u00EA\u00C6\u0094\u0096\u00D5\x16\u00C0\f=\u00E1a^3\u0089C\u00C0\u00E4z\u0088CeU\u00FBL\u00C8\u00DF\u00F34\u00A9\u00D7y\u00F4\u00A0z\u0090S\u00B5\u00D8\x1Bn\u0097B\u00D4\u0085\u00DFh\u009E2\u00D1\u00C5\u00EB\u00DC\u0090\u0089\x157\u00E0\u00A4\u00C2\x11k\x1C\u0084-A\x10\u00B6\x04\u009B\u0080D'%8\u00A9\u00D7{\u00D5\u00FB\x1F\u00C2\u00E3\u00C0\u00FB'\u0093J\u0086Y\u00F3\x1Bb\u00DE\u00BB\u00E4\u00C2-\f!\u00CE\x1B=\u009C\u00DB\u009F\u00C5\u0090P\u00CE\u0087M\u00A33\u00A7C1\u0084\u00CE\u00C7j\u00E8\u00B2\x0B\u008B\u00D3\u00FF\u00D9e\u00B3o>\u00E7'\u00D7\u00BE\u00EEG\u00EF\u00F3\u00A1\u00D0\u00F7i\u00860\u00EA\u00FE\u00D9\u00F6\u00F2u\u00FFq\u00D9^\u00F6\x1C\u0095w\u00CF\u009B\u008C\u0098\x01\u0098\u00C1\x18\u0082\u00D0\u00D4\u00A6\f4*R\u00A4\"\x05\u00B6j4\u00F3\u0096\u00C4\u00E6zt@\u00D0\u00DB20\u00D6E_\u00EE;1\b\u00A2\u00F4#y\u0080\x16\x7F\u00F6\x13\u00FD!\u00FA\\5\u00E4\u00ED0\u0084N\f\n-$(\x0F\u00D1\u00F7_\u0087/\x15\u0095T\u00AF\u0087GlV\x064E.+\u00DF\u00CB_\u00CD\u00AF\u00A8\u00E3\\5\u00BE\u00F2\x1D\u00C5\u00FD\u0082\u00D9H\x06$\u00D1\u00C8\x19\u008Cg\u0085!\u00F8\u009C\u00D7w\x156\u0099nk\x01\u00CEl8\x07\u00E8\u00E6\u00A1\u00E8\u00DA\u00B0}\u00CA7.\u00E4\u00E1?\u00FA\u00BC\u00F5\u0087\u00FF\u00EB\u00FF,\u00EB\u00A7-q\x1Fm\u00F7Y\u00860\u008E\u0097\u009F\u00B1\x1F\x7F\u00F6\u008A\x03\u00F2\u00F2\u00EFX\u00C3u\x18\f\x00`\x06\u00C5\f\x02\u00F3F{\u008B\u0090W\u00EA\u00F0\u0085\u0088\u008B\u00D4?\x1CC\x00\x1C)L\x16\u00F2a\u00EC\t\u00F0\u00FE\x0E\x15\u00FA\x1C\u00F6\x04\u009D\u00DE\u00B72\x04 u\u00E6\x18W\u00C6\x06L\x18\x02\u0092\u00D0\x12\u00A6\u00AF\u00BA \u0093Xz\x19+m\x0F;\x19\u0082\x06\u00D1\u00C4X\u0090C\x16\x7F\u008EP\x11\u00D8\u00DF\u00E1\\\u0090\u0085\u0090s.W\u0090\u008C\x02\x1Ah\ra\u00EF\b5\u008C\f\u00A1\x04rU\u00A6\x15\u00B6\x02\u00C0S\u00C8\x0BCX\u00AD\u00F9@d\u00D1\x01\x19\u00ED\u00B7\u008E\x01\u00AA\x02\u00C5.\u008Cg<\u00E5}k\u00FF\u00E8'\u009F\u00D1\u00BE\u00EA{\u00AF\u00C2}\u00B0\u00DD'\x19\u00C2\u00A6\u00FE\u00E5O\u00EC\u00D5\u0097\u00BEx\u0081\u00B7\u009F8\u0093%\x06tg\x02\u0086\fLeP\u00CC\x14hu\x06V\nt\u00C4B\u00ED\u00AB\u00D3\u00B4s\x11\u00D7H\u00BE\u0094v\u00A5\u00D8I\u00B94\u00FA\u00C7\u008A\u0095\u00BD\x10!\u00EF\u00A8\u00BD\x10c\u009C\u00A7IP\u0093\x03\u0094\u008A\x19\u00E4\u0093:|J\u00CFU>\x04PZ\u00D3X\u00DA\u0083\u00B8\u00E9\u00CB\u00AF\u00EAG\u00CC\u00D5\u00A4\b\u008AzAW/\u00D3\u00EE\x07\u00E8\x05\u0088\u00BA\u008B\n0\u0097\u0082\x1E\u0087\f=&GX\u00B5%\u00DC\x06C\x00\u0092A\u00B2\n\u00F5\u00EAs\u0086\u0097\u00E1(\x18\u00C2d^\x15\u00AA\r\u009B\x0F|\u00CC\u00BE\u00D9\u00B7\u00FD\x1F?\u00BF\u00FEm\u00FF\u00E1\u00E5;g\u00F2\u00DE\u00DD\u00EES\f\u00A1\u00EBU'\u00DE\u00DA\u00DF\u00F4\u0092\u00BD\u00F2\u00E2\u00A7\u008F\u00F8\x14\x06\u00E9\u0098A1\u00A8\u00AB\t\x02\fh\u00CE\x10z0\u0084\u00A9\u00DE[\u00F4SMC\x1DP\u00A5\u0096\x11\u0089\u00ADWM\u00F8\u00AA\u00E5\x1A\x05\u00CC\u00C8\u00A8+\u00E8 \u00FB\x06\x122\u00F3\x10m\x18S\u0086\u00E0\u00FD\u00C7y\u008A\u00ACPT\u0099\x18\u008D\u00A1=nQ\x19B\u00DC\u00B6\u008E\u00B7\\+\u008E4*\u00CC\u00D6J,X\u00C9\u00C2\f\x02\"#\u00EC\u00F1]\u00DC\u00A8\u00A2\u0085\u00C8\x15E\u00A5\u00F2\u00F1\u00F3\u0099'\u0092\x1E8D\u00A0\x12\u00C7\u0088T)\u00F8\x1C4*\u00D6|\x06\u008Em\u00C5-\x19\f\u0096\u00CF\u00B5\u00C2\u00D4\u00AA\u00CA\x10\u00C9^nS`\u009F\x1D\r\u00E3\u00DA)\u00C07=\u00E3\u0095k\u00DF\u00F5o\u00FE\u00AD\u009Cp\u00C6}\u00A6\x18\u00EC}\u0086!l\u00E9\u00DF?\u00FC\u0096\u00F1O_w\x13^q\u00D6l\u00B8\x15\r\u00C0\\\u00A9\"\x00\x03\x04\u0083\x003/f&P\u00AC)m\t\u00B0\x1A\u00A3\x00@\u00E9L?\u00FE\u008A\u00E4\u0098X\u00B2U\u00D0\u00D1\u00C3S\u00D1'\x0B\u0096\u00BA?\u00AF)\u00D4W\u00BFW\x1BE=\u00CE\\\u0087\u0090\u00CC+\u00AFj\u0087\u00DA\u00C01\u00EA\u008E{\u00A9\x1B\x02E\x07\u00C0]y\u0082\x16L\u00CDG\t\u00BA?\u00ED7~\u00F6\x10\u00E9\u00F8k;\u00EF\u00EB\f*m\x18|\u00B6\u009E\u008C\b\u00F4\x04\u00D896\u00C7\u009A\u00CF\x11:|_\u00E9\u00BF0\u0085\u00A2\u008AL\x18\x02\u0099X\u00ECSAC\u00E5j\u0090\u0092\u00A3\u00BD.9\u00CE\u0082\u00B22\u00E9+\u00E7\u00D3\x18\u0083\x04C\u00A0\u00F1R\u00D1\u00A0}\u008E\u00ED\u00AF\u00FB\u009E+7\u00BE\u00FD'\u00CE\x19N?\u00E7\u008AC\u00BC\u00C9{]\u00BBO0\u0084}\u00FD\u008D?v}\x7F\u00C9\x1F\u00ED\u0093\u00B7\u00EC\u009EA14\u00B3\x0F\u00CC\u00D4U\x03\x18Ch\x02\u00CC\u0091L`\u00EEv\u0084\u00AC\u00BDS\u00BC\x055\x18\u00C6\u008F)-\u00E4Q/\x00\x18\u00A1\u0093\x12b;\u00A5j\u00EA\u00E8\u00D1\u00AAd\x0E=\u0098\x18\x7F\u00A5@I\u00FC[\u00CE\u009F\x1Co\u00D9\x15\x17q,\u00FE9h\u00B57\x1B\u00C7\x00\u00E8,\u009F\u00CF\u00AF\x11\u00DE7\u00AE_a@\u0094\u00AE!\u00A5\u00D5C&\u0082\u00DA\u00D3\u00D7\x0Fx0T\u00CEA\x10?\f1\u00D8\u009C*DGG\x15=\u00BD*\u009C\x06g&\u00AB\u00F3\u009F^\u0088\u00A9\u00B1\u0094j\x14\x19\u0085\u00A1\u0085\x12\u00A4\u00C4k<\u0098,\x10\u00C5\u00B8\u00CA\x10\u00AA\r\u00A7\u0099g\u00A7\u00A3xr\u00CA\u00BCu@\u00BB`\u00FB\u0094o\u00DD\u008FG\u009F\u00FB\u00AF6\x1E\u00F5\u00F3\u00AF\u00C6\u00BD\u00BC\u00DD\u00AB\x19\u00C2Ro\x1En\u00EE\u00AFz\u00E1u\u00FD\x0F~a{v\x15\x1A\u00B6ME\u0080\x18C\u0080\u00BA\u00CD@\\= s\u00B0s\x1A\x14s\u00FF\u0097d\x15\f\u00A1 \x04JPJ\x0B4\u0087\u00FA\u00AAQ^\u00B02\x04(-\u00F6\\\u00B8\u00AB\u00F0\u00BC|\x16\u00B8>~\x1B\f\u0081\u00D7P\"\u00FAw\x052N\x1F\u00CD\t\u00BE\x19\u00E1\u0088B\u00FAZH}\u00AA0\u00CCc\u00A8\x03\u0091p%\u0096sw\u008CYr\fa|M\u00E1n\x04R~<\u00DC\u00F8u4\"#aw\u00AF\u00D5\b\u00B7\u00F4w\u0086\u008F\u008F\u00A0\u00CA!\u00D0\u00A9[\u00D7\u00FB]\rR\u00EA\u00BD\x04b9\x11O\x1E\u00D5\u0089\u00B8\u00FB\u00FC\u00EEd\b\u0098x,\u00A6\bA\u00C1P\u00E7\f\u00F62T\u00A2\x10,\u00D7O\u0083~\u00FB\u00D3\x7Fw\u00ED\x1F?\u00EB\u0097ex\u00E8\u00BD6\u00B5\u00FA^\u00CB\x10\x0E\u00EA'O\u00BA\u00BE\u00BF\u00EC5\u00D7\u00EB\x7F\u00FF\u00BE\u00DE\u00F6\u00B8}\u00A0\u00FB\u009F`\x0E\u00C1\u00CC%\u00D1\x00\u00C1\f\u0082A\u00D4\u0098\u0084\u00C2\u00D5\x07\t\u00840\x14\u00A6p(\u00E2c\u00E8\u00AD\u00D9\x05\u00AA\u0095\u00DE\u00FF\r]\u00B9\u00F8\u00E8A\x1D\u00FA0(A\u00F3\x16v\u008F\u0095\u00E3E\u008FN\u00D4\u00C2\u00E2\u00A7\u00FC\u00D7\u00EEi\u00F9\tm\u0082\x00Z$#\u00B5\u00F2<\u00AD\u00D4\\\u00A4-\u00C0\u00F5\u00FE\x18\u00BF\u0096gpc\u009C3\u008B\u0088\u00AF\u00A0z\x00E\u00A6\u0083\u00AF$H\u00A1F\x17\u00F22\u008D\u00E8H\x06\x1A1\u0095\x1APHw\u008F^\x1F\u00BD\u00EF\x0EQ\u00CB?P\u00EF\u00AFi\u0086N\u00C7s\u0089\u0098\u00CA0\u00F6\t\u00D2\u00C8\u00B9l\u008E \u00EC\u00DA(#\x07\u0084=\u00C3\u00C2\u00B0Q\x10\x06\x19\u00BFLl!\u0093\u00EC\u00CA\u00D2\u00C7\x12\u00BB\u00B1x\u00F8\u008F\u00BCe\u00E3;\u00FF\u00DD\u00D3\u00DAW>\u00EA^Y\r\u00FA^\u00C9\x106\u00F5\u00B2o\u00F8\u00F4\u00F8\u00E2\x0B>\u0083W\u009E9o\u00DB\u0098\u00A1\x192\x10\r\u00860\u0080\u00EA\u0081\x19\x15\x07\x11\fP\u00FB\u00CD\x19\u0082\u009D\u00A7\u00E9\u0081P\u00844\u009A2\u0084b`(\u008B\u00DB\u008E\x15\t\u00C8s\u00AB\u00F4\u009C\x14,\x05d\u0095)H\u00E9s\u00D5\u009E@F\u00E4\u00A3\u00B2HB\u00C38F\u00B8\u00CD\u0089}\u00F0\u00FE\u00E9G\u00A1E\u00DF\x18\u00C2\u0084p*\x13@\u00F3b\u00A5q\u00A3x\u00D6\u0088\u00CB\x00b\u00EC\u00D3}\"\u008DP\u00BA\u00DF\u00C7\u00A4\u00B2)\u00F1B\u00D8@&\u00B7\x03)\u0088\u00A3\u008C\u00D1\u00C7\u0099\u00D7di4\u00BAPml\u00A2#\x14\x0B\u00A8v\u00B4b\u00A7\u0090\u0092\u00DF\u0081\x11\x11\u00BCU\u00FFjH\u00B5\u00A83\u008E\u0089\u00AD\u00E30\fa\x15!\u00F8\u00FB\u00AD\f!\x12\u00DE:\u00A0\u00E3\u0080\x0E\u00C1\u00F2\u00F4\x1F\u00F8\u00E8\u00FAc\u00FF\u00CF'\u00CB\x19?\u00F4q\u00DC\u00CB\u00DA\u00BD\u008E!\u00EC\u00D1\u008B\u00BE\u00EB\u00EA\u00E5\u00EF\u009E\x7F\u00ED\u00F0\u00A6S\x06,\u00B0\u00AE\u00DD<\x07\u008D\u00AA\u0080\u00D9\x05\u00A6\x7Fb\u00AA\u0082*f\u0082\u00C2 \u00D2\x0598S\x18T\u00D1\\0\u0087\x1E\x1D\u0095\u008B\u00FCo\u00E2\u00EE#\u00E5\u00AFD0N\u00A2\u00FE\u00EC8\u00ED\x12\x13\u00A4P\u0098L\u00E8\u00C0q\u00C8\u0089^\x07'\u00FA6\u00FDW\u00C5\u00C7F\u0086\x01\x7F\u009A\u00FCl\u00E3ru\u00A0,^2\u0090\u0090\u00D4\x00\x18\u0085\x18F\u00D1\t!3\u00BEA1\u0089\u00E0,\u00EED\u00D0\x00\t>\u00B7&\u00DA\u0098\x140\u00D1\u00F2\x07\u00D4B\u00AB\u0093\u00DF\u00B4g\u00BC\u0086.m\u00EA\u00B5\u00A31\\\u00DA\u00D1\x03\u009Ci\u00A0\u00AB\u00AB#\u00F9\u00FEt\u00A4\x1A\u00C1\u00F7\u00E3hf\x05!\u00A4\n\u0086\u009D\f\u0081\b\u00C1\u0099\u00D9\u00E1\x18\x02T\u00D0G`\u00D4\u0086\u00E5\u0083\x1FyS{\u00DCO\u00FE\u00D0\u00C6#~\u00F6\u00A2\u009D\u00AB\u00F8\u009E\u00DB\u00EEU\f\u00E1\u00DA\u00F1/\u00CE\u00B9\u00BA\u00BF\u00F8\u00BC\x1B\u0087wm4\u0098+q\r\u00DD\u0088\u00BC\u00D8\x04\u008C\u00D0i/\x00\x06m\x18\u00C4T\x05C\x12<\u00D7Hf\u00A6\u0082A\x1A\x1Az\u00D8\x1381]=\u00DE\u009DR\r\u00C8p\u00E5\x15\u00A4P\u00E9<\u00F7L\\\u0085\u0096\u0094\u00C8\u00BC.\u00AEp}\u00BA!\u00CA\u00B3\x05\u00F1\u00CF\u00CBg\u00AA\n\u0082\u00D4\u009F\u00AB\u00E5\u00BF\u00D4\x15\fd\u00D0\x10~\u00FC\x12\u00A0d\u00D7\u00A69\u00B5\u00C6\x1Cd\u00E0\x0F\t\u0099\u00CFa\f\u0083?5'\u008A\u0089\u00A4\u00AFAW\x135bu.4%\u00B5\u00C7.h\t\x0E\u00CB\u00A4$'>\x1D\u00C1\u00BD.\u00B42\x03\u00ED\u00E8:\u00A2\u00C5\x1E\u0098Z\u0090\t\u00E7\u0096]\u00B14\u009D\u00A1\x1B\u00E9c\x18\x18\u00A5\u00BA\u0081i\u0083`\u00DC\x02]\u008F\u009C\u00C3\u008A|z\u00F6\u00CFu\u00A0\u00E3\u0080\u00C5Ign\u00EAw\u00FE\u00C4\u008F\u00EFz\u00DC/\u00BF\x0E\u00F7\u0092v\u00AFa\b\u00D7\u008D\u00E7\u00FD\u00FCe\u00FA_\x7Fo\u00DFpEk\x1Ehd\u0084\u00DF=\x1C9\u0089<U\x01`-\u00BE\x1B\x01O\u008C\u008D\u00C2\u00EFfc\u0090@\x17I\u00B0\u00944\u00A1F(\u008B\u008C\u00DA\u00F7i\u009A4\u00F5\u00ED\u0095\u00BA\t<\u00EE\x04\u0095\u00E7\u00B3Q\u00A5\x10\u00A0\u00CF\x00]+\u00A8\u0080\u00CC\x01 #\u00982\u008DrmA\x05S\u00D8,\u00B9\u0098\u00D1V\x02\u00B0\u00CA\u00FD\u00B9\u0093tx\tVT\x0E\u008F3PZ\u00F8V\u009E\u009Fi\u00D7\x13\x04\u00E0\u00C7\u00CC`\u00A8\u00D1\x7F\u0086\n;S\b\u00B5e\u008C\u00DF'\u00E1\u00D2N\u00F8\u00DCNN1B\u00B0\u00F49\u00EB\u00CE,\u00C8 Fg\f\u00FC~\u00FB\f\x01d\u00FC+\f\u00A1\u00D3\u0090\\\u0098\u00FB\u00ED1\x04\x00\u00BE\u0099\u00ED\u0080\u00ED\u00DD\u00A7\u00F5\u00F6\u00D8s\u00FF\u00FD\u00DA\u00D9\u00CF}1\u00EE\x05\u00ED\x1E\u00CF\x10\u00C6q\x0B\u009F\u00EB\u00AF\u00FE\u00CD\u00CB\u00F0\u00BC\u00FF\u00B4o\u00B8\u00DA\r\u0083\u00A6\x02\u0098\u0087\u00A0O\u00BC\x06\u00F6\u00BB\u0091\u00851\u0083\u00E9\u009F\u00A1\u0081\u00AA*0\u00B7\u00A1M\u00BEG\u00A4\x1D\x10\u00903'K\u00BD\u00F2\u00EF*Rh~\u00AC\u00F8\u00DF\t3\u0085\u0084\u00D6L\x12Q\u00EA\u00C9\u00CC\t\x7Fpb\u009A\u00D9_ \x04)\u00D6\u00F2J\u00FC\x02\u00F4\x01\"m\u00B2X\u00AB\rAz=\u009F\x03j\u00A5/8Q\u00AF\u00F6QS\u00A9i\u00BB\u0088\u0087\u0099.\u00FC\u00F2\u0099nA\u00EE0U\u0099\u00C2\u0084q2\u0090\u00A8|\u0087\u00AAmu\u00DFG\x1F\x13\x19\u00883Z\u00BF\u00B7\u008E\u00DD\u00FB\x1B\u00E1~``tOE\x07\u00C8T\fu,\u00D2\u00F8\u00C8\u00CDr'\fAK\x05\u00EB\u00C33\x04\u009Bk7\u00BC\x1E\u008E!8?\u008B\u00B9\u00F0>{o\u00D0\u00F5\u00D3\u00D0\u00FF\u00D13\x7Fk\u00EDI\u00BF\u00F4\u00EB\u00B2~\u00F2!\u00D7\u00F9=\u00A5\u00CD\u008E\u00F5\x00n\u00AB\u008Dz\u00B3\\\u00D3_\u00FE{\u00EF\u00D7\u00E7=k\u00FF\u00EC\u00B3\u0098\u00F9\u00E2h\x10\u00F3\u00FF\u009B\u00AC\u00B6\u0080\u00A0X\u00DF\u0096\u00DA*H\x1B\u009D/I\u00C0\t\u009E\u00EF\u0090\u00E0]\u00CBy\u00BE\u00EC\x02\x11\u00D4H\u00C6z\u0092\x00n\u0089\u00AA\u00D2\u0096w\u00948Y\u00D8\u0091\u00A64\u00B7\u00FB\u00B9\u00D2\u00A3\u00FCwf\u00BA>\x1A,\x03\u00D2q\u008D#\x01\u00BB_G\u00E8\u00FD\u00D2 \u00E2\fC\u00A4\u00D0\u008C\u00E4\u00F8\u009Am`\"~\u008E\x11\u00A1\u00D7M$\u008A\u0080B\u00C5~\u00A3\u00C8\u00D7\u00CE\u00F9l\u00E1N\u00E5V\u00F3\u00A2\u00CD9$\u00E2\u00FA` \u00E2\bA(\u00F5;l{8I\u00CD\u00A4\u00DAb8\u00F1\u00CD~o]\x1D\u00BB)\u0080\u00D1\u00F5\x11\u008E\u0093\u00CA}\u00DAa\u00B3o5\u00C6\u00E5\u00FFF\u009C\b\u00D4\u009F\u00DB\u00DC\u009A\u00D6\x15\u00DF\u0089\u0097\u00ACG\u00B0Y\u00F0\u00D2\u00AA\u00C61\x01N@F$\x01\u00AA\x025\x06\u00B7[\u0091\u00AF]0t\u0085\u00EE\u00BF\x0E\u00FD\u00BD/\u00FEO[\u00BA\u00E7\u00FE\u00BA\u00BC\u00F6\u00DF\u00CB\u00EC4\u00C5=\u00B4\u00DDc\x19\u00C2R\x0F\u00B6\u00AB\u00C7\u0097\u00BF\u00F4\u00DD\u00FD\u00B7\u00CE\u00DD\u009A]\u008B9\x14\x0B8\u0087\u00F7\u0085\u00EB\u00B5}<\x1F\u00C1\x16\x12]\u00C9\u00A2\u00C0R\u0082\u00EC\u00D0}\u00A9\x19\x13w\x15\u00C2\u00A1\u00EF\u00E8o\u00B6\u00A9\x1A\u00B3\u00F1\u00F7\x1A\u00B6\u0084\u00A4ooE\u00E2N\x1A\u0097W\u00ADG\u00E00\u009CT\u00AA\u00F4\x10x\u00DEex\x06\u0086\u00F2\u00AF r2\u00E3\u00D9\x04*\u00CD\u00D8a!\u00A4P\x1Fj\x1C\x01\u00F2\u00BE\x12{:\u00B8\u008E\u00EC\u00A3\u00B1\u00E7\u00F2\u00B1\u00D2&\x00\u00EBK\u00A4\u00F4#:}\u00FCbK\u00B1\x1F]4J\u0092\x16\u00DF\u008F\bc\x1E\u008A\u00EA\u0084\x0Ei@\u00D4\u009F\u00AF\u00AEVa\u00C5&\u0085\x15a\u0081\x13\u00B3\u0082\t\u00EB\x12o\u00B8\u0099\u009A\u00E0oU\u00D0,/\x02\n\u00C5h\u00F3\x0F\x010\x022B\u00C5\u00FBq\u00F7\u00A5\u0084\u009A\u00A2\u00ABd<\u0099\u00BF\u00E0\u0093\u00A8\u00AF\u00BF0\u00B3rN=i\x12{\"\u008A6\u00EEG\x7F\u00EFy\u00CF:\u00B8\u00DC\u00DE\u00AD\u00E3M?-\u00C3)\u0087\u008AQ=\u00E6\u00ED\x1E\u00C9\x10\u0096\u00BAg\u00B8r|\u00F1\u009F\\\u00A8/zf\u009F}\x11\x03\u0080\u00A5\u00BB\r;\u0080\u00AE\u00CA\u00EA\u0087q\rQ\u00C1\b_:\u00B1 \u0092I(\u0080%\u00CC\u00A8(\x10\u008C\x10\u0080\x0B\u0085D\f\u00BBX\\\u0092\u00F4\u00E8\u008F\u0092\u0082\x12\b&\x05\u0093n@\u0098\u00C2u\u00A1\x11E\u00D8\u00A0b\u0084/\u00E1\u00E4\u009C\u00C5\u00EF\n\u00B7\x17\u0088\u00A3\x01f_F\u0092v\x04X\u00DBgJb\u00C0T\x06\u008E)\f\u0081\x1C\u00A3\x11\u0097LV\u00EA\n\u0083PJA\u0081\u008A\u00AB\b1\x7F6{\u00C67\u008D\u00C3\u00A9\u008B\u00D2`.\x05I\x00$\u00AF,\u00A7\u00C6\u0098\u008D\u00C8\u00B0\u0094\x01\u00E1NQMi^)\u008Eh\u0086\x1AO \x11\u00F8\u00DC\u008D\x10\u00C9\u00E0&\u00F1\u00B8b\u00CD\u00B2'\u00C68\u00B4\u008A\u0083\x0E\u00C5\x12\r\x1D\u0090%\u00B4\u0099\u00D12\u00EC!\x13\n\u00BF\u00BDv\x18Dp\u0098&\x10\u00CCT\u00A0\u00DB\u00FB\u0080\u00F7\u00BE\u00F2\u00DC\u00ADq>S\u00DDs\u00AE\u00C8\u00FD\u00EFq\x01L\u00F78\u0086\u00B0\u00A5\x07\u00DB\u0087\x17\u00BF\u00FF'\x7F+/x\u00E6r\u00D8\u008B\u00B9sc\n \u0093\x07d\f\u00F6\u00EA\x15U\x05\u00B0%\u00EC\u00CB\x12\u00C5\\er\u00C4\x17XG\u00B7eSP\u00BFi\x00\x1A\u00B0\u00DAH\u0092\u008C\u00C0\u009Ae\u00E7\u00F1\x07\u00814\u00B7*\u00A3\u00D4a\u00CC\u00C30\u00CC\u00E1\u008EO\u009D#\u00AB1\u00E4_\u00E4a\nU\x04\u0087\u00F8\u00F08\u0083\u0080\u00F9\u00EC\u00D9\u0088\u00D7\u00B2%+s\x00\"\u00BC*\u00F0o2\u0096\u00C9\u00D8\u009C\x19$\u00AD\u00B9\x11\u00AF0\u00BB\u00C9\u00D9b\u00E8\f\"@\x1B\u00C2//\u00BC\x17\u00FB\x10\u009B\u00F1@H\"6\u00F3\u00AC\u00D5\u0088\x02>2\u00DA\x0B\x14\u00C3\u00EA8>\u008C\u008E\u00BC>E/R\u00DD\u00E8\u00C6H\u00A1P,\u0091f\u00E1\x0ES\u00A9J\u00FF\x02Ge\u00BD\u00A0\x1CgD\u00BE7\u00DC4\u00A2tU-J\u00E45\u00F1.\u00DD\u00D1\u00E6hqm{\x0B\u00CB\u008B\u00FF\u00F4\u0099\u009B\u00E3\x12z\u00F0s?%\u00BB\x1Er\u008FB\n\u00F7(\u00860\u00EA\u00ADr\u00E9\u00F2\u008F_\u00FA\x0E\u00BC\u00E8\u0099\x07\u00DB\x1E\u00ACa\u0089\u00A6\u00E4\u00F7)\u00E7T\u009C!\u00888X\x04\x00\r\u00E2\x1E\u00E1h\u00D4\u00DFn\u0087\u00A9\u00A3K\u00AA\x06\u00E29\f\u00CA\u00FB\u00DA\u00BF\x12L\u0085\u00CC\u0084\u00EB\u00A3\u00FE\u00B7\u0090\x16\u00E1\u00A4\u00B8J\u0090+\x1D\u00E9\x02\u009CC1\u00F7\u0080\u00A2\u0099\x11=\x04i'pI.\u00E9Q \u00A9I\x1B\\b\x1398t\x0E\u00D1I\u00DD\u00DCg\u00A0\u00AA(\u00BE\u00B5;%xz7\u009A\x11\x00!@\x18Z\u00B4\x1COB\u0097B\x18R\u00E7Bh\x18,\u0093G\x03\u00A2T\x17\u00AC\u00C2\u00D4 \u0083\u00EB9\u0089!\u009E\x1D\x11\u00B8\u00F1\x12\x1AR{\u00BA\u00AD=\x19\u00A11l\u00A5\u00FBQ\u009A\x1Fi@\u00EF\x10LK\u00DA\x01\x1D\u00AC\u00A2\u00CD\u00BC\t3\u00DCv@\x17\u00BEz\x16\u00C6\u00C0V=\x05\u00AB\u00A8a\u00F2Uv\x1E?ls&\u00D7\x01H\u00C3l\u00DC\u00C2\u00F8\u00F7\x7F\u00F6\u00CC\u00ADa\u00B6\u00D4\u00C5-\u00FFJ\u00E6\x0F8\x1A\x16s\u0097\u00B4{\fC\u00D0\u00AD\x11\u0097-_\u00FE{\x7F\u0083\u00DF>\u00F7\u00C0\u00FCzxZ\x0E\x06 \u00F6U\u00E6\u00FA]\u0080\u0081\u0083\u00B1Ja\u0084\u009E\u00F2\u0090\u0088\x00\u00FEy\u0094\u00A9\u00A4\x17X\x18;\rl\u009DF# P\u0085\u008B\u00F8\u00EC7`B\u00ED\u00C9\u00FB\x13\u00B8ZA?\u0085\u00FB5t\x0E\u00E1w)\x01E\u0081\x10\u00F8\u0094D\t\x04\u00E3$b\x0F:\u00A2>\x1E^\x05J\u00B3\u00A2R\x04s\u00A0\u00B4GJ\u00D9\u0096q\x06\u00C6\u009C\\\x01j\u00AE\x0E\x18lr\x06\u00E0\u00E2]\u0087\u0088\u00E1\x07\u00ABR\u00C3\u008E9y\"8bw\x1C\u00A6\u0085\u00B7\u00C0&-=\f-$\u00B3\u00EA\x00\u00B4fx\u00AE'\u00A22\x17\u00A5]-\u0092\x18M\u00BDc\u0081@\u00DBhs\u00C2\u0098\x0E\u00D1\u009C\u0093@\\\u009E8%\x03\u00C4sO\x04n\x10E\u0087\u0088[\u0095\u00B4\x032\x03t\x01\u0095\x11\"N\u00B9\u00BD2#\x7F\u009A\u0098\u00CF\u00FC\u00E9h\u00DB\u00FAr\x13\u00DB\u00EFy\u00D9\u00B9\u00FBe}\u00BF.n\u00FDw2\u00FF\u008A\u00A3\u00EF\u00ECNl\u00F7\x18\u0086\u00F0\u00A1\u00F6\u0087\u00BFy~\x7F\u00FE\u00B3n\u009E\u00DF\u0080\r\u0095p\u00ED.\u008B\u0084\x18\x1C\u00D2Sr\u008Dj\u00CB\u00C5\b\u00DE\u00DE\u00D3\x120i@\u00FA0`\x1A\u008B\u008C\u009F\u0093i\u00E4yD\x15\u00FCNx\u00ABJ\u00C9d\u00AD;\u00BD\u00ACj\u0090*\u00E2\x10v\u00CD\u0099@a\x04\u00D5X\x18\u0084\u00DB\u00CC\u00CE\u00E0\u00C7\r\r{\u00CC\u00814\u0087\u00BD\u00C2\u00CE!\u00AD\x01}@\u00D8\x01\\\u0095\u0080\x1B\x013i\u00A9\u00C4\"\u00F8yS\u0089V\u00D4\u0089\bT2\u00C9n\u00F7*\u00B1\x16\x01\u00CB\u00DA\u00B4o\u00F4\u0082\u0084\u009C\u0088\u0088.B\u00C2W\x1D\u008AP_\u00CAW\u0093\u00DC\x12F\u00C9\u00A2\x0Ex\x1F\u0089*\u009C\u00E1\u00C0\x18\u00958S\u0096\u00F0&\u00901\u00E43ReP\u00FF\u00ACq/z|L\u00BD\x10\x1A\x1A\u00A5\u0085\u00FA\u00E0b\x04\u0081\x15w\u00A8\x0FD\u008De\x0F\u008F\u00BA\x16@\u00DBMY%\x02\u00EF\u00BBA\x1B0loB\u00DF\u00F5\u00B2g\x1D\x18\u0096{\x00\u00FC\u00FA\u008EN\u008EA[]\u00D3\u00C7\u00A4]\u00BE|\u00FD\u00CF\u00BF\u00B6\u00FF\u00DA\x7F\u00BBi\u00F6q\u00CCDqB\x17\u00CC\x04\u0098\u0089bM\x1531S\u00DC\x1AJ$\u00A2*\u00E6\u00B0c\x19ld\tM$\u00C5\u00994Ot\u00B2\u0090f\u00F1\u00F3\"&\x01-\n\u00A8X\u00BD\u0084\x15\u00F9\u00AE\x04\u00FDN\u00BE\u0092\u00E5\u00BB\x01\u0094\u00C0\x19z\r\x06\u0088\x0E@\u00F7\b\b\u009D\u0095\u0085G\"u\u00CF\u00C2J\"\u00920\u00F8(\b/%^\u00A2\x01z(d\u00B2\u00F0\u00E3\u009C\x12\u00C5[\u00C3\u00A5\u00F3\u00BCr\x0E\u0088\x16\u00A8~\u00A0\x04\u00D7\u00F8aU\b}s\u00B5`IHc\u008D\u0090]\u0085Z^A\u00A0\x01\u009D0\u0085\u00DCI\u00DA\u00FF\u008D\x18\x05\u00F6\u00AB\u00C8\u009D\u00B2=\u00A7\u00C13\x1FA/\u0088\u00C7\r\x00\u00DEOw\u0086\u00C1\u00A6c\u00C44\u00D89\x16\u00AB\u00A0,\x19\u00DF\x01\x19\x1D7v5\u00B5\u00A3\u00BBQR\u0097\x1E\u00CB\u00D03\u00A6A\x17\u0088 \u00A7\u00D1\u00E7\u00A3\u00FA\u00B2\u00BB\u00F8\x1E\x1E\x1C\x0B\u0091\u0092]\x16\u0099\u00A8\u00BD\u008C7\n\u00B2\u00F8s/\x05\u00DB\u00EB\u00A7B\u00BF\u00FB'\u009F\u00B5\u00F1\u0094\u00FFr\u00CC\u0083\u0097\u008E9C\u00B8r\u00FC\u00FF\u00CEy\u00F5\u00F8\u00BC\u00D7|j\u00FE\u0081\u00B6\u00A6\u00C0\\\x04\x1B\u00AAX\u0093\u0086\x19:\u00D6\u009C\u0080\u00E7h\u00CE\x10j$\u00A2\x05)\x19(\u00AF\u0084\u00CE\u00C2(\u00CD\u00CDy\x1A\u00D9\u008C5\u00A4\u0099\u00A9\u00CF3\u0098\x15XD'\u00C7\u00C3\x1F\u00A0\u0099\u00E3\x00\u00A0\u00ACaIu@\u00E7\x16e\u0088\u0099\u00A5\x1DC\u0090a\u00C65\u00A2\u0090\u00C1D\u00E6YP\u00FF]\"\b\u00C8n\x10j\u0080\u00BA\u00D7\u00A1J\u00E8\x12D\x14)\u00D7\u0090\b\u00CCc\x1F\u00D3\u00AD\u00DC\u00E0\u00C4\u00E9\u00B1\x05N\u0090\u0096\x1198\u00F1J\b\u00FE\u00E4|I\u008C\n\u0084\u00E1\u008D\x12>\u00F7\u00A4@\u00BA\x10W\u0082\u0092\u00F2\u00B7<F=?j\x1E\u0094\x00%\u00F0\u00FE\u00BE\u00A9\u008A\u00E16\x1B\u008B\u00D594\u00E6\u0091\u00F5\x12$\u00CE7\x061\x16\u00A6\u00B0\u00B4>z\u00B7\u00FEGEl\u00E7\x16\x01T~~Wg\"dN#\u00B4/\x01\u00ED\u0090\t\x03I&\u00F9%3\u0084Q\u00A1}\u00C0b\u00F7\u0083\u00FB\u00F2\u00EC\u009Fy\u00DA\u00EE\x1F\u00F8\u008F\u00C74\u00CC\u00F9\u0098\u00AA\f\u009F\u00D3\u008B\u00BF\u00EB\u008F\u00B7\u00FE\u00C6\u0092\u00E1\u00EF\x00\x00 \x00IDAT\u00C3yW\u00CD.kM\u00CD)\u00D4`j\u0082 \u00EB\u00FA\x01\u00AE\x1A\u00B8\u00BBQ\\\u00CF^\"d+\u00A8y\u008B\u009A\u0083\u00C9T\b3E\u00A6\fQ\u00F7J\u00A8\u00DB\"XhUC\u0093W\x15\u00F74\u00D0\u00ADiq\t*\u0099/A\u00B7\u00A6b\x06\u00E8:\u0098U\u00D1\x18G\x10*\x02\u00D5\x04\u00EF]\x05\u00E6I\x18,~`\"\u00C1\u00DBDUI\u0086R\u00EC\x0B<7\x14\u00EE\u00C2h\u00AAB\x1Bq\x04U\u00E9\u0095\u00BC\u00954\u0097\u00E6\u00E5\u00B8\u00B8\u009F\u00BF\u00B1\u00D0\b\u00FB\x0F\u00B8\x10s\u009C0\u00A2\u008E\u009B\u0090}\u00F58\u00A6\u00D7(h\x11\u0088w<a\x1E\u00E5_\u0083\u00FA\u0080\u00A2\u0083\x1B\u00B5\u0084j\u00D1X\u00DE\u008E(AA\u00E3j\u00DE\u00DE\u0099\x1C:,\u0094\u008Dc\u00F2\x10i~\u00A7\u00D7abL\u0094\u00F2G\u00F5\u0081\u00ABB\u00CB\u00AAJ\u00A5\u00F3\u0088\u009B\u00C2\u00E7]1\u00DB\u00FB\u00F9\u00B6\u00BC\u00E8e\u00E7m\u00BD\u00FB\u00C5_X\x7F\u00FC\u00CF\x1F\u00B3\u0084\u00A8c\u00C6\x10n\u00D2+\u00BF\u00E1\u00A5[\u00BFr\u00FE\u00C5k\x7F\u00BF\u00B1K\x15k*\x18\u009A@\u00DD\u00BC\u00D7U1\u008A\u00ED\u00BBg\u009E\x063&\u009A\u0085\u00D9\u00D6|Ss\x1F\u009A\u00C6\u00D7\u00CC\u00A5(\u00D5\u00CB`\u00CB`\x12\u009D\x17\u00CBB\u00E2\u00DB\b\u00AF\u0087\u00E0:0e\x12\u00ED\f\u00C2\u00FB\u0082\u00C6\u00B4\u00E6\u00ACa\u00DD0\x0BC\u008D#\f\u00D9\u0089\t\u00E5\u00B3x\u009C\u0081\u00CE|\u00BD6\u00D8\u00FE\x02$j\x06!\u0099\u0094\x11\u00A1m\u00C1\u008E\u00F1\u00CEP\u0084\u00B5\x1A\u0092L\x04>'\u00A1\x02x_\u00E1*\u00F49H\u00BF}\x03Z\u009B\u0084s\u00B2/\u00EA\u00E7\u009C\u008B\u00EC\u0093\u00A4?\u0086\u00E7f\u00E2\u0082\u00F3/v\u00F5\n: \x1Bh0\u00C9,\u00FE\u00CE\u00F8@\u00A4A\u00AA(\u00D4aD\u0081n\x1E\x16\u0086 \u00AB\u00F4\x18\u008BMFs\u0091L&\u00EA\x04\u00CE\u00F7\x1EF\u00D8\u009E\u00B6\x07\x7F\u008E\x12B\u0089p\u00B9b\u00CC\u00B9\u00E7\"@2D-\u00CC@\u00F8\u00DC+<ygc\u00DF-\x19`\u00D7x\u0087\x02\u00C5\u00DA\u008D\u009F\u00DC\u00D8z\u00FB\x1F\u009E?^\u00F6\u00CA\u00C7\x0E\u008Fx\u00FA1I\u009D>&\fa\u00AF~\u00EE\u00A4\u0097m\u00FD\u00E6\x05\x17\fo:eC:\u00EA\u00B2o\u00BE2m\u008E-\u0085\u00A5I\u00C6\u00A9\u0091\u0088\x07h\x18\u00F7\u00962\u00F5\u00D2\x03\u00C9\u00D3k\x135oC:0=b1z\x15\u008C*\u00E8b\tSc\u00C82.\u00AD\u00E6\u0098\u00C3c\nt#z\x00\u0086\b>\u0082\x1B\x17Y\u00C3\u0090\u00A8\u00A0Ju\x01\u00DD\u008A\x1A\x18\x07\u00EA\x01L\u00E4l\u009A\u00AB,\u00D0\u0083\f\u00D0F4T$\x13\u00E3\x12\u00FCX\u00EC\u00CD\u00C8\u00D8\u0086\u009E\u00BD$zh\x11\u0092L\b\x1BFJ\u00E1y\u00D5MN\u00F68\u00C0\u0082\u0094\u00C4\r\u0091\u00CE\u00CC\u009C\u00F0\x05\x1A\u009Fsl\u00894\u00D2;+\x1E\x04\u00A2P\u00A9o\u00CB\u0098\u0096\x05]u\u00A7}I\u0081\u009D\u00AC\x0B\u008AE\x12\u009A \x11\u0084\u0088{\n\u008A\u00DB\u00D6v\u0089\x01\u00BDS;\u0098\u0099\u00ABTTO\u00AA\u0091R\u00FD\x02\x11q\u0086\u00BA\u00F4a\u00F4\u00C9{:\u00E2V\u009C\x193U\f\u009F\u00FB\u00C8)\x07\u00DE\u00FC\x07\x17\u00E8\u00E7.|\u009C<\u00E4\u00BB\u00EF\u00F6\"+w;CX\u00E8bx\u00CD\u00F6\u00EF\u00BC\u00E6\u00E5\u00F8\u00B33g2\u00A2\u00F9\"\u00A4\u0083\u008D\u0084_u\u00FE\u00D1\x7F#`\u00B3(C\x7F\u00FF\x0E\u00B9\u00C4\t\u00BC9q\u0093\u00EB2\x1C\u00BEC\u00B0\u0094\u00EE\u00A1\u00B9\u00F6\x06\u00E8\u00A10\x15\u00C3\u00A4\u00E9\f\x04\u0086\u00F4\u00E33/\u00C2=\x01X\x03\x03\u008DDf\u00E6\u00C2\x13\u00D3\u00F15P\u0082\u00BB\u00BE\x1A\u00F5\u00FD\u00C1\b\u0093\u00CC\u0080D\u00A4\u00A6\u00B0$K\u00F4\u0085.-\u00FC\u00F2\u00D3\u00A0\"\u0097xe\u009FH\x1B\"\u00CFQ\u0097l\u00B47\x18\u00D22\x15'\u0099L\u008F\u00D9\u00B3\x19h\u00AE\u00D3\u00D6\u00A8g\u00A6?\x13_\x01pz\u00A6;\u00D0\u008C\r]Z\u00BC3;\u00E6~\u00FF \u0094\u00AA\u00BD\u00D8{\u00EA\u00EE\u009ElE'Tm%\u008F\u00A0\u00A8\x0F\u00E2\u00DF\u0093\u0087#\u00FCF\u00AA\u0080\f\u00E6.D\x0BI\x1E\x1E\u0087\u0098\x13G!\u009D\u00F3I\x1F@\u0089\u00C9\b\u00A2v/\x00Fgl\u00CD\u00C3\u009CGD\x15Ww\u00C9&|PL\u00F6\u00EB\u00BC\u00CDv(Uj\u00FA\u00DC\u00F3\u008F\u00BF\u00E7\u00CC\u00AD7\u00FD\u00FEk\u00F4\u00C0g\u00FF\u0099\u009Cp\u00F7\u0096c\u00BB\u00DB\x19\u00C2\u009B\u0097\x7F\u00F6\u00C2g\u00E3w\u00BF\u00EF\u00E0\u00DAA\u009C\u00EC\u00849\u00F8+\x1E\u00A1Xz\u00ED\u0082\x11\u0082\u00B1\u00DBk\u00A0\u00CD`\u008Cs\u00D5\u00ED\x07\u00BEdI\x1F\u00C8 $\u00F5\x05\u00DE\u00C5Q\u0087;\x14M\u00E6\u00FB\u00A2piU\u00DD\u008F\u00DD\r\u008B\nE\x17[4\x1A\u00BE\u00865\x003\u008C:G\u0093\x19\u0086\u0082\x06B\x12\u00AB\u00D9\x10\u00CC\u00D8\u00C7p\u00E4\u0082\x10\u0084z\u00AE\u00A9\x11\u00A2\u00EAIJ-\x17\x1A\u00C3\u00FC\u00DA\u00AA\u00AB\x0F\u00A6fpM5\u00F3L\u00A8C\x7F\u0091b\u00C0\u00F4\u00C8\u00BB\x18#<\u00BB\x0F\u0080\u0088Ey\u00A4\u00844\u0082\u00A0\u00A1\x0F\u00C1^}\u00A8\u00E2\u00D2X\x11\u00CCT(\u0091\u009B'\x16\u00C5~\x07\u00AErHs;\u00A8\"\n\u00B0\b|\u00F6\x07W;\u008C\x15B\x05\u008D\u00B9\x0BN\x14\x16p\u00A4\u00B0\u00C2(+\u00E2\u00DC\x19S\x07\u00D0d\x16H\u00C2\u00E2@<\u00AA\u0091h\u0081U\u0099\x18\u008F\u00A0\u008C\u00A7\u00F0't&b\u00D6%\u008F[@)\u00A4\"#\u0088R\u00C2;\u0083f\u00B9\x11tO\u00EA\x12io\u00F1\x19%wsf\u009B\u008C$\u00BF\u00FA\x0BE\u0085+\u00D2\x05k]\u00B1\u00BC\u00E4\u0082\u00EF\u00DB\u00DE\u00F5U/\x04\u00F0\u008B\u00B8\x1B\u00DB\u00DD\u00CA\x10.\x19\u00FF\u00E6\u00C7~v\u00F9\x0B\u00BFp\u00DD\u00B0\x17\u00A2\x1Dk\x10\u00CC\x05\u0098k\u00C7\u00DC%Q\u00A4&\u008B\x04B\u00E0,\u008A\u0087\r\u00AB\x18\u00D1\x0F\n,]\x124\x15\u008C\u00CE8Dh1\u0090@\u008F\u0084\u00B1\x1D\rcx\f\b\u0093\u00BD\x1F!\u00BA \u0082\x00:\x064\u009D\u00A3\u00CB:\u00809\u00BA\x17r763\u00A0\u00D68\u00AC5\u0098\x02\u00C2\u00F3)\u00C2\u0088\u0098\nR\x1A\u00C1\u00F8\u0099\u00AB\u00858\u00C5\u00C7\b\u00AA\x01\u0094\u00CE\x1C;|!\u00931%2\b\u0098Mb\x17\u00FFQ\u00A4\u00AC[\x0F\u00EEqF\x10\u0091\u00CE\u008AHpj\u00E1\x1D\x002\x00\bH\u00DF\u00A63\x10i\u0099\u00D9Y\u00D4\u009C0\x04R{\bJ\u00A8\x19\x16\u00DD\x19MB\u00F4tw\u00F8|uC%6\fC Lz\"\u0083\x17\u00D0>\u00B2,\x04\u0097R<\u00A2\u00B9+\u00BB\u008B\u00B1y\x16L\u00B5)\x04\"\u00E0@MY\r\u00F1\u00A4\u00DD\u00D1\u0089\u00A0\u0084\u00CB\u00A1\u00DC\u00FC0\u00AD\u00B2\u00DBC\x1F\u009E\u008D[\u00D8|\u00DF+~a\u00F3M/x\u00FF\u00C6?\u00FF\u0095\u00BB\u00AD\u009A\u00F3\u00DD\u00C6\x10\u00AE\u00EE\x1F|\u00F8\u00AFn\u00FF\u00EA\x1F]\u00BA\u00F6\t\u00A8,\x00\x15\u00EC\u0083b\x03\u0082\r\u00C0+\x1AYu\u00E49\u008C\u00B8G\u00E9\x18\u00FD}\u008C\u00A2\x1E\u0098\u0084\x00oKAl\u00D1f 8\u0093\u009E\x04\x12\u00A1\u00C9U\u00F5\u00A4i\u00D1\x12\u009B8:;q\u00F4\u00C5lK\u00B0ad\u00D8\u00B1\u00B1.d9\x16E:>[2\x05\x1A\x0F\x03\u00C2\u00B3\u00B2Bs\u0098O\u00C8\u00EF\x06A\u00F5\u00DF\u009D\u0098\u00A3\u00CAR\u00E8\u00C3\u00FC\u00EE\f\u00C1Q\u008Ee<\x0E\u00C8\u00D0b\u00B1\u00AC\u00C6@\x0F\u008A\u0089\u0087\u00C3\u00C5\u009BiW\u0092nG\u00CE\u008E\u00DF+\u00A6\u00C3\u00A0\x12\nwp~\u00A5N[\u00DE\x7F\u00C4&9Y7\u00A60k\u008C\u0083\u00C6X{\x00'\x04\u00CD\u00F7\u00D1\u00DD(\u00C8B\u00AB\u0089@\u00FC9\u00AA\u009D$xM\x03\u00D5\u008F\u00A9\u008D\u00C3\u008Fu\u008F\u00C4t&ch\u008D\u00CA:W\u0089\u00C6<\u00C7|\u00A2;\"(\x0B\u00C6\u00DF\u0087B\u0090\u00E9\u00E9\u00DD\u0099l\u00F7\u009A\x13#B\u00D2+\x19Im\u00B7\u00C7 \x0E\u00D1\u00A4c\u00E3\u00C0\x17q\u00F0\u009D/\u00FF\u00A3\u00E5%\u00E7]>{\u00F4\u008F\u00DF-\u00FB>\u00DC-\f\u00E1:\u00BD\u00F6\u00C4\u00FFg\u00EB\u00FF~\u00DD\u00EBgo\u00DB=zv\u00A1\n\u00B0\x1F\u008A\r\x00\u00BB\u009D\u00D8\u00E7\u00A2\u0098\u00AB\u00B9\x13\u00E1\u0084\u00EBk\x18J\u00F0\u00AEf7\x1B\u0085\x0E/\u00F7\x06\u0088\u0086l\u00CF?_L\u00AA\u00EE\u00FEe-\u0085\u0089\u00DD\u00DE\u0092\u00A4\u00C4\u00E4\u00CF\x00\u00AF\u00C7\u00A4\x16\u00E1\x00Y\u0087\u00CA\x1C\u00AAV@\u00B3\u0083\u009E\u0081\u00E6\f\x01\x0E3kHr\u00F54\u0098\x112\f\u0080\"\u00A9\u00F3\u00ABDxn\u00D4i\u00A2\u00FB/\u0098\x03\u00E2\\\u00B7\u00C9\u0083\u0099\u0089\u00ADY_\u00EA1\f\x00\x11j\u0089\u0092s\u00C8*\u00AB\u00C8\u0080\u00A9\u00C6\x0EL\f\u0095;\u00EA\u0098l\u00B0\"\u00FE\f\u00E2\b\u00A20R\u008F\x11`\u00BD\u00C2\u00A6-\u008D\u0099\x1C\r\u00D1\x19\u00BF\u00A7Ng$\u00E9\u0086K\u00A6`k\u00F3\u00D4\u00E4\x0E3\nJ\x0B[\u008E\u00BD,\u00CE\u0087\x02\u00DA\u00ED\u00B9\u009A\u00D9\x07\u0094\f\u0085\u00CCK\u00C9\u00E0\u008DX5\u0090\u00D2\x10\u00C7L\u00CDr\x13\u00B4$Z\u00E2\u00D8\u00B5\u00D3q=:j\"\u009B$\u00D4\u00A7w\u00C8\u00D5\x0BzL\u0094\u00C7{\u00BC\u0083T\x1FJ+?O7\u00E31\u00E6\u00B5~\u00DD\u0095\u00BB\u00B7\u00DF\u00FA\u00B2\u00D7\u00E9\u008DW>Z\x1Ex\u00D6]\u00BEC\u00D4\u00DD\u00C2\x10\u00DE\u00BC|\u00FD\x1F\u00FC\x0Fy\u00C5Y\u00E3@\u008E\r\x00f\x07\u00D8\x03`\x17\f\u00A22\u00B8\u00A8\t\x17\u008B\u00BB\x1A\u00D5\x10\x04\u00E3:h?`_\x16\u00A3 XJz\u0088=\u0080\x0Es\x00py>\u00C0\u00FA0f\u00C2Q$\u00CA\u00B0W?@\u00B0\u008E\u00E6\u00EA\x01\u00D3\u0095\u00BB'\x1FY1\u0096\x01c\u00893hn`J\u0095\u0080jDa\f\u008CjR\u00C2{\tn\u00A7\u0091P4\u00F89dU\u00C3!\x16Q\u00DA\x13\u00D4\u00A5;},\x12\u00C7\u0081\u00F0\u00CD\x16\u00C6B\u00A1\x17\u008B\u0090\u00D2\u0096C\u00F3'Hwg\u0089\u00E2H|\u009F\\:\x16;\u00BB\u0090\u00A2\u00D2\u00F8\u00AF$\u008C\u00F8\u00C9G*H\u00C4`\u00D4\u00E0\u00844P\u00A6\u00DB\x7F\u00C5\u00C2\u00C6\u008D\x10\u009D\x00\u00B9\u00D7]\x10ZU\u00B7\u00AA4\u00EE9\u00E7\u00EA1)\u00EAy\f\u0081\u008A\u00A8\u00D2\x144F5\u00C9\u0089\\\u00C3`H\u00C6\u00C2\u00ACI+\u00D3#D\x04\u00E1\u0095I\u00C7\u00F74\u00AA\u00B4\u00BEK\u009D\u00FE\u00A4\u0089\u00A7j\u00D3\u00A6\u0098]y\u00D1Y\x07\u00CE\x7F\u00FEK\x00<\x03wqk\u00B7\x7F\u00CA\u0097\u00D6\u00FEn|\u00DBO<\u00BF\u00FF\u00DE\u00BF\u00BCem\u00D3\x7F\u0099.\u0098-\x007w\u00C1\x01\x05\u00B6\u00E1\x7F*X@\u00B0\x00\u00B0\x10S\r\u009605b\u00E1\u009F\u0097Hc \u00D5\u0087\u00B12\x03\x18\u00BB\u00E8\u00E5\u00BC\u00E2\u00E1\t\u0090\u0097\x7F\u0086\f:\u00D61b\rK\u0099\u00FBw\u00EE\u00F6\u00D0\u00CC\u00D0)3\u008C\x180\u00A2a\u0084\u0095e\u00EDbj\u0080\u00B6\x01*\x03\u00D0\u00D2\u008E\u00E0\u009A-hs\u00C8\u0090ff?\u00CE\u00D2\u00A8\b\x01\u00CB\u00A9A\x06\u00A0\u0089\u00B9\x18K\x1A\u00B3\u00D9\x0BL5\u00D1\u00E6\u00FF\u008A\u00C7gj\u00AA\t*\u0083\x1Fs\x06\u00E4}(\x1A\u00BA\u00D7`0\x17g\u00B3\u00F1\u008A\u00A9/v\x1DK\u00B8!\u00CB\x12\u00C2\u00A4\u00AB\u00D9,\u00FD\u00D9\u00A4\u00F9\u00BD%\u00FAS\u0099#b=e\x06\u00C8\u00DC\u00FF\u00EC\u00B3\u00CA\x1C\u00C6\u00A6\x1D\u00811\x03\u00D4\u009F\t\u008E\u00C0\x04\x16\u00D1\u0099\u00CFkc\x17&j\u0089\u00C4\u00BCU4e\u00CF\u00E0\u00CF\x1B\u00CF\u00E4\u009F\u0083i'\u00A3\u00CF\u0087J[\u00D0\x0E;\u008Fr<\u00F6\u00A7\u008E\x14w2\x7F\u00FE1\u00CD}\u0096(5\u00DA\u0091\u00A9\x0FV\x1D\u00BC\u00A3\u00BD\u00EF\u008DO?\u00F8\u00C6\u00DF\u00FE\u0089#\u00BA\u00F8(\u00DA]\u008A\x10>\u00AB\u009F>\u00E3Y\u00DB?\u00F3\u00E2\u008F\u00AD]\u008D\u009D\u00BA^B\u00DC}M\u00B1\x0B\u0082u\b\u00E6\u00A2\u00E6\u008F\u0085\x05\x05/\u00E0S\u00AE,u!\x1Epd\x10\u00BF\x03\u00F1]\u00DCX\u00D8\u00E2\x18\x19D\u00AA\x07K\u00CFGH\u00B3\x1D\u00E3\x0B\u00E6\u00E8:\u00C3(\u00EB`\u00D4!\x03\u009E\x15\x03\u00BA641\x06\u00D0\u00D4\u0088\u00CA\u00CD\u00A0h\u0093\u0085\u00D4\u00A0\x13\u008F\u0082\x13\u00B2\x0ENX-~\u0097N\u00E3\u00A3K?\u00D8B\u008E\u0094gM\u0087l\u00CC\x19\u00DDs!\u00D6K>\x02]h\u0094\u009A\u008A\u00D0\u00C9\u00AD\u00C0\t2\u00AC9R\u00A8{~\u00DF\x11\u00D7\u0080@6R~WwwB\u00A8Z\fn\u008F-\u00EA\x04u\u0082bhS\u00A2\x02A\tSN4\x02\u00B1\u00DC\t\u00D6Q\u0088x\u00D40Lj\x10\u00B0\u0094d&cVn\u0098,v\u008A\u0090\u00F6\x00Pl\b6_\u008CTl\u00B9\x1CUa\u00F5.V\u0095N\x12\u00FD\u0098\u00EF\u00C4\u008B\u00C1\u008A\u00BB)s\u00DE\u00DD\u00D8\b\u0081H\t\u00A1\x0E\u0083K\u00A6=\x11D\u0088j<\u00E2\u00A4)\x02\u00B5l\x1C\u00B8\x05\u00FB\u00DE\u00F9\u008A\x17/\u00AEx\u00CD\u00BB\u00E7\x0F\x7F\u00DA]\u00B6\x15\u00FD]\u00C6\x10\x0E\u00EA\u00DE\u00D9\u008B\u00B6^\u00F8\u008A\x0B\u00E6o9\u00D1\u00EA\u00F0\u00D5$f\u00FE\u00D9bQ\x00\u00B7\u00C0\u0098\u00C2\u00CC'\u00A5\u00A9\u00D9\x15\u00C8\u0087\x07\u00A4\u00FA\u00D0\u00C4\u00C3\u0093\x15\u0090\u00F0F \u00EA#0]vt\u00AB|\u00B5g7G\u00D2\u00B6<\x1A\u0080\x19T-K\u00A23\u00BE\x00n/\x10+\u00BD\u00DAK\u00A6b\u00C3\f#\u00A5\u0086\u00B8g\u0081\u00AE\u00BE *'\u00FA0k\u00D3\u00ED\bp\u00F1h,\u00FA\"\u0091\u008A\u00AB*\u00AD\u00D9T18}\x1E\u009D\x18\x1E\u0085JT.\u00AD\u00C3bo\u00F3\u00AD\u00939\u00AFYx\u0084\u00EE|/pI\fD\u0090R\x10\u00B9C\u00F5\u00D0M\u00CC\x06aR\u009BC\u0099\u00E8\x0F9\u0086J\u0097\u00F5p\u00B42\x16\x0E\u00A8\u00FA\u0092\u00C3\x1E\u00C0\u009C\x06'\x1E\u00B7#\u00D8}\x06\u00EFi\u0084\u00EA2\u0099G0\u00A4\u00F46\x04*\x10\u0080\u00D9\u0087\u00D9\u00F7\u0088(\u0082\x13\u009E\u008E2\u00C7\u00D2<\u00F1\u00C9\\\u0094\x18\x07c\x022&\x12\u00D3% \u00DD\u008D\u0090\x03R\x1D\u00CA\u00F5\x1E\u008F\u00E9?L\u0083\u00A4\u0080Pa\x14f\x10m\u0082]\u009F\u00FF\u00F8\u0089\x07\u00DF\u00F4\u00A7\u00AF\u00D0[>\u00F3]\u00F2\u0080\u00AF^\u00EE\u0098\u00C6;\u00A1\r\u00B7\x7F\u00CA\u00D1\u00B5o\x7F\u00CE\u00A3\u009E\u00F3\u009Bx\u00DE\u00D3o\u009D\u00DD\n\u0095\u008E|\u00DE\u00E9\u00E2\u0084\u00FF\u00D7\u00DC\u00C1\u008254/q\u00A6\u00BE=\u009B3\x04\x117vk\u00AC\x1D\u00BA\x0E\x05\x00\u008B\u0087\u0088\u00A4\u00DB0\u00D5\u00D9B\x02\u00C2o\u00C6\f\u00809D\u00D6\x00Y\u0083A\u00E5L\u009F\u00CA\x14\u00E6\u0099\u00FB\u00EE\u00FDw\u0087\u00AB\u0082\x01\u0083\u00E7.\b\x04M\x04\x01u\u00A5\u00C0^G\f\u00BC&\u00E11\u00AD\u00D6\u008E\x06\u00DC\u00C0H\u0098ly\u009A\u00CE\u00D0\b\u00AB\u00A3\u009E\u0082\u00CFeQ'\u00D8\u00AF\u0090\u00D1DNE+4\u00CF-i\x1C\u00867\u00EF[[<\u0087\x05<\u0091\u00B90\u00D8\u00AB\u00F2\r\u00BBg\u00D4\\\u00F0\u00E3\u00B9\u00E35]\u0081-\u0098\u009E\x10\u00AE\x0B \u00EEuI\u00ECA\u00A3g\u00FE\u00C6O\x11v,\x16\u00C5\u00D9d%~\x02\u00EE\u00E5q\u00E9+\u00F0\u00C5\u00C4\u00D4q\u00A6\u00AD\x07s\u00A1\u00DA@\u00E4\u0094\u00C4\x18k\u0083a\u00D2<Ki\u00BE\u00AE\u00AB\u00B8\u00A8*\u00BC\x01\u00EFA\x01\u00E2L+7\u00BD\u00C9>'\u008C \u008EI\u009EP\u008D\u00CA\n\u00A0+Z\u00EFh7\\\u00F3\u00D0\u0083\x1D\u00E3\x7F\u00FE\u00CB\u00F7\u00BC\x13wA\u00BBKl\b\u009F\u00D2+\x1E\u00F9?\u0096\u00BF\u00FF\u009C\x1B\u00E6_\u00F4_\x0E\u0089\u0085&\u00BFt\x00\u00B7\u008Ab/\u0080\u0083*\u00D8\x12`\u00E16\u0083\x11\u0096\u00A46\"\u00ED\x07\u00F69\u0099I\u00A8\x10\n\x0B?\u008Ec\u00F4<\u00A4}\u00816\u0083\x11st\u00DB\u00EA\u00C5m\b\f\u009E\u009E\u00C1\u0092\u00AB\u00D7L\u0095\u0088|\u00C9T!\u00EA\u00F7\x0E\u00C1\u00E8\u00EA\u00C4\u00A4\u00E8{\u00842\u00A7\u009A\u0090\u00B5\x15\u00CB\u00B1\u00D5]\u0099\u0088(\u0088@\"\u00CA1\u00ED\x01\u00A9\u00BFS\x0F\u0097<G\x19Z\u00CD])\u008C)\u0089\u009A\u009D!k46H\u009FC:\x170%\u00DA\u00E0\u00C4T\u00C6\tVy\u00AE\u00EE\u00CC\u0086d\u009E\u00ABI]\u00E5Y\u00CA\x1F\u00B7\u00A2c\u00D2z-&cP|6\u00BD\x07\u00EF\x13\u00C4\u00BA\u00F3\x1E\u00E9\u008F\"cL\u009B\f\u00CD\u00C9\u00B9\x7FW\u00CB>\u0094\u00D7S%\u0090$F\u00BE\x0F/{\u00C7\u00C4x\u0089=1\x1C\u0091M\u00E2MZ\u008C]&\u00E3\u00A4\u00F0\u00E1\u00B3\u00DFN\u00A3As\u0095n\x04\u0098\u008DK\u00B4\u00F7\u00BE\u00F19[\u00EF\u00FE\u00E3G\u00DE^7G\u00D3\u00EEt\u0095a\u00EF\u00C1/\u00CC\u009F\u00BF\u00FD\u00C2\u0097\u00BDc\u00ED]\u00F31\u0092]\x0E5\x05\u00AB\x18\u00C9\u0088z\u00AF\x00\u00BBT\u00B1\x0E\u00C16\u00CA\u0094\u008A\u00A1\x00\u00BE\u00E6\u00EEn\u00AA\u00A5d\u00A6\u00E2\b\u00DA\x10\f&\u00AF\u0094\u00D8\x07m\u00B8\x1D\x03D\u00E7hn8\x1C}\u0081Z\u00C2\u00B5%M's\u0090\u00C2\x04\u009C\u00A8\u00C1\x1D \u009A\u00D9\u0097}\u0081\u008Chh\\\x10\u00AE2\u00984pi\\-\u00D9~\u008E(\x17\u00BCd\u0096\u00A1b\"\u00C5s\u00BA\b\u008D)\u0095|\u00EE(]C\u00CAH^\u00EBY\u008DR\u00CF\u00ED\u00D3\u00EAQ$\u009C\u0094\u00F6~\r\u00AD\u00F1 |e?\u00E9y\u0090IG:\u00F9\u0087'\u00D9)\u009E\u0090\x14\u00FA9\u0093\u00C5\x04\u008C/\u00A7\u00A4\u008F-\u00E3\u00A3\u00E2r\u00C4\u0091z\u00DF-\u00FAQ\u00F4\x12\u00C8H\u00BB\u0089\u00C3v\x00\u00A1\u0086\u00E5\u00E3\u00DB\u00DD\u00F9\x1EZ\u00B3~\x18g\x15\u00EB\u00B1\u008CSl\u00E3\\\u009B^\u00CD\u00E35\u00A9\u00C9k;\u009A\u00AA\u0090o!m\x14\u00EA\u00FE\u00F2\x05b'\u00A8\u00FA^W\u009B\u00A3\u0082\u00A2\u008F\u00F9.b\x1D\u00B3\x1B?1_\u00BC\u00E3\u00CF_\u00A6\x07>\u00FFh9\u00E1\u00AB\x16;/>\u00FAv\u00A7\u00AB\f\u008F\u00FD\u008Do{\u00F6\u00AF\u00CB\u008B~l\u00FFl\x13\u00AB.\u0094;\u00D2FX\x04\u00E2L|\u00F7f\u00E1r\u00A5\u00AD\u00A0\u0085<`H-\u00A1(\u00E1s\u00FC\u00D7\u00ED\x0BI?\u00ACz\u00BC\u00E6\x7F\u00EBP\u00B1\x12*\u00C9\u00BD\u00D3B\x1CP\u0097\u00B9\t\x10'x\u00C2\u00DFT\x0B\u00E0\x16\u00E8p\x1DJIv\x02%.s \u00AA\x04\u00F3\x01\u00B2\x1F0X\u0089\u00D2:\u00F7U\u0088x\u0085\x12\u00B0\u0094\u00C9\u00DF\u0084\u00AF\u0094\u00D4\u00DE\x187\x10(\u00C5\u00A5ZQeR\u00DA\u00C3\u008D\u00A5\r\x11\x06\x1DR\u00CF\u00E1\x7F\u0098&\b\u00EB\u0093\u00F9X\u00F0N\u00C2t\u008B]\u00E0\u0082vD\u00C2\u008F@a|dB~P\u00CBx\u00A9\x12Q\rb\f\x07\u00D5+M\x0BId\u00B4P\u00D2\x07\u00DDfNF\u00A2sJ\u00F1\u00A2\x06\x043\u00B6\x0B\x15,\u00F0\u00E2\u00EA\x11U\t\u008FgH\u00B8\u00EF6\x0EWIb\u00F3[\u00DA!\u00AAJ@B\u00E7\u00F3\u0087zP&\u00A6\u00AA\x11aK\u00D1`4\x03\x04\u00B8\u00EE\u00DA\u00D3\x0E.\x16\u008B\u00E7\u009F\u00FF\u009E\x0Bq'\u00B6;\x15!\\\u00ADW\u009D\u00F53[\u00FF\u00E6\u00D9{\u00E77\u00E3\u0090\\\u00EF\x0E4\x05\u00B0G\x14\u00BB0`\x1D\u0096x3\x13C\x0B\x16s\u00D2\u0083A\x00S\u00B0F\u00B3Q\u0087\u00E7@\u00C4\x12\u00F0\x00\x18ihj1\x06\u0090\x19D-`\u00BA\u00EB\x1C\"t-\u009A\u00E4\x17w-\x02\n\u0096J\x1F\u00FC.44j%F\x1F\u0095\x11T\u00A6+\x19\u0081\x0Fe:x\r\u00B7p\u00F7\u00E5\\\u00F4\u00EF\\\u00CD<\u00C6\u00DE\u00AA\u00FF\u00DD\u0089^\u00F3Nv\u00AC\u0095\u00FB\u00D8\u008C\x06yN\x02_lB#\u00F7S\u0090\u00CC,F@\u00E9\u00E6\u00BF\u00A8\u00AF\u00DD@\nH\u00B1Z\u00B3))\u00C1\u008B\u00FF=\f\u009D \x120\u008FBTb\"qNR\u00AF5\u0098\u009C1\u00A2\x1A\u009D\u00C8\u00FE\u0086\u00F2\u0099\u00CF\u00DB\x1D\u00BD$\u00E7!+\u00A8\u00BE\u00A7@\\\u009A\u0088\u0083\u00E5\u00D32\u00EF\u00C5v\u009B\u00AE\u0088!\u0099W\u00CFk\u00F9\u00BD\u009E\u00A7\u00FE\u00DE\u00D5\u009D\u00DC\u00EA\u00F1\t\f\u0080\u00C2\u00EA5\u0085)\u00D6\u00B9\u00F5\u0093\x03\u00EC(0\x1B\x0F`\u00F3\u00E27>{\u00F3\u00D27\u00BEn\u00E3QO\u00B9\x12wR\u00BB\u00D3\x18\u00C28\u008E\u00F2\u0082\u00AD\u00E7\u00BE\u00E4\u00EF\u00E6\x17\u00AE/\u009AW\u00C4=\u008A~\x14f;\u00B8\tK\u00AC\u0089\u00A1\u0085Z:mA\u00A9\u00EA\u00FFI\u00CD\u0091\x1E\u00FF\u00EA\x04R41\u00F2\\\u00CA\u0080\x01\u00A6&\bf\u0098\u00D3\x06\u00A03LU\x02\u0097\u00D2\u00FE\u00D7\u0089\n\u00C2\u00E8f\u00DC\u009F\x06\u00C0\x0E\u00A0\u00EB\f\u00CD!\u00BF\u00A5d\u009B+R\u00A4\u00EC\u00B1P!\u00AA\u00A6\u00B1\r\x00\u00B4{\u00A4\u009FL\x19\fd\x06\u00ED\x1DQA\u00D9\u00F5\u00DC\u00C8] \u00BBc\u00E0Q\x18\x18\u00EB\u0084\u0096\u00F3}\u00CEr\x0Bu\x12\t\u00E7\u00DE\u00C3\u00BD]\x1AUo&\u0085X\x0B\u00B4\u00C4.z\u00B9\x1A\u00C82\u00EC4\x14\u00BA:@f&\x00\u0098?\x01&$y\u00DF\u00A2\u00CE\u00F3\u009C\x00v \x07\u008E\u0094L\u00B3\u0097\u00CFD\u008D\u00B5\u00B0\x0E\u0099M\x12\u009C\u00B8\u0084\u00AE\u00E6K\u008B\u0094d\u00D7bN\x035\u00C5\u00D3J\u00F4\x17OE\r228\u0092\u00DFc>*c\u00D7r\u00CC\u00D7\u00816\x00\u00BEq\u00AD\u00F2=\x10\tHv\u00ED*\x16Yz\u00DE\u00D7\u00C6\x7F\u00E2\x17>\u00B1~\u00F0m/\x7F\u0089\x1E\u00B8\u00E1{\u00E4\u0084S\u008FN\x02\u00AF\u00B4;\u008D!\\\u00A4o\x7F\u00C6Kq\u00DE\x13\x17mt\u00B9\u00FC\u00A5\u008D\u00EF \u0080[`\u00B5\x15\u00D7\u0094\x1A{\u00A9\x1F\u00A4fN\u00EBPw72\x1B\x12\x1E\u008DH\u00DB\u0082I\u00F3\x063\u00B2)\u00E6P\x190b\x0E\u00C1<\u0082_\f\x11T\u0083VZ\u00E3G'*\u00D1\u00861`,\u00F7[\x10tF.\n3\r\u00FC\u009E\u00DA\u00FC}K\x10p\x1A\u00A4\u009C\u008D\t,\x0BO\u0080\u00DC\u00D8\x05\u00A0e;\u00B6k\u008B\x05V\x10\x01\u00FB\u0093\u00B2\u0088\u00B8\u00B0\u00C85\u00E9\u00EB\u00E7\x16l\n\u00B0\u00A4\u00BDAz\"\u00D2\u00BA\u00E8\u00BC?Z\u00D0\u00C3\r\u00C7G\u0091X\u00E7\x14[\u00CA\u00F8\x01\u00B8\x1F\u009F\u00CC\u00A7\u00C0nk\u00FE\x1C\u0082\x18w\x12>Q\u0090F\u00FF\u00E1\u00C5U\u00B8*\u00A5EpV\x06\u00E8\u00F51z\u009B\u00C2y\u00A2\x0E\u00A5\u0094\u0095\u0098\x16a\u00DDu\u00E5\x1E\x0EH\x06J\u00A6\x14\u00CC\u00C8\x11\u0094(\u00AC\u00DC;%}\u00F7q\regm\u00A2\x1C\u00CDg\u00ED\u0092\u00CC\"\u00F6\u00A8(s>)9\x7F\u00C7\u009A@1\\\u00F2\u00F6'n\u00BE\u00E5%\u00CF\x00p\u00DE\x11]|\u0098v\u00A70\u0084\u00EB\u00FA\x17\u00EF\u00FF\u008B[\u00BF\u00F8\u00C2k\u00D6?\u00F3%\u00B2\u0081l\x02\u00E0V\x00\u00BB\u00B4a\x1D\x1D3\u00A1\u00F4\u00CF\x05\u00D0\u0080\x02%\u0093\x0El\u00BD\x12\u00B8[(\u00B2`\x06\u0088%)\u0089G\u00AAu\u00C9(\u00C4\u00B4t\u00DBw\u0093i)y\u00BB6,\u00C5l\x10<wBX\u00E5\x7F\u0090\x06fDr\u00B9G\t\u00B5B\x18\x1D\u00E2\u00E8\u00B8\u00A1(7\u0091\x19\u00C9\u00B5(a\rG\u00CC@\u00CAP2\t'V\u0095\u00E9y\u00A2\u00C9\u0084\u0094k^b\u009D\u009A\u00CB\u00B1O$}\u00BE\x03\x12~\u00D1\u00F3\u0085\x05N\u00A8'\u00BB\u00E4\u00E5Eua\u00FB\u00F1\u00D8+\u00A1\u00CA9-\u00E7\u00C65\u0096\u00BB\u00B0J\x18\u0081\u00C8\u00E1\u00B1\x0F\u00CC\u00D5\x10^\u00EBs\x13\u00B0\u00BF2P.\b~V'\u00E4)\x1C7\u00F2\x1A\x0B\u00A1[\u00DF\u00A6\u00DA1/\u00A1>\u009F\x1B\u008D\u00B5\x01\u00BAD\u0098H\u00E39\x15\u00901\u0088?\u008D\u00A0\x1C\u008E\x0B\x04H\u00B8\u00CCw\x06\u00EF\u00DD\x1E\u008BP\u00ACm\u00ED\u00C3\u00FE\x0B\u00CF\x7F\u00A1\u00DEt\u00E5\x1B\u00E4\u0094\u00B3\u00F6\u00DC\u00E6\u00E9w\u00A0\u00DD)F\u00C5oy\u00F6\u0099\u00CF\u00FF\u00DD\u00E1\u00F7\u00BEw9l}\u00C9\u00C8\u0080-\u00C2C\x05X\x070\x17/v*40j\u0098\u00F7X-\u00B9z\u00BC\u00F9m\u00C0\x1C\u00A2s\fX\x03d\u008E\x06n\x1C\u00DF\x1C\u00DA'\u00A4\u0096\u00E8\x01.\u00E7\u008D\x014\x1D\u00D0\u00E8\u00BE\u00E39\u008E\x12Z\x04\x10\u00F1~t\u00AF\u00F9\u00B9\u00D2\u00DC\u00D8\u0098\u00D7\x00\u00F4\u00EFs\u00C7\u00E74\u00E0\u0089G\"\u00DA\u00F9\u00C5\u00855qw9k\u009C\u00C4\x01\u00B0\u00FF!\u00C6\b\u00BF?&\u00A8\u00C6\u009E*~W\u00B2\u00B5\u00EA\u00E2\u00F4\u00F1G<\u0085\u00DB;\u00C2\rI#f+\u0092^\x12\u00E6\u0086J\u00E1\u00E8\u00A5DuJ\u00B8M\u0081\u00AA\u00FAX\u00FA\u00B5\x11\x19\u00B8\u00FD:\u00EC\u00DFF5-\u00882\u00E3\x14r\u00B5p(I\u00E0t\u00EBN\u00EC\x0EZ\u00C6\u00AB\u00CEP'(\u00A0el\x02\u00A3;\u00A3w2 )\u00E7\u0093q\u0092)\u00FA\u00C8\u0098\x19\n\u00A4\x1A@\x04\u00E5\u00EFN\u00E2>\u00D8\u00C9\x1Ci\u00A7\u00E9Ts\u00C4\x02\u00A2F\u00AAa\u00A9\u00A2\r_\u00BC\u00FE\u00C4\u00ED}\u00DB\u00EB\u00BF\u00FD\u00D7\u00FF\u00EB\u00CDw\u009C\u00C2\x0E\u00DD\u00DA\u00ED\u009Fr\u00DB\u00ED\x1F\u00F4cg\u009E\u00D7_\u00F9s\u009B\u00B3}w\x1A:\u00A8\u00EDV(n\x05\u00B0\t\u008BM\u00D8V\u008BI\u00E8\u00EA\u00F1\tb\u00DF\u0097\u009A\u00A1\u00CC\u00A33\u0093\x0ES\rF\u00CC\u00B1\u0088X\u0082\u0099\u00C7\x15\u00CC\u00D0\u00A5a\u0094\x01\u00A3\u00D0\u0097M\u00A16\u00B3\u00ECF\u00CF9P\f\u00A6\x16\u0088\u00A9\f\u008C\u0088\u00E4\u00BD\u0098\u00D7`\x7F\u0083\u00E7<\u00D8_\u00C4A\x04\u00E1f\u00AEBz!$\x18R\u00AEl\u0093\u00E4\u0096#\u00C0`&\u00DA\x02<F\u00BF%\u00B2\u0099\u00C61T+\u008AD\u00FF\u00D3\u0080(\x1E/)\u00D8q\x0E\u00CF+}\u00FB\u00EF\u008C\x7FPa\u00EEB\u00BAg%\u009E\u00A7x'\u00D4\u00C7\u00A5\x19\u0097\u00A1\u00931\u00D6\x7F[\u00B9\x7F\u00F9\u00C3\u00CA\u0098\"\x7F\u0083\u00B1\f~\x1F2\u00A9\u00959\u00B0V\u00ECC\u00BAz^\u00AAaL\u00E5\u008E\x1C\b\u00CE\u0081\u00AE\u008E\u00D7\x19\x1B\u0099%\u008FM\u00EC\x04\u009C\x03\u00FB\x0B&Z\u00FB\u00AA\u00DF'\f\x1F\t\x0Fn\u0087\u00B0\x06U\u00E8\u00A5o\u00F9\u00B9\u00F1\u0083\u00AF:\u00F3\u00B6\u00CF\u00BC\u00FD\u00F6%\u00AB\f\u00E7o\u009D\u00FF;\x17\x0E\u00EF\u00993d\u00F8\u00CEl\u009C\u009A\u00BD\x10\x0Bk\u0086o\u00C3\u00A6\u00BEc\u00A2\u00D6\x18\x05C\x10\u00A3\b\x06\x15\u008C\u0098a\u00C0\x1A\u0096\x1E\u0081(\x18\u00B0\u00C4\fC\u0091\u00A0\u00DD=\t\u008CAXj\u0091\u0082\u00FEoS)v\x062\u0082D\n,\u00EF\u00A6\u00E5\u00BB8\u00E1'\u00AA\x00\x02f\u0092\u00F0(\u00F9]\u008F\u00B6\u00A2\u00AE\x02\x0B\x1C2\u0083\\D\u00E0\x11U\x14\x1B\u0082\x04\u00E4,\u00FAz\u00A0\u008D\x0E\x15\u00F7\u008E\u00F8\\M\u00D0\u0084\x12BK\u0098\x16\u00A0\x16\u00FA\u00DD4\u0080\u00AD\u009B\x07\\Jz\u00DC\x07\x04\u00B1\u00FF\u0082\b#L]b\u00D1\u00C5\u00C8\u00EB\u008A\x14\u00A7}C\u00E3\x1B_2\u00E7\u00DC\u009FS,t\u0098u\u00AD\u00C2\u00D7F{\u00C0\x04\u00EE\u00FB=z\u0095\u00DE\u008A\u00CC6\u00F4\u00CF>'\u00A0F\x11\u0092\u00BD\u0095k\x1C]u@\u00B1\u008D\u009D\x16\u0095\u0096\u00D7\x07\u00E2\u00A8\u00CFE$\u00E2\u0089W\x05E\u00D8\u0089\u0082pG\u00A2\u00C3\x18E\u00A5x\u00CF\u00A0\u008C\u00F1W\x1BFm\u0087\u00A6\u00B1\u00B5\u00EB?3?\u00F87o\u00F8\x1D\x00?x\u00C8\x13\u00EE`\u00FB\u0092\x10\u00C2\x07\u00FB\u00A5g\u009F\u0087\u00F3\u009E\u009C\u00BBW\u00DC\u00B9\u008D\x12\x7FS\u0080/B\u00B1\t`\u00A1\u008A\u0085\u00A2dC\u00AA\u00A3\x03\u008FPT\u00C5(\x03\x14\x1B\u00E8X\u00F3D#\u00F3&\u008ChX\u00AAI\u00F1\u00AE\u00CD\u00AB\u00E6\u0099d_\u00C2\u00D1\x02f\u00FEo\u00C3\x12\u009Em\t\u00BE*\u0093\u00D8d\n\u00E9\x04#q\u00D2n\u00D1\u00CAw\u00B8\x141cf\u0084\x15O$\u00B3\u00C3u\f\u00E1\u00E2\u00D4\bw\u0096\u008C\x1Ad\u00B90\x15\u0087\u009C\x02f\u00E0e\u00B5&\x01\u00EB34\u0088\u00BB[%$9\x17\u00AC6\u0097\u00F4T\u00BE\u00C2x\u00C9\u00F0\u00EC6E1B\u00D5\b\u00B6!\u00AB\x0B\u00C3\u00E6cD\u0093\u00AC\u00A9\u00E2F\u00B6\u0088\u00D6\x14\u00AA?\u00B0g\u00F2{(w\u00DE\u0085\u00C0jQ\x02\u00DC\u00B7\u00A2\u0081\u0090\u00DC\u00A0}\u0087\u00A1\x11{n\x1F\x0B\x03\u0083\u009A#\u009BT\"\u008Da\x07\u0083*\u00E3\u00C1`\u00E5\u00DA|\u00AE\x12\u00AD\u00C0\u00BC\"\u0082xV\u00DA\u00A8\u00A6.a\u00F6O\u0081\u0091q*LG\u00B7\u00E7\u00E1x\u00D8\nbp\u00C4\u00A1b\x1E.D\u0086)\u00EDSE\u0088\x04_\u00A2\r\u00C4\u009F\u00A7\u00B9\u00DD\u00A4\x03\u00E8&\u00DA\u00E4\u00D2\u00BF}\u00F2\u00D6\u009B\u00FF\u00E8\u00EC;H^\u0087lG\u008D\x10\x0E\u008E\x07\u00E4\u00B9[\u00BF\u00F5\u0082O\u00CC>j\x05*\nG\u00BD3\x1B\u00F9\u00E1>(\u00F6B\u00AC\u00AA\u00A1\u00B8\u009C\u008C\u00C9O\u00AE\u00D9\u009D\x19\u00A8\u00AC{\u00AC@\u00C2\u00CC\x0E\u009B\u00F8\u00CE\u0097\u0080\x06`\u00869\u00A6)\u00CAF\u0090N\u00ECB\u009Em\x0B!\u00CBm\u00B0z\x12\x1Cm\u00D0\x1A\u00C1\rh\u00D3(\u00D9\u009D<c\u008E\u00DC\x1D\u00A9\x13\u0088h\x12\u00DDBw\u00B12\u009F\u00BE\x18\x05\u0098d;\u00D6\u00B8\x02\nD\u00B1\u0085\x12\u00F1\u00F9P\u00E4vq\u00D4\u00975\u00AE\u00B5\u00FA\u0086\u009Cg\u00FF$(\u00E7\u00DAYI\u00AC\u00BD\u00E8\u00F7\u00C5\x10\u00A6\u00D9\u008B\u00DDXR\u00DF\x16 \u00B6z\u00AB\u0083\u00D3\x01\u00AA\u00CC\u0098\u00D4r\r\u00AF\u00BF\r\u00C4\x19\x1E\u0099\u009A\u00EC.ak\u00C8\u00AAH%N\u0081\tv%\u00EE\u0080\u0086X\u0080\u0092\x1Fn\u00D4\u00E5\u00A4\u00F2\u00F9\u0090\u00F3=\x19W\u00DA\x14\x18\u00BC\u0094\b\u00AC\u00B8E\u00A5\u00CCQE\r\u0081\u00FA,z\u00C6\u00FA`\u00CE\u00F9r\u00BA\fx\x19\u00F8\u00BA\u00D3\u0088\u00A9\x006n\u00BD\t\x07.\u00FC\u00CB\x17\u00E8\u00BE\u00EB\u00BECN|\u00D0Q\u00C1\u00F5\u00A3f\b\u00EF\u00D3\u00CB\x7F\u00F8\u00D5\u00F2\u00BAG/fGu\u00DF#j\u00ACy\u00FBE\u00B5\u0092k.K1Sc\x0E#hS\x104]\u00C7\fs\u00ABQ\u0080\u00E6q\x063\u00E4\u009E\t\x06\u00D3US\u00BFVm\x18\x1B\u00F3\u00E5\u0093\u00C97'\u00F4\u0091\u00FA\u00B9KK\x0Bc\u00B5\u0085>\x03C\u00A5\bBSG\x16g4\r4P\x02\u00DC\x1E\x1E\u0080I\u00E1\u00CE\u0085H)\u009C\x069\u00B35y\u00AD(\u00C9\u00FEke\u009F\u00EE\u00C93\u00A2\u00CD%\u00AE\u00C4\u009A3)J\x15\u00C5I\u00A6y\x1C\x02\x17Z\u00B7\u00E3\u00DD-i\x1D\u00E2^\u008D\x18\u0086\u00AF\u00E3\x1EFK\u00B0\u00B2\u00B2G7\u009AV\u00A3\x163\u0081\u00B2\u0086=\x07\u00A1\u0086\u00E0\u008Ad\u0081\x1CSm\x1AI\u00D9\x18E\x17Xm\u0087\f&\x120%\u00D9\u00C3\u009F#\x18\u00AA\u00C2n\u00EF3\u00EEns\u00C1\u00CA\u00CA*K \b\x1D\u00A0\u0092F:\u00CFRh\u00DE\x07\x03\u00A6\u009C\u0099\u0091\x17\u0084\x17\u00C1\u00A3E3\u00A2\u0081\f\u00D7\u0082\u00E8\u00C9\u00BC\u00CD9>B=5]\u00F8n'\u00A8\u00C3\u0099e\u00A8\"\u00FC\u00CC\u00E7+\u00AA\u0085\u00BFwn\u00C2\u00CB\u00B9#\x0F\u009F}\u00E8\u009D\u008F\u00DE|\u00DB\x1F\u00FD0\u0080\u00BF\u00C0Q\u00B4\u00A3R\x19\u00B6t\u00FF\u00F0\u00DA\u00C5\u00AB\u009E\u00FB\u0099\u00B5O\u0082\u00E9C\u0099Nt\u00D7\u00B5-\u00B1\nK\u009B\"\u00D8tMo\u00E9\u008C`[\x1A\x16\u00B2fFDI5`!\x16\u0094\u00B4\u0080`)\u00E2\u00C7\u00868Gai\u00CE\x195oU\u0091\u00BA\x0E\x18\u00B5E\u00D2\x13\u00D0\u00D0\u00B5\u00A1\u00AB\x17\x19\u00E1y@\u00E6=\u00A8\u00B8\x1Ab\x7F\u00A32\u00B8)\u00D5\u0089\f\u009Dr\u00C4\u00D0\f\u00B5\u00D0gR\"-\x10!\u00C4\u00C5\u0086\u0091(\x03\u00F9\u00BB\x1B\x1D\u0099xcp\u00D9\u00D5\x00I\u0088*Q\u00C4\u0083Q\x1D\u00EC\u00CEJ\u008F%\u00C6)\u0085[\u00985\u00D8\u00A8>P\x1D\u00A9R\u00D4\u00FF\u00FC|\u00A5\u00AD$\x1A\u00D5\x02S-x?\u0086\u00A5\u00F3\u0098\u00F8^\x16i\x0Ba\x02\u0092\u0087\u0093s_L^\x13\u00A1\u00DA\u0086\u00DC\u00C2\u00A8\u00E9\u0089E5iI&\x04\u0098\u00FFf9\u00BCz\x7F2f\u009E7\u00E4\u00BB\u00E0\u00EFJ^\u00C4\u00F7\u00C5\u00C7\u00F4\u00F7\u00C1\u0094xJpE2\u00E7\u0089\u00D4\u00F7\u00FB3\u0097#\f\u00B1+\x06O\u00E5\u00F6w\u00AE*Z\u00AF`\f\x07\u00C3\u00BB\u00D6\u00B6\x0E\u00A0\u00BF\u00FBo\u009F\u00AB{\u00AE=*\x0F\u00E2Q!\u0084\u008B\u0097\u0097<\u00ED|\u00FD\u008Bo\u00F6G=\u009A.\u008E\u00BA\u00ED\u0085b\u00B7\u0096\u00DC1q\t\u00ACs,\u00B1\u0086\x19\u00E6X\u00AAW\u00E8\u00C1\f\x03f\x18\u00A9\u0097\u00AAy\x00\u00A8\u00C7\x0BfX\u00C0\u00CB\u00A3\u00A9\u00EB\u00B5B\u00C8_\u0089\u00D9\u00EC\x0BT\x03h-\u00CE\u00CC\u00C9d\x02\u00AA\u00D6\u0087*U\x10[l#\u00A6.Q\u0084\u00A4\u00A1^\u00AF\u00C8\x1C\u0087\x1E\u0092H\u0084\u008B5-\u00D8*\u00C4\x14\u00B9\u00A0\x01\u00F8\ne\u00BCCK\u00D5W\u00E9\u00EB&a\x02\u00DA\u00E7\u0081dW\u00DF\u00A1]\u00E7\x12H\x11\u0084\u00CB\x05\u00E9g\u00D9\u00FF]\u00C2\u00C7\u00BD\u00BA\u00DF\u00A7\u00BB\u00C2TC\x1EaRXH\u00CC\u00A1\u00AC\u00B4<\x17\u00FC\u009DF\u00BB\u0094\u00C1\u00C4R\u00A6n1\u00B88\u008Dyv\u00FD8\u0091K\x19\u00FCS=\x00<\u00CFK\u00AE\x03\u00A6b\u00B0\u00A8\u00CC$\u009C\u0098\u0090\u00DF\u00DF\u0099\b \u00A3\u00DB\"+\u00E2(\u00A8\u00CB\u00E3\x13\u00D2\u0080\u00E8\u00EF\x03\x00d,9\x14n\x00\u00AE\u008C\u00BE\u00C4P\u00A8_?\u00D9\u0087\u00C2_M<#U\x11g>\u0082\u0086\u00F9\x15\u0097|\u00F3\u00D6\u00DF\u009E\u00F74\x00\x7F\u0086#lG\u00CC\x10Tu\u00F8\u00D9\u0083?\u00FB\u009C\u00EB7\u00AEu\x18tH5\u00E7.i\n\u00DB\u00A5\u00E9F\u00B0(+\u00A3\x18\x07\fXC\u00935\u00CCt\x0E\x11&'\u00CD0b\u0086&&\u00D1Fa\u00DC\u0080y\x00F\u00D0\u00AFN\x1F\u00FEDi\x00`\x1E\x0B\x11[z45\u00D1\x7F^\u00D1\u00C1\b7zQ\u00AATKsi#\u00EF\u00D7`\u00BEeg\n\u00E1U\u00D8\x01\u00DA$\x18\x15\x02\u0086*\u009A[\u00F0\u0094\x12<\x16\x14U\"\u00E4o\x023B1b\u00AF\x19\u00B3b\u00982O\u00C9O$\x07z\x16\u00C8P\x00\u0090qu~v5@5rv\u0092\u00D1\u0095\u00A8\u00C3\u00B8~\x063B\x1B4\u00AE~\u0087\u00D8iZ\x19\u00AF\u0090\u00CCJ\u0099\x02\u00DD\u00FD\u00DF\u00D8\u009B\u00D1G-\u0095\u00C1\u0098\u00AD\u00C0\u00C2\u008E\r-51U'\u008B\u00A0:\u00E3\u00B5\u00CEB\u00FD\tB\rX\u00CF\u00C2|~\u008C\u0084\u00A7\fX\"\u00D3HT\u00A4|n\u00C9\u00FB\u0090)\u0088o\u00FAjU\u0092\u00B8;\x15\u00D5\u00A0\u00CA8\u00874\u008D\u00F5\u00C1\x18\u00EC\u00A4\u0080\u00AD\u008F\u00A8\u00DA,\u00BA1\u00B3\u00F9\u00D6\u00AD8\u00F8\u008E\x0B\u009E\u00A3\u00DB7\u00BEF\u00D6\x1ExD\x1B\u00BD\x1C1Cx\u00DB\u00F2\u00A2\x1Fy\x03\u00DEpV/n\u0097\u00BB\u00BBmA\u00B0G\u00D4\x03\u0096\u00B2\u00CAQ\u00D3\x01s\u00CF#\u0098\u00C1\u00CA\u009C\u008D\n/\\\".\u00F7\u00FD|e\u0088q\x03\u00D3\u0091\b\u00EBI\u009C\u00DDa\"\x11C/\x7F\u00B4*\u00AB\u00AB\x12Le\u00EEE\u00D7\x0F\x1D\x15\u00A9Tqy4\u0080\u00C2\u00DA\u009B\u00BB\u00ABVtT.\u008E\tq3\\9\"\x1A+|\u00AF\f\u00C5\u00DF\u008E\u00D6s)I\u009Cx\x18z\\\u0089\x19(v\u00DA\u00B0F\u00F8\u0093d\u00B7\u00F1\u00C5C\t[q\u00EDY3\u00A2\x11.\u00F6\u00C8\n\u0094\t\u00AA\u0091\u00B8\x7FYM\u00D2\u009Cq\u0090\u00E0Sb&\u00FB\u00E2x\x14\x19i\u00C99\u00F0-\u00E0\u00E8^-Oa\u00FD\u00F9y\u00B1\u00E9m+D\u00C9q4\u00C4N\u00CF1A\u00EE2\u008C\u0099R\u00D8\u0096\u00F1d\u00C8\u00EA\u00F3\u00CBq8\u00EAP\u00B1\u00F3\u00C2>\u00C0s<\u00E9I\u00C9D\x15i\u00F4\u00E4\u00A9\u00E5])\x19d\u00FE\f\u00AA\x12Dm\x00p\u00E5\u00FB\u00CF\u00DA\u00FC\u00AB?\u00FE\x11\x00\u00AF\u00C5\x11\u00B4#b\b\u00B7\u00EA\u00A6\u00FC\u00D2\u00E6\u00AF\u00FD\u00DA\u00B5\u00EB\u00D7q\u00CAA\x18ww5\u00F5\u00FB\u00EE\u0085`C\x05\x1BX\u00C3\u00809\u00E6\u0098a\x01\u00C16\x18\x13g:\u00F3\u00E8\u008C\u00C2T\x06\u008F\x13\x103\u00D4u\u00D0v\u0090\u00CC\u0080\fB\u00C5\\\x7FZ\u00CEcP\r=\n\u00C6\f\\\u00CE021\x10\u0085\u00DB\x1E\u0094\u00B5\x18m\u00C1\u00D8\u00B5\u008C5pfA\u00D7\u00A0/\u00A4\u0088\u00D8\u00A3\u00F4p\u00C6\u00A4Z\u00B2\u008Cb<izk\\\u00E4\u00B1\u0080\u00AB\u00C4\u00A1k\rf\u00A8\u00F4Eg\u00C2%\u00D3\u0095c\u0092)\u00D0\u00F3c\u00F9\u00C4\u00B0j\u0085p\u00FF\u00C4\x02\u0084\x18\x1A\u00ADN\u00C4y\u00CC\x19B-G\u00C4\u00BD\x16\u00E3\u0086\x03\"\u009BR\u00B8\x1D\u00BC\u00C6b\u00CF\u00C1\f\u00C8\u00A2\x02\u00F4| \x18\u008D\u00D0c!\u0085q\u0088\x13\u00BD{J\u008CQ\x15C\u00A2\x1FWe\u009C\u00AC1\u00AExVN\b\u00FC\x19B\u00FD\u00D0\x1CK\u00BC\x1FH\u00CF|h\x00\x00 \x00IDAT2)\x7F\x7F\x1C<\u00BD\b\u00BC'g\u00D9kn\u00E6\x032\u00E4\u00DC\u00FB\x0EF?\u00B5\u00D5I\u00E9)z\x14`}q\x10\u00FB\u00DF\u00FD\u00E6_\u00D3\u00CD[\u00FE\\6\x1Ep\u0087I\u00F4\u0088\x18\u00C2\u00C7\u00FA'\x7F\u00E0\u00AF\u00DB_=bl\f\u00C79vm\u0084`\x0F\x04\u00BB\u00C4\u00EA\x1C\u00CE0\u0083e32'\u00C1\fg\u00AD\x18\u00EBf\x10c\x10\u00C8=\x16\u00AC@\u00AB1\u0091\x11\u00E9\x11\u00C8\u00FA\x04<f\u009F\u00C7X\u00E0R\x00/\u00E2Md\u00C0\u00921\u00A4\u00D0\u00FF\x1D9\u00B0\u00CA\u00D3\f\u0082\u0081Y\u008F\u00D5_\u00AE\u00E2{\x01\u00B4\u0082\x10\\\u00AD\u00E0\u00FD\x1A\u00DC5V\u00AC\u00FC(\u008CB\u0090P\x14\u00F9\u009B\u00AAB:\u00DD\u0096\x1A\u00BF\x1B:\u00F1\x05\u00C8 \x1F\u00C2__\u00BC\x11\u00DE\u00CFE/.\u00F5\u008A\u00CBW\u00D1\u0080\u00D6c\x1Cy<%\\\u00F0\u0083\u00C2{\u00F2\u00FA\u00CA\u00EC\u0090D\u00EEscS(\u00C9T\u00C4\u00C4Q\u00E8\u00E4\u00A1V\u00A1\u00F4SB\u0096i\u0083\u00C12\u0099\x02\x00f\x1F\x16\u00A3K\x19\u00D8*j`\u00BF\u00C5\u00E5\n\u00F3\x10\u00E5\u00FE\u008E\u0095<\u00CBg\u00AA\x0F\x15!\u00C5\u00F7\u00BE\u00D2o\u00B9'\u00DD\u00B5\u00DEO0\u00DA\u0095Qq\u00B8\u00CCg\u0099\x7F\u00E4\u0092Gl\u00BE\u00F5U?\x00\u00E0\u00AFWO;\\;\"\u0086\u00F0\u00EA\u00CD\u00D7\u00FE\u00D2\x17v}z\x02\u00BD\u008E]k8 k\u00D8\u00A3s\u00CCd\u00869\x1A\u00E6\x180s\u00A8O/\u00C2\u00A8\x1E\x13\u00E0\u00DF\u00850^\u008C`\u00C3=\t\x16S\u00B5z\u00CC3\u00A4=\u00A0*\x1C\u00F4H\u0088\u0087(CX\u008E\u00ADM\x18\u0087@0J\u0095\u00E3l\u00CC\u00A5\u00ABe\u00C1\u00EDy\u00F2\u00AF\u00C0X\u00BF\u0086\u00E7\b\u00A6n\u00CEC.< \u0098\u00CB\u00E4\u00FA\u00D2'\u00A5\x1E\u00C7\x1A;9\u00C5@\u009D\u0089q\x0B5Bog&\u00C9\x07\u008A\u008A\"\x15\x0Ep1S\x15J\u00C8\x1D\u00DF\x05\u0098\u00D6\x13 %\u0093\u00C0c\u00A0S\u00E6P\u00FA\u00B1\u00CAHb\x04\u00C9\u00B4n2\u008D\u0089\u00C4\u00ADh\u0096(\u00CA\\\u008F\x10xl\x1D\u00E7\u00A3>W%\u00E0\u00AA\u0096\bl\u00AD\u00AC\x14\x0FV\x1ASW\u0086\u008BJ\u00F0\u00E5\u0084>\u0094gc\u00FF3djt\u00B9\x07U\x03E\u00B9o\u00B6:C\r\u0082\u00F5\u00AD\u00FD\u00B8\u00F5\u00A2\u00F3\x7F\tG\u00C0\x10\u00EE\u00B0\u00DB\u00F1\u00E3\u00FD\u00EAG\u00BEux\u00D3\u00D9KYB\u00CB\u00FF\u008EE3\x0B\u00FE\x00\u00C5:\u00F6\u00A0a?f8\u0088\x01\u00DB\x10l\u00A3a[\x1A\u00B6\x01l\x01\u00D8\u0086E$.\x01l\x0B\u00F7o\u00F0hEa\u00F8\u00B2\u00FD\u00D1\u009E\u00ABJ\u0097\u00A2\u00AB\x12d2\u00A8\u00C1K\u00B5fB\u008D^l\u0081:\u00F2x+\u00E7\x0F\x18\u00DD\u00DB\x11\x05R\"\u00B1I\\j\t\u00D0\u009C i0\u00EC\u00EE\u0092r\x03\u00A9%\u00FA\t\u00CCHg.B\u00EE\r\u00D1\u0099\u00F3\u00D0\u00FC\u00CFU\x17\t\u00B7\u00A0\u00F5),\x0E\x02\t\u00F7&\u00C2\u00AB\u00A7N\u0093\x19\u0089g\x11\u0084\u008C\u00A9\u00F0\u00F14\u00AB\u00C0\u00C4\u00F8\nV\u0084b\u00A2T\u00BAS\x19\u0088\u00D5\u00C2\u00E8\u00CB\u00F8~i\rh\x12\x02^buq\u00FC\u00C0D\u00AD a\u0085\u00EE\u00EF\x7F\u00F1y\u00C8\u00F9\u00EC\x00m.dzT\u00EF\x10\u00EB\u00C8\u009F\u0085\u00E4P\\\u0083\fI'z\u008A\u00F8\x01\u0097\u00DA\x1A\u00E7\x0Bv\u00D6\u0093l\u00D8\u00C1\u0094\u00E3\u00B3\u00C4\u00DC\x07\x02,\x11\u00A8\u00F9\"xIA\u008C\u008C\u008E\u00E4\u00B9\u00EA\u00E3\u00AA\u0081Sn\u00BC\x1C>|\u00F9\u00D9\u00E3\u00BB^}\u0087\u00EB/\u00DEa\u0084\u00F0\u009A\u0083\u00AF{\u00D6G\u00D6?\u00E4\u0093w\u00D7\u0084*\u00DF\u00B1F\u00AEi\x05D\u00972\u00C7\x1E\x15l`\u00C0L\u00E6\u00B0\u00C0\u00A1\x19\x06\x190x\u00CA\u00F2\u00B6\u00FB\u00B3\x1B\x06,]\u00CF\x1EP\u008D\u0084%\u00B6\u00C0\u0089\x19\x11b\u00EC/\u00CB?\u00B7\u00A4\u0098\u00F2?#\x06\u00BB\u00D6j9u4,]M\u00D1bl\x14HT\u008B\u00EER\u00FAP&\u00D3\u00F8\u00BD\u00B9(\x14\u00BE\u00D8J\x04\u00A2\u0087\u00AE\u00DA\x16WC\u00AA\u00B3\u00CD\u00B3\x02C\u00FAJ\\_\u00AB;\u00D9\u00FE\u00D9U\x1E\u00DAB\u00CA\u00FD\x1E\u00FDwJ\u00FBf\u00C4\u00A4]3.H\u00D2\u00A1G_\u00F8\u00A1\u00E5\u0083\u0093\u00B8 \u00A1~Qv\x15\u00D5\u0080\u00D6\fvG\u00BEB\u00CFc\u0085\b\x01@\x19\u00A4t8\u0099\u00E4\u00E1\u00DE\fr\u009A\")\x1F\u00B5\u00D8;\u00B0@\u00DB\x15[\x06\u00EF)\u00E4'R\x0EW\x14\u00B4\u0082\u00CC\u0082\u00C9{\u00B5\u00A4\u0089)\u00B9\u008Ew\u008Ax\u00D4\x03\u00CCRm\u00C9\u00B9\u00CBHF\u00AEI\x18\u00BA\u00D1j[\u00C8!e\u00AE\x06\u00B0~\u00CB\r\u00D8\u00F7?\u00DF\u00F4,\x00?y\u0098\u0099\u009A\u00B4;\u0084\x10>\u00A7\u009F9\u00F5\u00A2\u00E1\u00A2\u00A7\u00F5\u00B6<D\u00B2\u00C5\u00DD\u00DD\x1A,P\u00C5j()\x1A\u00F6\u00A3a\x0F\x06\x1CD\u00C3\u00A64l\u00A2a\x1B\rK\u0098\u0091q[\x04\x0B4,\u00D0\u00B0\u00D4!*7/a;D-1\u00D81\u00FF\x1Ba\u009E\u0083Q%\u00BE\u00DB\x06\u00B3\u00E2N(\x1A!3\x16>\u00AB0\u00F38\x02Ce\\\u0082\u00EC@\x12,\u00E3\u0082\u00F8\f3 \u008A@=?\u00A03\u00AB\u0090\x01+2\x00\u00ADAZ#]\u00D9\u00F9\u00B1x\x1A,\x04\u009A\u00EAAap\u00DE\x17\x19]\u0081\x04N\u009C)\u00BD#8F\u009A#\x11{F\"+\u008D\u00BE\u00AC\u00D8LV\u008F\u00AE\u00FD\x16U\u00A8d;\u00C6_0\u00AB\x1A4\u00C51\u0094\u00B1\u00C0\u0088\u009B\u00D7\u00B115|zO\u009F\u0094*\u00A9\u00CBsR\u00C5\u00D06C\u00A8\x07\u00BC>\u00E2=*\u00E3\u00F79.\u00EF{\u0095\u00A0\x03\u00ADL\u00A4\u00BB\u008F!\u00CA\u00B4U\x02'\x1AA9\u00B7\u00F1e\u0096\u00E7\u00A9\u0081JD\x00\u00F5y\x15\u0099FM\x04\u0091c\x12\fh\u009F\u00FC\u00C0\u00D3\u00F4\u00AA\u00CBO\u00C5\x1Dhw\b!\u00FC\u00ED\u00F6\u00C5?ua{\u00D7F\u0096!96\u00CD\u008Cj\x1E=\u00C7\x04\x19X\u00C5\"C\t\u00CD}\x0E\x19\u00C1\u00D8\\j\u00E7&.$\u00CC\u00C1\u00A59\u008D\u0089\bb\u00A6\rB\u00D4\u00E0q]\b\u00A6B\b\u0096\x0E\u00E1\u00E8A\x10 \f\u008E)u\x1D\x11\u00B8[\x12\n4\u0087\u00EC\u00A3/\u009C\u00EER\u00D8\x02\u00AC\u009C0Cof\u008C\u0081C\u00C4\u0080\u00A5\u00BE\t\u008D\u00B2\u00EC\x1A\r\u00A1@\u00C1\u00DD\u00DE\u0097\u00BA\u00F7.%\u008F\u00C8\u00E0k\u0089\x12\u00DB\u00A0u\u00F3\u00EB\x1DX\x17\u00C9\u00ED\u00A8#\x10\u0093\u00AD\u0082Fh\x1A\x02\u00D8-\u00FF\u00F5\u009D\u00B5\u009Ee\u00D1\u00C4;\u008B\u00BF\x0E\u00D1\u00B9I\u00BBncQ\u00D7\u00FFm\u00F8\r\u00DA\u00DDU\u00E7\u00AB^\u00D0l3Z\x12\x1F\u0091\x07\u00FC\u00DF \u008AUi\u00EF\u00CF\u00AD<\u00DF\u00F2\x1D\u00C2\u00DB\x02\u0084qR\u00DD0\u0087.\u00E6\u00FB\u00F7\u00AEl\u0095\u008C\u00D0\u0088_h\u0085\x10]4\u00A3\u00C16m\u00B1\u00F1\u0087]#\b\u00DE\u00CFS\x18Qw\u00D8<0N\u0082\u00E7\u00F0\u009A\u00E2\x16\x15\u00F5\u00FE\u00B8\u00DB\x16\u008D\u00C0\u00BD\u00C73\x11aj\x17HW\u00B4q\u0081\u00F5O\x7Flc\u00FF\u009B\u00FE\u00F8\u00A7\x00\u00BC\u00E00\u00A4\x15\u00EDv\x19\u00C2\u00D6\u00F2@\u00FB\u00D7\u008B_\u00F8\u00E9\u00AD\u00B5\u00BDH\x7F\u00F7\u00B1jU\u0082\f\u0093\u00BFmi\u00B8Q\x15\u00EB\u00DA0\u0097\u0086-\u00D7y)M\u00A2\u00DC\u0089\x13\u00961\u008A\x04\u00D1\u0091\u0081H\u00E2\u00F2\u00F3\u00A8\x0E\u00D4\u00C2 \u00EA\u00C46\u0080\u00B6\x06\x7F\tN\u00B0\n\u00EE\x1C\u00E8\u0088@H\x10\u008C9K)\u0093\u009E\x02\u00C5\x10\u009B\u00C6\x12\u0099\u00B2\x10k\x03\x03\u009D\u00D2Ah\u008B\u009D\u00C7\x03\u00E2\u00FB\u00FAa\u0090S\b\u00A0p\x11\u00B8z\x000\x04\x01\u0088s\x10\u00C7\x11gec\u00E4\u00BCS\x07b\u00B7e\u00EA2A\x1C@\u00D8\u0097\x18OP\x02\u009BHaY-\u00C8]\u0080\x11}\u00C8-\u00D58\x1E#B\u00EB;\x0B\u00BA\u00A0\u00E4E\x04\u00C3!\u008C.\x1B\u00D1N\x1F'\x1F:B\u00A4\u00C3\u00E0gk,\\\u0084\u0084\u00FB\u00CED\u00ECJF \u00FA\\2\u00DD\\\u00BB\x07Ka\u00F2{DG\x06\u00AA\u00F1\u00BE\u00AB1\u0095\u00EE\u00CBp3R-(\u0088F+\u00B3@\u009E\x17\u00C6S\u00FF\u008Dh!fE1h\x07>|\u00E9O\u00EB\u00DE/\u00BEH\u00EEw\u00F2m\u00EA\u00FB\u00B7\u00CB\x10\u00AE\x18>\u00F1\u00A4\u00BF[\u00BC\u00F5\u00F4\u00DE\x00\u00A0\u00EF\u0098\u00E3\u00BB\u00AFQ:\u00CE\x01\u009D\u0081\u00A9\u00BB\u00B99\u00EA\f\x0B\x01n\x15\u00B3.\x18A\x0E\u0098\x17\u0083\u00E0\u0082\u0084\u00AA\x1E\u00B4\u00E4}2\u008Dut\u00A2[B\u00C0-\u00E0\x1A\u00EAn\u00D3\u00FE\u00AA\u00D4<\b\u00CB\u0088\x104\u00F7\u00E6\x00\x17dRC\u00953\x17\"\u00D3PZ\b7[BL[\u00CE\u00BA\u00C7\x11\u00B5X\x16\x14mF\u00CCW0\u00B4Rc\b\u00A8\x1Ad\x16\u009F\u00F9\u00D4\u009B\u00AB\u00A1I$<>\r \x00i}:\u00EFQ\u00E3P\u00DD\u0080\u00EF\u0096tqw%\u00D1\u0086\u00EAd\u00B9F?\u00E2\x01J<&d-\n\x0B\u0097\u00E4\u00D8\u008C\u00E0+\u00E1\u009A\u00FA\u00E4\u00DE\x00h\u00CE\x0BLR\u00AA\u00BB\x1Fm\u0088C\u00DC\u00DD\u00EE\u00C5 \u00A2\u008E\u00F0\u00FD\x0B\u0090\u00AEK\u00B7~T\u00C3\u00DF!9e\x12\u00A5\u00ACfY2\"\u00B1\u00AF\u009C\x1B\u00AB\u00A5\u00A0\x178\u0093\u0088w\u00CE\u00E1\u0092q\x14\u0084\x03gT\u0093\u00EFd4dF<V]\u00AB|\x17\x1C\u008F\u00A1\u00BB\u00E1\u00C3\x1F<}\u00EB\u009D\u00E7?\t\u00C0[q\x1B\u00EDv\x19\u00C2_\x1D\u00B8\u00E0\u00DC\u00CF\u00AD\x7F\n\u00C7\u00CA\u00A3\u0090-\u00E3\x0B&\u00BB(\x17i\u00DB!\u00B8\x19\u008A\u00B96\u00CC\u00BC\u00E8\x063\u00D7\x07\x15\f\u00D2\u00B0\u00D4\u00C8\u0096\u008FpUb\x00\x06+\u008D\u0092\u00B6\u00F4\u008E\x16D\x1D\u00DF\u0085F\u00C3|\u00F9\u00E6\u00AC\u00E4&\u00B0\fE1o\u0086p\u00FB\u00B5\u00E6\u00EA\u00853\u008D\x0E&#Y7m\u00B2\u00A0\x04f\u0085\x07ha6!\u00CB@\x19;G\u00DD\x00\u0099\u00B1\u00F3\u00D6\u0099]\u00A7\x11Al\u008Bgp:3\u00A6\u0091&\u00A96]\u00C7\u0094\u0080nL\x14\x1D\u009C\u00E2\u00B8\u00D0lQ\u00A6+\u00D1\u00CEW\x12\u00B8z\u00BF\u00CCk\u00F0p\u00E90\x12v\u0089\u00F8 \u00BB\u00B4\u0085!\u00CC\x1Em4\x03\u00A7\u00C0\r\u009D\u0083=\u00B5\u00AA1\u008E\b\x02\u0082\u00ABt\f\u00A1\u0097\u0082\x12lL\u0089\u00A5\u00EA\u00D4:\x1AQ\u00CFbd9\u00F8|\x14\u00FE'\u0099\u00F8\u00A4\u0093\x16\u00CFaII\u00EA|\u0095\u00BFs\u00D2\u00F3\u00A6\u0096\u00DA>\u00C6\x1C\n\t\u009EHG\u0099\u00B3A\u00A9\u00AFN\u00E3\u00BD\u0080\u00AA\u00D5~\u00BD\u00BE$#\x1C+\u008D\u00BA\u00AA\u00C8\u009A\u00A3\u00EB\u00CB\u00FD\u00B8\u00E5\u00C27\u009D\u008B/\u0085!\\\u00A3\u00D7\u009Dt\u00EE\u00E6\u00B9O\u00EDm5\u0093\u00F1\u00EEW\x1C\x04\u00BE=\x19\u00B7>\u008F\u00B7\u009B\u00C6 \u0095\u0086\x05\x06|\x11\x03v\u00A1\u0099r!3\u00CB\u00CD\u00F3\u00AAI\u0083\u00DB\x06b\x03\x14\"\x044\u00B0\u00B8i\x0B\u0084\u0090\x0E\u00B6\u00E0\u00C3*\u008E$\u00CC\u00E0\u00A3j/\u00BBF;\u00DA\u00B9C \x03\u00AB\u00C8l\u00E3\u00ED\u00A0{\u008D9\x11\u0088gY\u00F2\u00EEb(fbd\u00E2i\u00A17\x0B&\x1B\u00BF\u0086[\u008D~\u00F4B\u00E1d\x1E\r\u0099\x0B\x00\u0097\u00AE\x15\u0089D\u00D3\u0089\n\x10\u00D6mF\u00FD)-\u00FCIx\u00B9:8>\u00EFg\u00D2\u00AF\x13\x06\u00C7O\u00A9\x06M\u00A9\x1D\x1D\u00D5<\x01B\u00EC\u00ACM\u00C0\u00E4&S\u0097\u00B4\u009C\u00EB\u00F7Q\x14\u0086UU\u00AD\u00D2\u00BF\x02\u00CAd#\x12\u00DFd\u00D1\u0089?\x7FM\u00BEb\u00AA\u00B2\u00A3\u0096\n\u00D7\x0F\x19qE\"g\u00FF2\u00F9=\n\u00B8\x06\u00A6j\u00E5x\u0099\u00A7\u00C9q&b9\u00E3\b\u00F5&\u0091\u008D\"U\x07\u00AA8kW\x7F\u00F8\u00A9\u00FA\u00F9\u008F\u009D$_\u00F5\u008D7\u00E30\u00ED6\x19\u00C2\u00FF\u00DA\u00BE\u00E2G\u00DF\u0087\u00F7l\u0088\u00CE\x00\u00B9Sw\u008C:\u00C2f\x15\u008F\u00B8\x11+K\u00A21;P\u0095\u00B6\x02\u00B3\u00E8n\u008Ab\u008F6\u00AC\u00C9\u00CC\u00E2\x15\x15\x18$}\x01\x10\u00B5]\u00A0}\u00F1\u00B2@\u00C6L@\u00EC\x00q\u00D4\u00D0a\x1E\x07\x06%\u008D\u0092R\u00A3\x01\x101\u00CF\x04\u00B9;\u0097g\u0087y(\x06\u00B4\u00A0\u0091\u0080\u00F9HGT\u00DE\u00D1\x18\u00C4\b+Y\u00A2M`{1j\u00BA#\t\u00FF\u0095R\u00CF1\u0085\x1B\u00B7\u00B4\x19R\u00E0\x1Aa\u00B5\u00A4\u0088e\u0080\u0086kR\u0089>J\u00B3{\"U\x0B\u00A1\u00DE\u00CCPe\x01\x0B\x1D\u0087\u00FBs\u0082\x12J#4'\u00DD\x13\u00DD\u0088B\u0086\u00F2\u00A3\u00DFk\"1\u00C3m\u00D7\u0091\n[\u0081\u00F0\u00D2`%\u00D4\u00FD\u009C\x1D1\n\u00F53\\\u00AD \u00F3\x17d\u00895\u0087\u00E0\u00F5\u00BB]Q\u00FE\u00F1\u00C8N\u009A\u00F2\u0083\u00D1\x19^\u00A4*S\u00DFh\u00BD\u00F7\u00E4_\u00A2\u00B4\x18\u009F\u00AFY q\u00CC\u00AA\u00CA0Q\x1D\x14\u00C9\u00DC\u00E2\u00E9l\u008D\u0094\u00BD&\x0E\u00D5T\x15\u00C35\u009F\u00DC\u00B8\u00F5/\u00CF\u00FBQ\x00\x7Fx\u00B8\u00F3n\u0093!\u00BCe|\u00EB\u00D3\u00F7m\u00DC\u008A.U\u008B\u00BE\u00BB\x1B_d\rr\u00A9\u0093\u00E6\u00A4F\x03\u009C\u00BB\u00DFn\x11\u00C5\t\u00AE&\f\u00D20\u0087\u00A55\u00CD\u00B5\u00C4\x1C\u0088\u00A4\u00FB\u00AC\u00FC\u00AE\x1E\x13\u0090\x11\u0088TQ\x10\u00D2\u00DD\x18\u00D1,\u00DCf\u00D3\u0094ic2\u00CD\u00EF\u00D1\u008A\r!\u00AB)Q\u00EE\u00D4c\u00F463\x10\u0088l$\tz\x12\u00AB\x0F8<\u00A5A3\u0099\x1B\u00AB\x1B\x07\u00C4wv\u00C4\u00FC\u0088\u0080\u00C1&\u00FA|\u00AE)R(\u0095\u00ED\u00B70\u00A4z\u00EE\u0083m6\u0083P\t4\u00A4\u00A3&\u00BC\u00ADR\u009F\u00F7\u0086\x16T\u00E1\u00C3\u00EA\u00E5^\u00E1?K\u00F4!A@=\u00C7\x05\u00D7/te\u00DC\x05N\u00A7\u00BF>\u00F36R\u00F7N\u00C9\u009E\u00DB\u00B7\u00AD\u00A2`#D\u00FA\u009F\x02\u00B2+@+\x7F\u00C6\u00E4Ti^\u00A4\u00BDq\u00D1r\x1FC9\u00E6\x1D\u00A0\u00FA@\u00A3$\u00C7\u00E1\u008CC\u00810pr>\u00CB\u00BA\u00B7\u0090mu E\u00EF\u008E3\x07N\u00A3??\u00A7k\u00DE\x17\u00D8\u00FA\u00D0%O\u00C7\u00D10\u0084\u00EBu\u00DF\u00C3~x\u00F3\u00A9\u008F\u00EF\u0093\u0082\u0095\u00C7\u00A25\u00E4\u008E\u00C0\u00B5\u00EA\x11an\u0081\u00D6\u0085\u00E3.z\u00C3\r\u00E2\u00FB.\u00A9:B\u0080o5_!\u00B9\u00873\u00D3\u00BD\x07I}0\u008EcBLD#\u00AC\u008A<C\u00CD\u008Bp\t\\\u00DC\u0091D\f-\u00A4\u00A4\u00F8{\u009A\x16+\u00B1:\x07\u0095\u00E1\u00A1\u00C0k\u00FF]\u00A6\x0B-\x17_e\x1E\u0088\u00B1&\x13\u0091\x102\u00A1s\u009Ae\u0091O\u0097:\u00BD\u00F0?\u0089\x00\u00EC\u00D2\u008C\u00DD'I0/B\u00BB)H\x13)jGR\u00FA\u00F5d\x1A\u00B1\u009A\x1A\"<:\u009FSs\u00C9\x15t\x13\x03\u00E9\x1E\u00A4\x15\u00DC\u0087\u00CF\u008A$|Jc\x1Da\u00A9\u00C6\u008A\u00C8W\u00E0\u00C6\u00ACT7xM/\u0088\u00A3zE&\u00C9H\u00F5\u00CF\x07\x14\u00F5\rP\x1E\u00AC0\u00AENU\u0087\b!\u0099\"\u00ED?vz\u00EEx&\u00D1\u00EF0\u00ED\u00DBm*\u0093\u00A4,\u00AE}\u009D\u00868\u0093\u00FF\u00A6\u00EA \x18>\u00F9\x0F\u008F\u00D7\u00CB\u00DF\u00F30\u00F9\u00D6\u00EF\u00BC\x06\u0087h\u0087e\b\x17,\u00DE|\u00CE\u00A5\u00B8\u00F4X\u00C1\u0082\u00D2\x06\x00\u00EB\u00B0\u0082'T\x0B\u008CP\u00E9\u00C3O\u0089@\u00A9`\u00BA\u00EAAi\u00D8\u008B\x01\u00BB X\u00D3\u00C1\u00B3!\r1\u0088\x133\u00C9\u0088\fB\u0085\u0092:\u00E3\x16F\u00CF\u0094\u00CC<\u0082V\u00CE\u0099\x02Nj\u00DC\u0095M\x13\u0094\x0E\x18\x10!\u00F3\u00B0\u00D4lH\u008F1\x18w\u00EFf\u0098\u0094d\x02M\u00B88\x04\x16PC\u00AEoz}x.T3\u00E8\u00C8\u00E7\u00A5\u0092s\u00A0\x064wo8\u00D1\u00BA$\x0F\u0095As+\u00B6j\u00C0\u008B0\u00E7p\x0F\u00E6\u00ECW\u009BB\u008F\x1C\t\u00D8\u00EFf|q\u00E3\u00DD\f\u00DDk\x1B\u00C6NG\u0085iA\u0096\u0080\u0088mQ/\n\x1DK=o\x0E?f\u00D5\u00F3\"\u009C\u0089\x18O44\x1B\u008E\u00826\x00\u00A3\u00BF\u00A5\u0089\x04w\u00A2\u009A0\u00D7\n\u00D5\u0081\u0084\u00E9\u00D3\x16\x01\u00A0$\u00BC\u00B0\u00C1tT\u0094\u0092\u00E8\u008CL\x0B\u0098\u00AA\x15~\u00A6\u00B62\u009B\u00FE,\u00AAa\u00C7\u009DVkv\u0083\u00EC\u00C4\u00C0Xb\x14z\u00BE\u00F5\u00C9\u00F8; :b\u00D7\u00F5\u009F\u0093[\u00DF\u00FC\u00FAs\x00\u00FC\u00D7\x1D\x03\u00C1m0\u0084\u008B\u00B7\u00DFs\u00CE\u00D6\t{o3:\u00F4\u00AEo3\b\u00E6\u0080\u00B8\u00ED\u00A0J\u00CFp\u0099\u00D5(?\x12\u008E\u009D\u00D7\u00B5a\u00AF4\u009C\u0080\u0086\u00990\u00A2\u00C0\\\u0091\u0083\u00D7JX\u008A\u0095Z_\u0082\u0081A\u00FE_\x157\u00EE\x05\u00B9\x01ji\u00D5]\u00C4K\u00A9\u0099ps\u00F9\x1E\u00B2p\x14\u00C6\u00C8\x0F\u00CEt<\u0091I\u00AA\u00CA\x00\u008F\u00F8K5\u0083\u00F5\x12\u00C9\"\u00FC\u0097\u0088S\u0097\u00F2\u00FCA\x17\u0093\b\u00C5\u009E\x04\x16\x11n\\\u00EE\u00C5\u00AFO\u00AA\u00AA\u00EE5!\u00CA@\u00FE6! \u00F5s|\u00F1\u0092\"\nl\u00CF\u00CB\u00C9A\u00EA8y.k\fT\t\u00CC\x11\u008E\x10\f&\u00CDc+xx?V\u0090\x154hv\u0092\x10359\u00DE\x01;\u00A4\u00BB\u00F8\u00F5A\u0098\u009C\u00A7\x01,r\"Er[\u00A1\u009B\u00AA\n ?\u00C7\u00FC\u00F3\u0098\x14T\u00E2\u00FDO\u00EA\x19\u00F8\u00F3\u00D1\u009B\u00A4\u00D9\u00C7\x04Y\u00F0;]\u0090q\u00E3D\x7F\u00C9|\u00C6@\x01Y\u00AF\u00A1\u00A2\x14\u00C5\u0084\u00F1P\u008DTE\x1B;\u00DAG/?,Ch\u0087\u00FA\u00F1\x1A\u00BD\u00FE\u00A1\x1F\x1A.}L\u008F\u009B\x1C\x1B\u0096 \u00A8nE\u00FF<\t\u00D6\u00A0\u0091h\n\u00B3Eh\x12\u00B4R\u00EA7\x03\u00D8\u00AF\u0082\u00ED>`\u00A1V\u009Bq\x01\u00DF\u00E8E\u008Dq\u00A8\n\x16RB\u009A\u00DDE\u00B9\u0084y\x15\x16\u00C2\u00D8\x03\x0Fe\u0096\u0086\u00A50\u00F4\u00D9\u00A2!\u0097:\u00F3$)\u00BAH[\u00B8}\x00\r\u00C4A\x06\u00C6d\u009F\u00F8\u008E\x06\u00AB\u00C1\u00C0Me2\u00CC\u00B9BCF\u00C9\u00E5\u00C6-\u0096\u00AA\x1D\u00B1\u008E%\u00ECX\u00A4\u0095\u0099\u00F1F\u009F\u00B94d\u00D9u\x0F\u00BE\u00F2MP\x04Y\u008A\u00CDB\u00A5g\u00906\u00C45\u0093\u00C4%\u008F\u008B\u00C8$##\u00CCI\rB\u008E=\u00DE\r\u00AB@\re\x0EL\u0085\u008A\u00E7\u00AD*a\u009C\u0097HP\u00B50! %\u00A7r>\u00B9\\\u008C\tN\x0B\u009B\x165\n\u00E2\u00F3\u009Eu\x18i\u0093\u00D1\u0080\u00DF-\u00FE\x15w%KOi\u00AE\x11\u00B1\u00C9\u00A45^\u0087\u00BCg\u008Dw\u00F0\u00B9\u00B3\rar\u00C5\u00C7\u00F9\u00BA\u00F2\u00D6\u00D8/\u00F2x\u0084\u00B2\u00ABL\u00E9\x02b\u00B6\x19gJ\u00E1\x1C\u00F1Ml\u00F5\u00EA\u008F>F\u00AF|\u00EFCq\u0088vH\u0084\u00F0\u00FE\u00AD\u00CB\u009E\u00FA\u00A1\u00E1\u00FD\u00A2my\f\u00D1A\u00F1\x1C\u00AC,\u00AA\u0086\x06\x15\"\u0083\u00BA\u00E8\x10\u00E7\u00E4\u00AEH\r\u00FB\u00C5\\\u00913X|\u00C2L\x1B\u00E6\u00F0\u009D\u00A4=\x18H`Kq\tF X\x12\x12\u00F3\x17\u008C\u00B9\u00A4\u008C\x1E}<FF\u00A6\u008E\f\u00B5\u00A0\tG,\b\u0082Q\x0F\u00BD\rP')o\u00A8\\t\u0091\u00E8\u009F\u00FF\u0083H\u00EE\f]\x02\u0095\b\u008D\u00CD\u00B6$h\u00AD\u0081U\u0094\u00F9TF4\u00D58\u00D5\u00F2\u00C6\u00FC\u00B7\u00B3\u0090\u0089\u008F:\u00F2\u00ED\x05\u00A5.\x1A\u00A0c\u00A8\x1D\u0099.\u00DDL\x15PK\u00CEQt\u00CB^,\u00E89z\x10xucJ\u00E9\"\u00CD\u00A9\u00D2(\u00D0\x18\u00B4#\x007aM\u00D5\u0087L\u00DF\u00CEQ\u00ED\u0089\u00CD\u009A\u008D\u00B7\u00EE:\r4\u00D7\u00E1}N\u0094\x03+h\x01\x05)9Q**J\u00E0q\u00A2\x01DH\u0085\u00C6\u0088\u00B0B\u0094\u00AD\\#\u0098n\x01\u00E7\u00CFD\x06S\u00DD\u00AD\u0081.\u0088,r\x0E%\u00D4\u00E5\x11\u00B9[H\u0099O\u009B\u00C5\x12I\u00D9,\u00D6\x02\u00B5\t\u00D6\u00AE\u00FB\u0082\u00EC\u00F9\u009F\u00E7?\x15\u00C0\x7F\u00C7J;$Cxk\x7F\u00FBS\u00B6\u00E6\x07\u008F!3 \u00F4\u00F3\u00D4^\x12~$xP\u008A\u0090a\u00AC\u00A0\x04\u00F7\u00CBW\u008Ey+\x14'H\u00C7\u00BA\u00D2\u00F9d5\x17\x15\u0088JC\u00AA&)c\u00C7\u00C7P%l'gi\fF\u00F2\u0080\"\u00C9\u00F0d\u00D6C`\u00BA\u00F3\u00E8\u008Ce\x04\x00\u00E1\x1E\r\u00F4Z\u00D83f\u00D5&\u0080L\u0084\u009E\b\u00EA\u0085M&\u00EC\x05N%\u00C8\x04\u0097l\x1Dno\u0090\u00B2\x10\u00FD^\\\u00B8\u0091\u00E8T\x16\u009B\u00D9!\u00D4\b\x14(\u0090;.B\x12\x10\x10*G\u00FC\u00EE\u008C\u0085\u00CCj\x02Y\u00B5tT\u0089\u00A2\u00EA\u00D6\x0E\u00DB'>w\u00EF/\u008Cg<\u00B7\u009E#\u00C6\u00A4xn0\u0097\u00D1\u00CF*\u00F7v\x0FCT7V\u00C4oY^\x0E\u00D1w\u00A3\u00F1N\u0081Iy6\u0091\x12\u00C4\u00A4\u00E6\x1A\u00F6\u00D4\u00B7\u00BCW\u00CE\u00F7\u00C4\u0086\x10\u00DE\x0E\u0081j\u00DDQJP\x19\u0081\u00D0u\u00CC\u00F9\u00E2\u0098{QM\u00B49\n\x00&5\x19BUi\u00C1\u0084\u00AA%\t\u00DA1W\u00C5\u00F2\u008A\x0F>\x05\u0087`\b;T\u0086\u00EBu\u00CF\u0089\x1F\u0097\u008F>\u00A1\u00B7#\u00AA\u00CDx'6\u00BE\u00F8\x1606e8\x00pwf\u00FA\u00FE\u008B\u00B4\x04w0\x02\u00A6j\u0086\u00A1\u008D\u00BD*\u00D8'\x03\x0E\u00C8\u0080M\x01\u00B6\u00A0\x18;0v\u00C1B\u00ADL\u00BB\x11\u00B7\x0B\x01\x11\u00DF!\u00DA\u00D2\u00A8\u00BB\u00C34F3\u009A\u00CF\u00BF\u00B9\u00CAQ\u00BE\u00D3.\u00A04P\u00DA\u00A6.\u00DD\u00EB p\x03\u0099t5f\u00F6\x1F\u00F7\u0098P(zx\x1D\u00CA_0:>\u00A63&\u00F1\x04*i\u00E6\x16\u0094f\x06\u00B5\u00C6\u00D0*GU~N\x17Af;\u00BA\u00B7#j\txt%\u00B8\u00AFd\u00E6\u00F8\u0087\u009A#T\t\u00CAq\u00AA.m\u0080xv\u00A41\u00F4\u0096\u00EF\u00D1\u00C7FH\x0E(\x10\u00AACaR\u00C1\u00D0\u008A\u00AA ^\u0086\u00DD\u00E1\x15\u008D\u00C1\u00B6#t\u0081\u00CD\u00C5\u00B5Ji\u00A9\u0091.\u00EC}\u0093=\u00F6Da\x02\u0098\u00C14\u00F4~7\u00D6\u00F9|\u00D3\x13\x05\u0087~\u00A9\u00A6\u00B1\u00BE\u0082\u00A2\x06k\u00E5\u00C6\u00ADpDAAW\x18\u009B?\u008B\r\u00B3\u00AC\u00E5b\x06I\u00A3\u00ADf2Y\u00D7\x12z\u00CE\u00E3\u00E2\u00D1\u0093\x151#\u00F9g\u00ED\u00F3\u00BA\u00CF?A\u00BF\u00F0\u00F1\x13\u00B1\u00D2v \u0084\u00CB\u00F5\u00D3O\u00FA\x00\u00DE\u00BB~\u00CC\u00D1\u0081\u00EBsf\f\x02rQ &\u00B1\u00EA\u0082)u\u00EAb\u00B3\u00F3\x18SpP\x047\u00A9\x15g\u009D\t0\x13\u00AB\u008C\u00C4x\x01\u00C0\u00F6\u008B\x14\x01\x18\u00A3\u00D8`\u00F6\x03\u0086\u00D6r\u00A9\u00D9\u00F6b\u0099\u00B3\u0090\u00A8@\x10\u008BQh=f\u00F2\u008D\u00A2a\u00C0\u00A8\u008C\u00844\u00CE?\u0082\u00BA\u00B7\x19\x11\u00AD\u00D2\u0092\u00E5G0\u00C6\u00813\u00C0\bE\u00A2\u0084L\x00\u00F2\u0081\u00C3\t&\u0082\u0099\u0098\x1D\u008A \b\x03\x0E\x1E;Q|\u00F21cQ\u00FD\x18\u00C8\u0083\u009Ak\u0098\u0096f\u00F1\u00DF\u0095\u00F7\u00F6]\u00A2\u00E0\u0086<\u00BE\u00AB\u00A8oP\u00DF[\x05\u00DBD\x0F<w,\u00E7M\u00C3\u00B8\x12\x1DQ\u00ADa_c>{\x18\u00F7xOw/JJ\u00CB\u0098\u009B\u008A\u00C9\u00B5\u008E\u008B\u0086\u00C7\u00D2\u008F\u00C3\u00EF\u00A9\u0085\u00BF0\"~\u00A6D\u00AFT\u00C8\u0089\u00F7\u00ECE\x06\u00A9\u00D9\x14\u00B6\u008C\u00AA\u00D4\u00B2\u00D9M \u00AE\x1CN\u00AE\u00EC\u0082|\u0094/\u00B5E\x1F\u00C1l&\u00C75\u009EE\u00AF\u00FE\u00C4\u00FA\u00D6\u00DB\u00DE\u00F8$\x00o@i;\x18\u00C2\u0085\u009Bo\u00FD\u00FE\u009B7n\u00C2\u00A0\r\u00E3]\u00B4g\u00E3\u00ED6ui\u00E00\u00DE\x16\t\u00E3\x10l\"\n\bBr|\x0F\u008D]\u00F9\r>\u00F9#\x04\u00FBD\u00B0\x07\x16\u00CE<\u0087{\x1F\x14\u00BEAl\x1A\x1A\u00B7\x0B\u0083\u00E8jD\u00CA\u00A4\u00A7\u00E0\u00C8(\u00DE\rg\x02\u0099\u00F3`)\u00CE,\u009C\u00D2\u00C5\x7F\u00F7B-\u00AA-<\x14D<\u00BC\u008E\u00EEM\x16de<\x03\u00C3\u009E\u00E1\u00E7X \x14\u00A1v\u00DA/\u008Cp\u00D3hF\u008B8\x19YX\u009D\u00A1\u00E9%\u00D1:gH\u00CB}e\b\x10\u00C0c\u00E7\u0095:.\u0095i0\u00A8\u00AA\x07dV?\x1Fp/M,b }3F\x1A\u0091\u00BC\u00B4\u00CA\x00\u00F89\x18\u0097\x07(\u0085NNX]\u00C0n\u00C0e\x12%R\u0090\u0094J\u00CEq@K\u00B2UxH\u00FCZ\u00E3\x00\u00E5\u0092U\u00C3\b\u009B\u00CF;\u0098R\u00BDb\x7F\u0098\u00CC\u00AF3\u00F3`\x18\x1C+\u0092\u0080s\u00C0E\u00C2\u00F37\u00CEe\u00B9\u008FGv\n4\u00DFq\\\u00A7\u00F9\u00DD\u00EF\u00B11.\u00B0\u00EF\u00E2\u00F7}\x1Fn\u008F!\\\u00D5>\u00FA\u00BD\u0090\x05\u00D2\u00A2y76Up\u00E7\u009B\u00A6^\fClkv\u0080\u00D0\u0089\u00E8\u00A10\x035\b\u009B\u00CC\u0080\x05V\x1D1\u00805\r\u00CC\u0092\u00FDE\u00ED\u0098K\u00C3\x1C\u00DD\\\u0090hh\x1Eq8hn\u009BjD\u00ED\u0089NJw\u00A3\u0085/\x13\x15\u00C4\x06\u00AA\u0090\u00D8\u00A2\u009ED\u00DB0x\u00A4b\u00B8\u0088\u00C1\u00ADAX\u00B9\u00B9C#\u00E6\u0080\u009E\x06\u00CA\u00B14\x13\u0099\x04\u00B1\u00BB\rf`t&\u00C0 *\u0085\u00D7=\bfe\u0086\u00BD\u00E6?q\u0091\u008B\u0087,\u00B3\u009Aql\x0B\x07\u009D\u00D2\u00E0\u00AA\x0F^\u00C4\u00E2\x14\\\u008F\u008D:\x01\x00\u0098\x04\u00D5\u0088^\u00D0\x1C\u00D2\u00F2\t`\u00EF\u008D\x0BS\u0080\u0088\u00E0\x10\u00C0\u00AA\x1F\u00F9Vq$l\u00D2\u0082.!\u009E\u00A4\u00C5\u00ED\u00CB\u00C8PRS\u00AF\u0084\u00E6\u00918\u00EAv'I\x17]\x18J\x0B\u0086\u00E6\u009E\x1BtcN\x10\u0087x\x1A\u00B6\u00F9\u0088\u00D3\u00F6@q=r\r\u0092y\u00F0\u00F9\u0097\u00F6\u00AC4\u00A0\u00F6\u00CA\u0084$\u009F/~\u00CE=\x1E\x04j\u00A5\u00F1T2i\u00CD\x14I\x0B\u00C4\u00EA\u00D6\u00AF\u00F6\x16\x15\u00AF\u00C3\u00FE`\u00D5t\u008A7Y\u00C0\x04,u\u0084\u00D7F\u00F1\u00F7\u00DC\u00D1\u00AE\u00BB\u00E6\u009F`\u00A5M\x18\u00C2g\u00F5\x0B\x0F\u00FB\u00C1\u00CD\u00FF\u00FD\u008Cx\u0089\u00C7\u00A4\u0091\u00E0\u0087 b\u00E3\u0084\u0083?(\u00D3\u0080\x0BD\x02\u00BF\u00A7\u0084\x03\x10\u00D2;\u00FD\u00F469[\"\u00D8\u0083\u008E\r\f^\u0098\x04`Y\u00B1&\u00D5^\u00A1h\u00A2Pt_\u0087\\\u0084\u00B5w.\"c^)\u008F\x19\u00FC\u00E4\x05Q\u00A4\u0085\u00DCqYm\u00D7\u00BA\u00EA0\u0082\u0092\u0094s/\u0091\u0084\u00D5\u00D1|\u00D3\u00D9L\u00D1\u0099\u00F8\u00C1\u00E1\u00EAIC\u00EA\u00BC\x13)\u0083$T\u00F7\x00d`\u0091f)7\u00E3\x14\u00B6\u00A8\u009C<\u00C4\x17\x12{\u00CB\u00D8d1\u00EFB\u00CF\u00F9\u00A8\u00FF\n\u00D3\u0082I@~M\u00C6\fp\u00F85B\x11\u0087\x18;+W\u00F7\u00A2\x1E\u00D5V%&\u00FB\t|\x12\u00F3c\u00EF\u009E^\u0086:^)\u00BF\u00D5.I\u0094TCh\u00FC#\x04/\u008C+\u00F6e\u00A8\f\x02\x05Y\x1C\u008A\u009A$\u00EEa\u00CC\u0093\f\u00B3\x04Eiy\x1E\u00AAAPLj8h\u00C3\u00B4\u00FC\u00DA\u008A\u00A1\x12H\u00E4S\u008C\u00CC\u00ADw\u00CC>\u00FD\u00E93\u00F4\u00A3\x1Fx\u0098\u009C\u00F9\u00C8k8\u00AA\tC\u00B8b\u00F9\u0089'^9\u00BB\u00FC\x182\u0083\x06\u00F3,x\u00C9\u00B0\t\u00C1\u00D7i\u009DB\u00AF\u00E9wJ\u00C8zM\x1Ecb\u00D2>4\u00DF\u00F8m\u00865\u00D5\u00D8\x12n\x11\u008ED\u00F3,4'\u00CA\u009A|D\u0092\u00A4'\u00A11\u00E6\x00@W#~2\x06\x120\u0097iw\t9e`F\u00ACV\u00C9\u0099\u00B5\u008F2Yetd\u0090\u0091\u0092\u00E6a3?x\u00E9\u008B\u00A1\u00D5A\u00C3+\u00C6\u00A50\u008A\x11-\x18\u00B3\u00A3\u00D1\u00AA7w\x1DR\u00DA\u00C75(\x0B{*a\x11Q\u0093\\t+\u00EF\u00D3\u00BB\bD\u00A2\u00F5\u0098\u0096\u0085[\u00FB>\x04Q\u0093(+\u0093\x03\x10\u00B5\x0B\u00AB\x00\u00D6\x12\u00EB\u00CF\u0083\u00F4(D\u00DFTE\x10\u00F9\x1Fe\u00A2\u00CA\u00B9\u00E9\u00DAS\u00E6!T\u00E3e\x04\x12\u00F1>u-\u00E6\u00D4\u00C9\u00EA\u00B8\u00E3\x1C\u00FD\u00FF\u0089{\u00B7^\u00DB\u00B2\u00E3<\u00EC\u00AB1\u00E7\u00DE\u00E7\u009C\u00BE\u00F2*6E\u009ATD5E\u00C5V\b\u00EB\x02:1\x1D\u00CB@\"8\u0092\x03%A\x12+\x01b\x04A\x00\u00FF\u0080<\u00E5=\u0081\x1F\x14 \u0080\u00DFb\u00C0\x0E\u0090\u00F8\u00C1\u0090^L#\x12\x02\u00CB\u0092%@\u0092\x05\u00CA\u00B2@\u008B&e\u00D1\u00A1\u00A9\u00B6D5\u00D9d\u00F3\u00D6\u0097s\u00CE^sT\x1E\u00EA\u00FB\u00AAj\u00CC\u00BD\u009Bl\u00C1\u00BA\u00AC\u00EEu\u00D6\u00DAs\u00CD9\u00E6\x18c\u008E\u00AA\u00FA\u00EA:\x1AZ\u00A8u\u00D3\u00EF\u00EF\u00B29\u0088\u00F0\u00DB\u00DC:=\fr\u00B3\u00F6\u00A2\u00AB*>\u0083d\x18\u00FD\u00F6\u0086\u00ED\u00E5/\u00E0k?\u00F3\u0093?\x04\u00E0\u00FF\u00D2\u00E1\u0085!\u00FC\u00C2\u00CD\u00CF\u00FF\u00C5\u009B\u00FB\u00AF\u00E1O\u00EC\u0095\u00FE\u00F3^\u00B8\u009C\u00E4\u00A4\x00\u008E\x1CT,\u00A4\u00DA\u00E0\x13-\u00D0\u00A5$\u008E\u00A9-\u00B7<\u00D7\x11\u00EE\u00C3\u00AF\u00BB\u00E3I\u00F3,\u009A\u00B2a\u00C3\x05\u00B1\u00ED\u00D7cJ\u00DD*\u00B0*\u00A3\u00DF`\u00AB\u0083\u00E9\u00CA\f\x7F\u0096\u00A1P\u00D26U\u0080-\u009FwH\u00FA\u008A\\<\u00F2\u00CC\u00AA\u00B1X\t\u00B2\u0081\u0084\u00C2\u00F0\x17\u00C1Q\u00A5npd\x06\u00A4;\x0B\u0096\u00B6\u0084\u00A0{/\u00A9\u00E5c\u00A5#\u00931-\u00DA\u00AE\u009CF\u00E9\u00C1*)\u00D6\u009E\r\x17\u00AE\u00A0'\u00CCs[2\u009E\u0080Jr\u00C2\u0089\x18\u00A5\x1C\x11\u00F6fX\u00F7\u00A0JO\x1B\x01\u008B78\u009D\u00BBz\u00CCI\u00C0mw\u00EB5:\u00D0\u00D9n\u00D93\x14\u00F7Q\u008C@s\u00A5\x10f\u0084\u00E0\x11\u00F7t\u00A1+\x05\x18X\u008D\t\u009D\u00BDw\u009B\x06\x0B\u009F\x0E\x00\x07%\u00F5l\f\x03\u00D1'\u00F3\x1E\x14\u00C5y\u00F4\u00AE\u00947\u00CE1\u00F9\u00BC\u00BCv\u00D3\u008A{7\x17hhX\u00C9\x002\u00D5\"\x19\u00A3\x10\u009E\u00AF\u00E8!\u00D5\n\x07&\u00B0\u00CF\u0089\u00FD\u0093\u009F\u00FE\u008Bx#\u0086\u00F09{\u00E9\u00A3\x07zG\u00FF\u00B8_\x03\u00EB\u00AE\u00BDUG \t;\u00A5\x7FI\u00D6\u00EE\u00AE\u00A97\u0090aD^@_\u00D7\u008Eix4\u0080\u0097\u00DC\u00C3\u0086\x000\u00AE\x00\u00D8\u00DC#\x12\x11*\u0093\x16\u00F1\u00F9\x13\x1E\u00AED\u00AB\u00D2i\x07\u00E2\u00FA\u0083\u00EBj\u0098\x12\u009Dr[SXJwp\u00A9g\u0089\x16DmGY\x01\u00C2 T\x1B\u00CEV\u0088\u00B3l\x16\u00950\u00C5\u00D2ln9\u00CE\u00B4\u00FEC\u008CA\u0088i,\u008B\x05\u00C9H\x10-\u00E5z\u008C\\\b\x11I\u00AE\u0083D\x07]\x14#\u0088\u00DA.1\u00BF\u008C\x7F\u00D0B\x0F\u00E2G#\u00AC\u00B6\u00AAD\u00C8\x16*A\x1C;?\u00D7\u008E(\u00C4\u00CDJ\u00FDK\u00F5&\u00D5\u0091\x16\u00A4\u00E3\u0086\u00C5\u00D2\u00AE\u00B5\u00D5\u0099\x14\u00DB\u008C\x023rm\u0093\u00D0\u009B\x07\u00A1\x03\u008F\u00EA\x7F\x19\x1Cm1\x1E\nI\u00E8J#\u0081w&\u00D1Q\u0087\u00B5{\u00F5;\u00E9\u009C\u0086j\\;II\u00ED\u00A9\u00B0\x00\u00AD\u0087\u00A5\u008DTi\u00BA\u00D7\u00C2k\u00F8\u00D3\u0082\u00A9|\u00F1\u00C5\u008F\u00F6\u00A1%&\u00FF\u00DA|\u00F5\x1D\u009F\x1B\u009Fz\u00BE\u00FC\u00F8\x7F\u00DC\u00AFB\x07\u00F1\u008E\u00A0\u00A4[*\x01\u00CF\u00AD\u00CFB\x03\u00BD\u00AD\u0080\u008D\x15\x11x~\x05\u00DA\x0EW\u00E4\u00D71\u00F0\u009A\u00EDx\u00E4\u0086G\u0088J\u00CD7\x0E\\(\u00AB.\x16\x01J\x17\u00C6*\x1C\u0088\u00B0\u00E5xo\u00B8Al/\u00DF\u0093\u009D\x0E\"\u0080x\u00EBX1\x11\u00C5\u009A\x1D\u0098\u00BC.v\u00A9\u008E}#\u0090^\x06\u00B93\x0F\u00AF\u00EBj\u00D7\u00A9\u0088-P\u00C5\u00E5x\u00CE\u008Dq\u009A\u0085\u00CD@s\u00AA8\x03#\u00A3\u00D5\u00DF\u0083\u009F\fWVT\u00E4\u00F2V[ryj\u00F1\u00DB\x0E_\u00FC\u00F1#\u00ECzz.C\u00EA\x1F\u0090\u00D9{\u00EA\x1B\x14\u00B6\u00CB6\u00B9`U\u00C9\u00CA\x19Ay\u00FB!\u00B6>\x01\u0090\x01\u00B1b6\x001\u00BA\b1n\u00EB(\u00C3}G;fi|C\u009F;\u00FD\u0086\u0090\u00E8\u00BDL}_g\u00C8$\u00ADF\u00F8\u00F2\u00F2\u00F4k\x14f\u00CC\u00FE'\u009F\u00D5gB|\u00B5\u0081BD4l\u00D6\u00AB\u00D90Z?S\x006&\x14\u00CC 6\u00DBq\u00AAO9\u009E\x17_|\u00DE\u00FF\u00D5\u00AF\u00BFC\u00AD&B\u00F8\u00B8}\u00F6\u00CF\u00FD\u00D6\u00FC\u00B4\u00C1\u00FE\u00A4\x02\u0092\u00A2|I1\x05@\u008B\u00C0\u00F3\u00BB\x1E8\x07\u00DA\u0085N\x0B\u00D81J\u00CB5\x07@\u00EF*\u0098\x1Ar\u00CC\u00F1U\x00\u00F7\u00A6c\x1B\u00B1I\u00EC\u00EE\u00AC\u00A3\u00C0H\u00C1\r!E6T\u00AC\u00C1\u00C0\u00A0\x07b\u00E3.Q(\u0082 \u00E2P\u0090\u0093\x1EK\x14M\u00A9\x07w\u0085\nb\u00BA``\u00E3\x18\u00D4~\u00EE3\t\u00ED\u00E1P5\x15\x00\u0085k)@K#\u00D7Bi\u00D2\u00B2Gmv]\u00D24\u00BB\u009C\u00B7\u00F4U\u0083\u00F7j\u00B3o\r\u00E66\u009F\u00F9j\u008B\u0088\u00A6,\u00A1=c\u00FC\x01\x06,90\u008F`>)\u00C1%\u00C1\x06\u00BB7\u00B9\u00CB\u00DA@l\x0Bg\u00C8\u009D\u009E\u00A8\u00AFgr\u00D4t\x12/J\"\u00C2q\u00CE?\u008D\u00B1\x15a\u00BA\u00EA\u00CA\x11B;\u00A1w\x15ia\u00D7Dd9g\x16v\u0084\x05o\u00A6u\u00E8\u008E\u00F8\x042@?\b\u00ED=\x04\u00D5\u00AD\u00E2\u00AB\u00CD\x0B\u00E1=Q\u008B\u00EA\u00C0\u00ECc\u00D15\u0097\u0094\u00F4\u00B9\u008B8\u0091Dz`\u00BA\u00BB\u00D1\u00DB\u00E3NDh\x18/}\u00C1\x1E\u00FD\u00FC?\u00FAs\x00\u00FE\x1F\u00A01\u0084\x7F\u00FE\u00E8\u009F\u00FC\u00E0\u00D7\u00EF\u00BDae\u00A5?\u00E2\u0097\x16eS\x17\u00806ae\u00F3\u0086o\u0094H\u008Al\u00B3\u00C6\f\u00EA\u00FC7\u00FF\u008E<\u0084/Z\x04)_aFz4{f^E\u00D6v'\x02\u00B0\u0088O\u0088\u00A5\u00E7\u0084\u00FB[\u00EC\u00F0d\u00D1\x03\u00ED\u00F3\u00AB\u00D8\u0082\u00D5\u00D5\x18\u008B\u00EF\u00E0&\u00B4\x07\u00C7\x11*\u00CBF\x15O\u0089Ib\u008A}?\u0083x\u0098!P\x14\x04\u00A3\u0099\u00ECsUR1\u00D5fI\x1E\u00A0\b\u00A9UN.\u0097{ \b\x11t\u00FC|R\x19\u00B4\u00F0\x10\u00C5>XG\x19J\u008ENv\u009E\u00CA0\u0099\u0093\x03k\x1E\u00836\u008E\x19dJ\"\u00AA\r\u0081k\u00AD5#)Z\u00AB<\u00F8X\u0093\u00BC^\u00B3\x10]\u00E0\u008C\u00E8\u0092D\b\u0092\u0096\u00D9H\u00B47\u00EB\u00DC\u0094\u00D4yO\u00F5`\u00B6\u00F6\u0089h\u00D3C\u00D0\u00D5\x1D}\u00F7;l\f\x03\u0085\nd\u00B4\u00CC\x07\u0089\x1E\u00C8\u0094\u00E7&\u0081\u00B7k\u00F5\u00AC;\u00A3\u00F6\u0081,\\\u00DBJ\u00CF\u00F5\u0097\x01\u00B8w\u00B9\u00E0\u00CB\u009F\u00FA\u00E4\x0F\u00E2\x16C\u00B8\u00F9\u009D\x1F\u00C0\u00F5\u009FP \x12\ts%f\u00A0\u00A0n{(\x0B\u00E1\u00F7\u00D78]\x7Fn\u00AB\u00D3\u00C1\u008A6\u00DC\f\u008Fp\x0F/;p\u00C5\u00E8E\u00B3H\u00BE~\u00DC\u0096x\u00B46K\u00EAzd\u00DBE\u00CEC\u00DCJ\u00E8c\u00A0\x1B\tU\u00E19z\u0093\u00DF[.\u0084\u00BA9\u00E0\x11\x19\u009981\u00FAY\u008A\\\u0090\u00DA\u00C6\u00B3{]FS%\u00EA\u00A9\u00FD\rF\x0E\u00DA\u00BC\u00E6Bkd\u00B8\u0095\u00A1\u00AE\u0095G7\u0080\u00BEk\x00C\u0090\x13\u00B0\u00D12\u00FB\u00E0\u00B0a\x19>k\x18\u0098\u00D4\u00E9\x1D\u0091\x04\u00E5\u0083\u00D2\u00CE\u0082\u00C8\u00E7\u009C\x19\u0093\u009F\u0088\u009C\x022\u00E0\u00BD\x10\u00CA\u00A8\u0085\u009FO\u00CE\u00B1\u00DA\x01,\x17\u00BD\u00B9a\u00FAAb\u0092~/\x0E\u00A2ur\u00D2\u00F5s=9\x0B\u00D7\u00D0;C\u00F5!\x18\b\r\u0082\x1A\u0082m\u00E9\u00FAt\u00868\u00CB\u00BA\u00EFS\u00F1\n\u0088\u00FB\x1E\u0081`l\"7\u00EF\x1D\u00B0@\x0B\x1CG\u00DAc'\u00DA\u00EA\u00908\u00C9\u00C5\x1A\u008F\u00E7\u00F0\x005'\x03\u00A2\u00C2\u00AC\u00DDQ\u00FBo\u00A4\u00C1\u00D5\u00D8\x1Fk\u00E7\u0098,\u00DC\tL\u009E\u00F8\u00D7\u009F\u00FD\x01\u00DD.\x19\u00C2W\u00AE_\u00F8>7e7\x16\x11\u00FD\u00D1\u00BE\b\u00A9\u00B0\x01\u00B8\u008FH6:\x13<\u00FF\u00EE\u00BA\u00B1\u008C\u008D~\u009B\u00E8MF\u00B4s\x1B\u00E7\x1C\u0080\u00BC?-\u00B5\x06\u00BC\u0086\r_\u0081\u00E1\u00BEE\u00DD\x04\u00ED\x13\x14F\u00C3\u00C8\u00D6?\u00BCX\u008D\u008C\u0086\u00B1wdH7\x19\x15o\u00C8\u00E4\x14\u0087\u00A0\u00FEt\u00AFB\u00A6\u00E8\u0082Q\u0088\u00A88\u00BDH\u0085\x0E\u00AF\u0084\u00E4pW!\u009C\u008C\u00CC]\u00E5\u00DDc\u009C\\\u00E2\bT\u00A7@\u008A\x04\x00\x00 \x00IDAT\u00C5\u00DF\u00C8\u00BC\u00CAR\x0E\u0098\u0095A-\u00E6\u0087\u0090\\sfB\x04E\u0098\u00AE2iMj\u00E7K\x014\u008E\u008Cp\\\x11E\u0087\u00F4Hi&tcy\u00E1@\u00ED\u00A9\x10\u00CF\u00D8\x16\u00C9[\u00CC\u00DEM\u0086\u00CB\x16U\u0099\u00AE\u00CF2\u00FC%\u0093I\u00DF\u00BD\u00C6eK4\u00A6\u00DD)}i\u00DA\u00F5\u0089\u00AA=\u0080ZK\x1Ak[S\u0096\x15\u0099t\x02\x11\u0080DA\u0081\u009B\u00BA\u00D72\u00CE\u00D6\u00B6\u00B71%\u00D3\f\x06\u009B\u00EB\u00CA\u00DB\u00F8rA\t\u0089\u008Cv\u00BD\x15(\u00CB>O\x1C\u00AF\u00BE\u00FE}\u00D5{\x00\u009F\u00F3\x17\u00DE\u00F5{\u00F3w\u009E\u00FB\u00E3-\u00B5\u00BE\x01\u00FE\x00\u00C3\u009F\u0086\u00F9\u00D3\x00\u00EE\u00C3\u00F1\x00\u00F0\x07\u0080\u00DF\x03\u00FC\n\u00C0\u008E\u009E?\x7F\u00CB\u00AF\x0E\u00E0\u008C\x18j\u00F1\u00B7W\u00B3\u00C4\u00AF\f\u00A4?\u00B4\u00A8B\u00FC\r\x07\u00BE\u00E2\u0086G\u00BE\u00E3\u00B1ox\u00E8\x1B\x1E\u00FB\u008E\u00C7\u00D8\u00F1\bWxl;nl\u00E4\u00FB\u0082\u0081\x1B\x03n\fx\u00CC\u00BF\u00C3\x18H\x15\x02R\x17D\u00C8\x15\u0096\u00AC2\u00ED\x077\u009F\t\u00B5\u0083oh\u00A7i\u00C5\u00B0\u00A9\u00DEc\u00B0\u00A8If\x13F\u00C60\n.IDRXZ\u00A8\u00B5\x18\u0089I\x1D\x11\u00E3L\u00D5\u008CjX\x1A\x0E\x17VKU\u00AD\u00BBV\u00DB|\x12%X\x12Z\x19\u00EEn\u00D9r\u00DA\u00F4\u00C7\u00B3Q\u0082\u0094-\u00A7\x14hQ\x1F\u00D9\u008Fdt]\u00A0\u0088)\u00CE$\x00\u00CD\u00F7*\x10\x1A\u00D1\u00E7\u00F76\x07\u00D2\u00C7\u00BB\r&\tJ\u00EB\u0085B\u00C99\x1F\u00DEB\u00E0\f\u00D5\u00EE\u00C2\u00A6\x151hK$\u00A2\x1C\u00CF+\u0083U\u00BF\u00C44\u00E2\u009Fr\u0082\u00AA\u00D5Q\u00FD\u00F0& [\u009F\u00A5\":\u0099\u0081/\u00F7\u0089\u0095\u00B9\x7F\u00E1\u00F3\u00CF\u00F9\u00EF\u00FC\u00E6\u00BB\x00\"\u0084\u0087\u00B0\u00EF\u00FD\u00ED\u00F1/\u00D1\u00CE\u00FC#zQ\"c\x0B\u00E2\u00B7k\u00A8(H\u00EE\u00E3\u0097\u00BB2\r.\u00E2^$\u00A5G\x11\x02\u0099}\u00D6\u008F\u00A1\u00AD\u009D;_Z\x18*\u00CB\u00D5$\x0E\u00C2{\u00F0\u00B2\x03O\x00\u00D8|`\u00B3\u0089G\u0092\u00B2\by\u00D1\x1F\u00B4\x02\u009D6\u008FH\u00D6\x1B(\u00847\u00D0x\u009C!5\"\u00DE\u008A?\u0088\u00AC\u00CAZ\x10[\u00BB\u008F\u00BC\x0B\x002\x19*\u00AA@\u00D7\u00EB\u00E0\x1C\x1D}n=T\x07\x10\u00F5\u00C0\u009C\u00D2b\u00A3\u00E6\u00D5\x12\u00AE\\\u00BBJ\u0099\u00A2}\u00A1-\u00E7\u00AA\u0090\u0091\u00E5\u00BC\u00C6\u009C\u008F\u0092\u00AAF\u00FD\u009B\u00D5\u0099cj\u0084H8\u00B7Q\u00C6y\u00F1\u00AFG T\u00E8\t\x11\u008E;\u0097\u00A5\u00E7Z\u00C8w2\x7FO\x02\u009Es\u00B6\u00E71\x1A\x11\x11s\u00B9\u00B2\x1CWC]Iw\u00AD)\u0086P\u00BB\u00A3\u00D4S\"\u00A4\u00CC\x00=\u00EA\u00BAY\u00D1\u0096\u00B5U\u00DE\u0089v\u00C8@\u00B4\u00A5\x1A\x1C-\u00E6\u00A3\u00ADC\u0097*@&1i\u00B8\u0094\u00BDb\u00DA\x1Dm7u@1\u00F1\u009Da-\u00A7\x13\u00E5P\u00BD\u00F0\u00D9\u00F7y\u0088\u00F3\u00B7\u0097^\u00C2+?\u00FF\x0B\u00DF\x0B\u00E0\x0B;\x00\u00FC\u00C2k\u00BF\u00F9g^\u00BB\u00FAFM\u00F8\x1F\u00EAK\u00D0kC\u0096Q\u00C7\x15\f\x0F\u00E0\u00B8\u00E2X\u00E3\u00D8`\x1A\u00EE\\\u00D4\u0081\u00BD]_AG\u00EE\u0092b\u00FD\u00DD\f\u0092}\u00E2\u00AD,\x00+B\u00E8RC\u00B6\u008A\u0081G\x06|\x15\x07\u00AE1\u00B01\x1FrO\u00B7\u00DFl[\u00C7\x07A\x1D\u00EE\u00B8 \x16\u00C9D\u00B8\b\x07\u0099\u008B\u0081y\x10$p[\\z\u00C0\x15\u009Ca\u00CBA\x02e#\x0E\u0089\u00A2\u00FA\u008AR)\x0E\u0084\u00F4\u009D)\u00917\x14\x18\u008Ex\u00C6\u0090\u00D6X$_n\x06K\u00A3\u009DBr\u00E5\u00E2\u00CB\u00B8\x00o\u00D3\u00E3[-\u0089\u00E4\b\u00FA\u0083\u00C4\u00BE$\u00FE\x14Z\u00A86\u009B\x1D#\u00F5x\x05\u00F6\u00B4\u0086]\u00D9\u008AvZ\u00D4\u00DD\x1F_\u00CC<\bL\x12\u00D1C\u00A0\u00F8\rR\u00AC\u008A\x01e\x1B\u0093:\u00B4\x18\x07\u008D\u00A0KVb{;Pp\u00BB\u008D9a\u00BD<\x1E\u0082\u00EA\rI\u00E8\u00EC;\u00D0M \u00A2 h\u00CF\u00FC\b19\u00E54\u00A8\x1B1\u00DE<\x078uSk\u00DE\u00D7{w\u008FI\u00F7\u00AE\u00A8O\x1A\u009F\x0F`\x02W\x07\u00F0\u00F0\u00E3\u00BF\u00F2g\x00\u00FC\u00A3\x1D\x00>5~\u00FD{\x06.\u0098\u00EE\u00DFB\u00BA\u00FEA_\u00E4N\u00D8`\u00B8_\u00D2\u00DE\u00AF\u00E1\x16;8'\u00B13\u00AB1\u00BD\fK\u00C9,\x11\u00AC~\u00EB\u0088Ae\u00BCF\u00BB^\x13\u00C2\u00AA:X\u00890^\u00CA\u00A3\u00EF\u00A8\u0083\x10\u00D3\u0081\u0097\u00CD\u00B1Q\u00F2\u00EDn\u00B8\u00C2\u0086*\u008C\u00A6jM\u00D1\u00CEN\u00C6\u00A0`\u00A4\u00D8N>\u00DA\u00DB\u0081T\x19\u00CA\u008E#\u00DB\u00C1m;B &1\x1B\u00C1W\x16\x7Fu\x05>\x11q\u00E88\u00F5\u00DCn\u00AF\ba\u00DD\x18\x1D\u00CAh\u00B6\x14%\x05\u00FD\x01\x14\u00DA\x19\u00C8\x04TT!\u0098\u00D3\u0091\u00AA\u00D8\u00D0\u00CA\u00AA\u009C\u0085|\u00E4\u00AA\u009B03h\u00C7\u00A4#s\u0091\x062St!8\u00FA\u00C1\u00C9\t\u00A3[FD\u0082\u00AAJc<q\u0098s\u00ACtb\x0F\u00C7\u00E7H~!&2\u00A0\nE\u00F1\u00CC\u00E86\x14\u00A3S\u00F0\u0096\u00A3\x11'\u00FB4y\u00B7i\u00E5y\u00A0\u009B/\u00CFI\u0084y4\u00A9my?\u00C8V3k\u0085\u0095tv\u0094\u00FB\u00B5\u00FA\u00DB\u0099Vy\t\u0082\u0089\u009Av\x7FR\u00B1\x14M\u0088Y\u00B5\u00D3\f\u0089\x1D5\u00C4\u00DE\r\u00C8u\u00A0\u00DF\x07\x1C\u00E3\u008B_\u00F9\x1E\u0080*\u00C3\u0097\u00F1\u00E5\x0F]\u00B6\u00CB\x1F23\x00\u0082 \u00AFQ\u00AA\u00C0\x15\u009C\u00C7\u00ACm\u00D8\u00AA\x1D\u009Dg\x12{ \x03k\f!\u00D4\x03]\u00A3\u0087\u00A0\u009A\u008A'f\u0092\u0088\u00E2\u00AE\x01u4q\u00F7K\x15\u0099\u00BF\x06\u00E0\t8\u00AEp\u00C1\x0E\u0099\x03\u00D5g\u00B5\u0094\u00C1\u00CBI\u00D8\n\x1C5\u008E\u00D6\u00CDi\u00BD\u00B5\u00BCF\x06\u00C6s\u00BF\u00B2\u00EC\u008BEf%\u00AC\u00DB\x01\x1C=>M{Q&\u00E3t\u00F5R\u00B0\\h\u00AA\u00A4vx\x19K\x1B\u00F5d\u009A\x0E\u008C\x16\u00E6Jf\x01x\u00C6\x00,`\x00\u0092\u0080\u00CDXg\n\u00B7\x15w\u00D1\u0089d \u00B9\u0093\u00B2\u00AEQk\u00A6\u0089\u008Fs'PQ\u0083\u008E\x15%\u009C\u008F\u00E9\u00A5\u00E8E\x1A6\u00C9\b|\n\x05\u00A0\u00FA\u00C9\u00A1\u0099\u00DCz\u0082\u00E5\u00A9\u00877\x15&\u00F7\u0087\u00B0UJ\u00AB\u00DF\x1A\u00EFb\u00DD?\u008D\u00EB\u0096T\x17\u00DAh\b\u0087\u00E7\u00D6\u009E\u009E\u009Dq\u00A0\u0098L\u00A2'\u00DE\u00A3\u00AB\fh\u00E7\u00F4\bI\u00AA\x16b\x06\x19\u00E3\x00\u00CF8\u008C\u00F9\u00CA7>\x04\u0090!\u00BC\u008C\u00AF<\u00EF\u00D6&\u00EB\u00DF\u00FA\x15\x04\x19j\u00C1u,:\x17s\u00D8`\u00B8\u0086\u00F2\u00FC\u00CB^\u00D0\u00A5\u00FE\u009A?Pp\u00BF3\x04\x19\u0092J\u0095X\u00CA\u00AC-\x05>\u00CF\u00AFv\u00DE\u009D}\u008FE\u00F7\b\u0086/9\x03\u008F-\u00AE\u0089\u00AB&\u0086E]\u00C6\x0B<\u00F7\u0082\x149\x1B\x03i\x06\u00A2&\u00C2`\x1E\u0086B\u009F\x0F[\u00FB\u00A2\u00B1.\u00EEI\u00E2;\u0095\u0089\u00A9\u00A8\u0086b'\x15\x1E\u00CD\x14%sd\u00BC\x03U\u008A\x10\u00FEc\x11&\x159X\u008C\x06\u00D2\u009F\u00D1\u00C8\u00D4\u00FB\n,\u00DB\x03l6\u00B4P\u00BE\u00EE\u00CC\u00C30Gn\u00C0\"\u00D6(co\u00BA\x16\u00CFs?0\u00CD\u00D3`Y\u0084?\x1A!PZ\u00BA\x18\u00C2\u00FA\u00DC*\u00F6b\r\u00F4)\u0082U\u009B\t# F\u00AC\x04\u00A2\u00BAg\u00F5\u00BD\u00A4m\u00BB\u00DD\"\u0081\u00C5\u00FA\u00F5\u00F4\u00CE\f(\u00DA\x121.F\u00CB\u00F4+\u0089\u00C1\u0096\u00A8)\x06\u00D2\u00EF\u00D9\u00A6\u00D5\u0085\u008386\u00A7\u00AD\x06\u008D\u00A9\t\x1D\u00F8\u00CA\x104<\u00B3\u00E0\u00A1W\u00AF\u00BC\u00F6<\x00\u00EC\u0097\u00E3\u00F1\u0093\x7F\u00FE\u00F2\u00A3\u00CF\u00E1\u00DF\u00FA%\"e\u00E9\u00F4D\x05\u00C1\x04`\x1B\u00DC\u00AFQq\u00FD\x0600\u00C7\u0093\t\u0088\u00E8\u008BQ\u00DC\u0096\u00FA!\u00A5\u00B5o\u00E2\\\u00EE]\b#c\u00DEq\u00F60lm\u0092\u00AD\u00DE\u00A7\u00C2*bB\u00AF\u00C2\u00F1\x15l\u00DC@\u00D6\u00B2^\u00C2\x15\f\x17\x1F\x186pL\u0095/\u0093V\u00CF\u00BD\x1C`\u00B8\u00B4 \u00AA\u00D1\u00A4\u00FAX\u00D4\u0085JZR\u00C4\u00E3A\u00DB\u0083\u009B\u00EA5\u00D6\u00F9\u00CA\u00A84DN\u00C5A\x06\u00A0\u00EF\u009B\u00957!^#-\u00E1\u00AB\u00FB5\x16\u00C6\u0098\u0083,%\u00DC\u00B9\u0086Iz\u0093\u00B4s\u00C0\u009Ar\u00E3\x05}'\u00801\x1C8\x18\u00DB\u00D8k d\u00CC\u00FF\u0084\u00CD\x19\u00CAB/\u00BCB\u00C9\u00EDd2c\u00C6\u00B9KYu\u00DB\u00A1\u00A8<\u00CB\b\u00BF#\bx\x0E\x1A\u00C9\u00C8 &\u00EF)~\u00C1\u00C8\u00C0,\u00B2\u00EA\u00CC\x15q\u0083Mn\u00E1\x0Ea6\u008B\u00F32\u00D0\u00D0\u009A\u00DF\x7F\u00D6\u00D85\u00A7\u008B\x04\x17\u0083\u00E3\u00BD\u00D2\u0088\u0089\u00AC\x1F\u00A1 #\u00D5V\u0080\u00EA\x19\u00F0o;\u00C8\\foS\u00E8,\u00C6#\u00E3\u00A4\"+\u00E5\u00EAM\x16\u0097\u00A8Gv\x1B\u00CF6\u00CD\u00A5\u0092]\u008Aq\u00CC\u0098{\x1B\u008E\u00F1\u00F5\u00AF>\u00E7_\u00FC\u00EC\u0093\u00FB\u00A7\u00C7\u00A3\u00EF\u00F8\u00A2\x7F\u00FE\x0F\x01\x1A\u0088\u00F8w \u008A\u0094\u00C1\u00A9&\u00C8m\u00A8\u00B0\u00DEr\x05m(/B#j\x18b\u00CB\u00F7b\x06Ys\x00\u00C5@\u00EA:\x1A\u00A3\u00D2\u00EE\u0080\u00DB\u00BF/oq`\u00E9\u00D7\u00FD\u00BC\u00D5\x009\u00CD\u00F05\x18\x1E\u00D0\u008E\u00B0\u00DBZ\u00A9\u00C1a\u00F4&\u00C4\u00FB\u00B2\u00DCE\u009E\u0085 \u00F2KJ!\u00D9\x1F\u00C4\u0088\u008AY\x053(r\u0096\x17#\u00A2t\x15\u00B6\x1Cm\u008B\x11\u0084\u00CD!\u00C6=\u00DB}\x13\x05\u0084\u00D9\u00BEIP=\u00EE8\u00ABB\u00AE:\u00FE\x00\u00C4\bJ\u00B4\u0080\x0B^\u0092-\u00B6\u009F)\u0089\u00DD\u00C5\u0097\u00B5\b\u00C2\u00F0\u00B4D\u00A0\u00A2\x16\u00BB\u00AE\u00EBbW\u008B\u00BC!\u0080\u00F4\u00B1c\u00E9w1\x1E\u009D\u00DFavk/\tx\"\u00ED\x05]2w\u00C2\u00D6Ks\u0096(b\u00A0vE\u00EA\u00C7\x1A\u008A\u00C8\u00FEKZ{^n\u00D9\u00DE\x1D\u00AF\u00C5`\u00D8\u00D1\u0088\u00A4|\u00FD\u00AD\u00FD\u00BA\r\u00ED\x19L\u00F6M]!#\x17\u00D3H\u008FMGG\u0099\u00F8D\x0F\u00C8\x04n\u00BE\u00F0\u0092\u00DD\u00FF\u00C4\u00A7\u00BFc\u00FF<>\u00FB\u00FE/\u00F9\x17\u00EF\u00EE\u00EC\u00B7|IrQ\x1D\u00F0\x07\u008D\u00C8O6\x02/\u0089\x1F:q7\b6\u00EF\u0081\b$\u0089[\u0099\u0081\"\u00D6\x1E\u00DELF\u0090\x0F\u00BE\x18B\u00A1\u0082~\u00AEBxuNg\x06\u009C\u00F8\u008C\x1D\u00AD\u00C5t\u00C0\u00F1\x12.\u0098\u0088\u008A\u00CCW\x1E[\u00C2)\x1D9\u008Dv\u0090\u00F6^\u00FDm\u00A4\u0085^\x19\u00C9@wb\x12\u00A1X\u0091\u00DA\x03\u00C3\u00A6\u0091\u00C7\f(\u0086\u00E0#\u00C3\u009E\x15\u00E2\u00EC(\u0086\x03\x18v\u00EF\x006\u0098\u008Fc\u00CBEb\u00CAl\u00D4\u00FAu\u00D4\x02\x1A\u0088]\u0093\u0086\u0091/H\u00E4\u00B5\u00CAG1\u008A6\x7F\u00BC\x0F\u00A5tm\u00D3.\x04\"f\u00AF2\u00B6@\x11~\u00BF^\u00F3\x0F\u00DA\x00R\x06V\u00FB\u00BA\u00D6\x00WPOJ\u00EC\u00B6D\r\u00D0\u00EEN\u00B9;\u00B6\u00B7D\u00A6\u0084\u00DE\u00ED>\u00CD\x1EP\x04\u00AD\u00A0\x1E\x06f\u00BB\u0096JS\u008D\x1C\u00C9^\x01@\tDRE\\\x1E\u0086[/^\u0091\u00FDg\x1Fd\u00D4\u00F4B\u00BC\u00F5;r\f\u00C6s+\u00C7\x03\u00AB\u0087#\x19R\u00C4\u00B1\x18Z\u00B1\x19\u00A2\u008E\u00ABG7x\u00F5W\x7F\u00ED\u00FD\u00FBg/\u00BF\u00FD\u00BE\u0087\u00FBk\u00B9\b\u00DF\u00D4\u00CB\u00B50\u00AE\x11U\u00826D \u00D1\x15\u00E0\u00D7X\u00F5w\x12~\x0B\"\u00A9\u00C1\u00B5\x1D\u009C\u0093\x19\u00A8\\Z@\u00ED\u00DA\x01I\u0093/\u00D5\"\u00CE\u00ED{2\u0096\u0085\u00BDK\u00DD\u00CEpl\u00F1,\u00B8\x01*d\u00EAP\u00AAu\u009A\u00F5\u00EAA!\n\u00A7|\u00CD\x1DO\u00C0\u00B1g\u0089\u00B6\u00E8\u00C5\u00EE\x11\u00BA\u00AC\u00F4\u00E9\b\x16r\x1C\u00A0\u00C7\u00C0T\u00CE\u00BDBe&\u00FFR:u\u0094/pL\u00D7\u00B6\u00B1u\u00B6\u00DESnH\x10\t\u00CC\u00B0mD\u00FE\x04\u00F3\b,\u0097'\u00F9\u009B!\u00C2\u008Fe)7\u00AA7q\u0082\x10\u00861\u00F0 G\u00ED@n7\u009F-\u00D2\u00C2\u00DD\u00D2\u00A9\u00C52k\u00FD\u0094\u00F45\u00B7Zx\u0090\x7F}\u00A2j\":\r\u00E8R#\u0088\u00D1\x13:\u00D3\u00BB`\x07b\u00EF\b\x0F\u0089\u0096(\u00B0\u00A0yA\u00E4r\u00DB%\u00E9Ir6\u00D8\x1D\u00C7\u00E2|m\u00C9\u00EE\u00C3aG\u00EB\x03\u00DD\u008AF\u0088mB\nn\x11\u00ADi\u00CE*\u00F1TA&\u00A0\x023\u00C6\u00EF\u0091\u00BB0\u00819\u00A9Ry\u00FE\x1DoKFU\u00B1\x131\u00E42$\u00F2\u00F9%\u00C3\u0098\u00A7\u00B1\u00AB_\u0089;\u00D7E\u00C0\u0083>g\u00C4\u00C8\u00A4Z\u00E59?\u00F7\u00E6\r^\u00FE\u00FC\u00E7\u00DE\u00B7?|\u00FC\u00D2{\u00E6\u00BD?\u00C8V\u00EF\u0082\u00D9\u00D7\x00\x1E Kx\u00F3m\u00A6\u009D\u009Ae\u00DD\u00BE\x02\x16\u0098\u00DF\u00DC\u00840\u0094j\u00D0Q\x03\u00DA\u00B9=B\u00B1\u009F\u00D7\u00A2\u00D0\u00F2S\u008B\u00E5\u00BC\u00CB\u0093\u00D4\rk\u00F7\u00B76\u0096\u00DEn\x1B\u00A7\x10\u008AK\u00C2\u0084A\u00F0u\u00D3]Fco\u00AB\u0084\x16\u0083\x1A\u0088b\u00AE\x0E\u00A4\u00FD\u00E1b%\u00F5uMh\u0083\x03\u00C3\x02\x11\u00A9\u00A2s~w\u00E6G4\u00B5\u00C3\u00C8\f\u00A2\u00D2\x12U2\u00DA\x1D\u00E4\u00BA4\u009B\u0090)tAD\t\u009D\u00C1\u00C5\x16+\u00A8\u008B\u0085UD4h\u00DC\u0092\u00A9j\u00DEY\x7F0\x11B${\u00AF\u00D7\u0091\u009F\u00F4\\\u0085^\fU\x0B\u00B5\u00FB\u00FE;\u00B17Cb\u00EA\u00D0\u00DD\u00AA/i\u0098]n\\!\u00F5\u00F8Q\u00B6\x05\u009F\u00CD\u00D0\u00D7\u00AF\u00EF#W\u00FF\x1B\u008CR{b~D\n\u00A6\u00A4\"U\u008D\u00EE\x1E\u0083\u00DE\u00C6R#\u00A1\u00882\u00E7\u00B3\u00CF\x031G\u00CD\u0099~\x17s\u00E1\u00FD\u00D2\u00D5\u00D8\u00E6LjKc\u0088\u0098-Xj2/\u0085v\u008EG/\u00FD\u00FE{\u00F6O\u00F9+\u00EF\u009Eo:\u00E5yC0\x01\x1A\rMq\x04\n8\"3p\u00C1\u00FA\r\u00A6\u0092h9!\u00A3P\u00C1\u00ADHD\u009D\x13\u00F0vv\u0086\u0090\u008Bp\u00AC\u00ED5\u0082\u00B7\u00EC\u00E3\u008E\u0082\u009D\u00B4\x00\u00F7\u00FC\u0086\u0096\x058\u009B11\u00F5{\u0097\u00F7b\u00B57h\u0087\u0081\u00CD\u0081a\u00DCW\u0081B\u00E2\u0086\u0090~\u00A3WasK\u009D\u00D9\x11\u00A6\u00D6\r\u00ABGA\u00F7\x1CP\r\u0082\x0E\u00FD\u00F5\u00AB\u00E5\\\u00E9\u00E5\u00CE]\u00A2\u00BA\u00BB\n\u008EK\u009Eb\u0080\u0089\u00DCc\x1E\x07\u008C\x05\u0089\u009A\u009D\u00C5-\u0093\x1D\u00E5%Lz\u0092\u0094\x06\x00G\u00ED\u00C6\u00C4\x13K75\x04\x02\u00EBk\u00C8\u00D9\x16\u008D\u0096\u00EAS\u00E1\u008F|\u0096f\x1B\u00A15Z\u009C\u00FE\u0089\x19d\u0092\x16W6\u00F5\u00DE\u00E9\u009EO\u00BD\u0090\t\u00E1\u00F4\u00D4\u00B3t:Q\x18\u00B5\bo\u00FD\x11CQ\f\u0081%a)y)\u00F7A\u00D05\u00D4\u00C5}\u0081\u00E9\u00BC\u00F5\x1C\u00C0lR\u00DE\x03\x04X\u00CF\u009E\u00F4>\x0FA\u00C0\x15\u00F5\u00D8\u00C7_\u00F7*\u00E2/\u00F5\x05\u00ED\x1E]\u00B5(\u00A60\u00D9?2\u00C1\u00F4\u00864\u00A6\u00A6\u00A7\u00C1\u00B6\u009E\u00FA\u00CA\u00D7\u00DE\u00BD;^~\u008E\u00A7}\u008B\u00D7\x15\x02\x15\u0084\u00C10\u0088\u00EE\x1A\u00A5\u00E7Sjg\u00ECz\x10\u00A6\u00DBJ\u00EC\u00B5\u00AF_?n\u00AD\u009DA\u00C9\u00B9\u00EA\u00FEk\u00C2R\x19\x19\u00E3\u00D5\u0099\x06\u00D3\u00A3\u00CD\u00DA\x02\x13Zimb\u0090n\u00D4\u00AE\x16\u009C\u0098A\u008D)\u00C8\r,\u00DE\u00EE\u00DCR\u00BET\u0097\u0091\x12W\x11\u0086b\u00C6m\u009Bx\u00D3Vp\u00C6\rdK\u00BD\u00E831\x01\x19\u00B811\u00D3\u00AD(\u00CF\u00CC$\u00F3\u00C8\u00E4\u00A6T-\u00E2)N\u008F\u0080\u009F0:V\u0095\u00E7$\u0083\u00AC\u00D8\u00CC\x05\u00A1\x07o\r\u0096\u0082\u00D9\u0092,\u00A2*\x0B{2\x01\u0084z\u00E4\u00A6\x055P\x16q\x11P,J-8x\u0099I]\u0090\x17\bk\u00BB\x18\u00CA\u00C9\u00D3#\u00E5K\u00CC\u00A1\u00EA\x19\x02n\n\u00C1\u00F5bJ\u009D\u0099\u00F9d\u00DB^\u00DE\u0089\u00DE\u0097DH\"\u00E8\u00D9$7\u00C8\x14\x1A\u0081\nb\u0093I\u0098\u0098\u008ES\u0086\u00BB\u00E7\u00DC\x01\u00C5X\u00D2\u008A\u00D4\x19\x0F\u00E7\u00ABl\x00\u00EDY8\u00D0\x0B\u00A1\u0094\x04G1\x13\u00CECg$\x19T\x06+F!f\u00E1\u00F5N\x03\u00E7\u00D43\x15rr\u00EC\u00AF\u00FBs\u00FB\u00EF]\u00BF\u00FC\u00CE76\x1F\x18$\u00DB\"\u00A6`Gls\u00B2\u00C2\u00FF5\x16\u00A0\u00DB\x0B\u00E8BL\u00CB\u00B6\u00AE\x0BY\u00EB\u009D\u00A0}\u00A06\x10\u00ED\u0092\\\u00FC\u00BC\x1B\x13\x0B\x15tDQjDW\x11\u00C4\u0088\u00F4\u0080\u00E3>\u00B5z\u00D4\u00AF\"\u00FE\u0090\\T=\x04\x07\u00CD\u00B1\u00DB\u0086\u00E1\u008E\u00E1{\u00C9x\x0B\u00F7\u00E0P\u00A6\x1E\u00F6\b-\u0086\x12\u009AT;1<\x10]!\u009A\u00C6\u008D^|\u00D0Uit\x0F\x1A.\u00AD?\x1A\u0091\u0092\u00A2\u00B8\u0099z\u00FC\u00E2\u00D1\x7F7\u009A_\u008D\u00BA;\u00E3<\u00CC\u0094!IF\u00BA\x18\x05{\u00F0\u0090\u00DA\u0094e\x1A\u00F0\u00BE\u00A2\u00F2\u00FC&\u00C1\r%m\u00D2(\u0088|\u00E6\u00B1(e\x11\x07R\u00DA\u0081\x16\x7F\u00BD8\u0086\u00D2\u00DD5C\u0088s\x17c\u009F\u00EENt\u00E0\u00FDw\x11\x1A\u00AF\u00EF}\u00C3\u00865kR\u00C7G\x0EG\x03H\u00EF~\x0F\x06\"\u0083\u00ABk\u00D5w\u0096L\u00A3\u00A1T\u00C6<'s,5\r\u00C8\x1C\u0085\u008Cv\x14\u0083\u00CB\u00C6\u009AAP\x03\u00ED\u008CVcT\x07t\f\u00E8\u008CF\u00CC\u00CCN}-F\x11c\u00A9jN\u00C1\\\u00E6\u00CD\u00F1\u00CE}\u00C7\u00E5\u00ED\u00B1L/X_\u0086@\x03\x0F\u0090\u009B\u00A4`\x07p\x1F]\u00E7\u00D6\u00C6\u00ABE\u00C8*E.c\u00A3\x16,?\u00DB\u00E2\f\u00E9ZFG\u00B9\u00CE\u00C2\u00D8\u00D8\u0089\u00FCl/\u00E8de\u00E8\u00E1\u00C7J\x7F.\u00EB\u00FF\u00DE\u00AE\x03\u00D6\u008AI\rnz\u00DB\u00AD\u00B8\u00E5>8\t\u00E5\n\x03W\u00D8\u00B1\u00D9\u00C4\u00E6;v\u00CC\u0088K\x00\u00F7uH\u0099OF\u0097\x1E\x05\u008DA\u00C9O\u00F1\u00BA\u00A9\x1E\u0087\u00E1\f\u0091\u00FC\u00DD\u0093\u0087\u00D6 \x1D=\u00D7b\u0086\u0096\u00AADy+\u00C2\u00EB \u00B7c\u0095Z\u0093d\u009F\u00EE\x18C\u00F3\u00D7\u0088\u00D85_\u00B1\u00D0Ls\t@\u00F5\x12\u00D9@#\u00D87R5\u009B$C\u00A4\u00FDj\u00E1f\u00FD\u00C2)\u00E2'#\u00CD\u00E2\u00A7lw!\u008AQ\u00DF\u00F5\u00C4\u00D2-W\u00AB]\u00F6\u0080,4\u0092HH\u00E3\u0092pJ\b\u00B7H_\u00C5(\u00C0Uu\u00BA\u00F5\u00A7\u00EE\u009CR5U\u00A6\u00C9\x1D\u00AB\u00E4\nmFI\u00F5\u00AD\f\u00A5\u00D5W\u0099I\u00CC{_\u00BC\u008D\u00B53\x13\u00CEIG\x0BT\u009D\u0084\x0E\u00DC\u00F5]H\u00AE1\x1C?\u00BD\u00F9|=\u00D5$\u00C7\u00E5\u00F1\u00ABo\u00DF\u00E1\u008F\u00DE6M\u00C0\u00D4['\u00AE\x11\u00F9\x07\x11[\x10\u008B\u00BC\u00D2k\u009Dh`\u00A2\x16h7\u00C4I\u00C2gFb\u00CBE(\u008F\u00C0\u00EA\u0092\u00AC\x1A\x07\u00E5\u00BE\u00F3\u00A5\u00FD\u0093n/\x0EkM\u00A5\u00B0\u0086,Nj\u00C6\u00AAj\b\u0095\u00F4\u0089\u00D7\u00BD\u00E3X!\u008C\u008Dx'R\u009D\u00E2\u0092\u00D8E\u00CAhK\u0080\u00CB\u00FDW)\u00C0\u00D0o\u00F9x\u009AM\x00\u00E1a\u00F0\f(*5\u00E2B\x06(\u0095\u00C5x.,f\u00EF@\u00CDc\n\u00EAT\x1F\u00E45Q\u00B95@EZ\u00D4\u00BB\"\u0094Q\u0084\u0092\u0084\x03\u0094\x18N\u00F1X\u0084)I\u00B9\\\u00D7(5\u00D1\x03\x19\u008C\u00AF\u0086\u00CA\u0080\u00D3\u0092\u00CA\u008A\u0082hm5x[\x018\u008D\u00B8\u00FA\u00EBdsX\n:'\x1C\u00A7\u00D1o\u00F6q7\u00A9\u009C\x12\u00D6\x01g0X7\u00DA-p\x1Dd\x06\u00EC-\u00DB\x15sr\x12\u00ECZ7\x01\u0089\br]pU\u00F4\u00B1v\u00E9\u00DE\u00D1A\u00ADs!\x1EM\u00CE<\u009DKD\u00A09\u009B\u00A76\u00DB\u009E\u0090i\x7F\u0098\u0086\u00AE\u00E6\u0099\u00FB\u00DB\u00F6/\u00CEG\u00CF\u0098S2I\u00BF\u00C7= \u0093\u009168\x17\u00FF\u00C0\u0086HS\u00EE.\u00C2\"P[\u00D4\x04\u00C2\u00C0\u0085\u00D8*\"\u00D1\u0093\u00F8\u00B6\u00F5\u00BC\u00D4\u00F3\u00B1\u00A0\u0082$d/\u00E2N\u00A2\u00F5-\u00D5\u0080\u0094\u00A2\u00D9\u00BF\u00CE\b\u0080\u0085\x19\u00F4\u00E3V\u008C\u00C8\u00FBy\x00\u0080-\x1D\u008D\u00AB_\u00A0\u00F7GD\x1A\u00D7f\u00FEA{\u00F70%\u00CD\u0091\u0082\u0081\u00B6\u00A6\u00E6D\u0095e@E\u00C9\u00E2X\\3\u00C1 %\u00AE3c\u00D8\u00F4\u00C4\u00A0\u00AA2pX\u00CD\u00CD\u0086\u00B2Y$\u00EAZ\f[T\x03d\u00B8\u00E0K\u00E5\u00D0\u0082\u00A8\u009C\x0BZ\u00BA>o\u009E\u00B0\\\u0084v\u00BB\u00D2OJ+;/p\u00A1\u0093\ri\x02o\u0084\u0094a\u00D2\u00A9\x1B\u00FBz\u00DDd\u00F8\u00B4\\\u0098$ \u00DDf)E\u0096\u00D1\x7FXxWyV\u00E4\u00C6\x0B\u00C2\u00B3D\x19\u009Di\x18\x19\u00C5\u0091\u008Cx\u0089*\u00840\u0098l-\r\u00D1\u00A4\u00CE\u00DE\x11C!D\u009F#*\"\u009D\u008C\u0082\u00B59-n3F\x11\u00BDxs3\u00B6\u00BE\u0091\u00B7!\x19JC\x12u=\u00B0=\u00BCyf\x7F\x1D\u00AFmS\u00FA2\u00EEC\tIB\x06)\u00BDIx\u008EkT\u00F8k\u00CFV\u0094\u00B4\x152\u00E8\x04\u00D9\t]a\u00C7\u00ED\u00BA\u0085iti~\x1B}\u0094zPRX\u00DF\u00CDV\u00BB\u00C1\u00DA\u0086\x18\x14\u00892\u0083\u00A3\u0092_\u00C7\u00C3\u00B9C51\f\u00EC\x0En\u00CDN7$\u0089+\u00D2\u009B\u00AB\u00ACz\u00B4\u00AAH\u0082\u00DA\u00C2E\x7F[~G\u00A8\x04&\u00B5\u00A9\u0098h\u00852\u008B\u00D8\x01\x05\u00CF\u00EA\u00BAD\bdB\"\u00BA\u00B346p\u00E3\u0098&ae\x14\u008DS\u00A4\u00D6y<&\u00D7\u0095y6\u009F\u009F\bVL`\u00A2\x16<\u009F{\u00A78Z\u00F4\u00D3\n>u\u008E\u00EC\x10\u0094\u0094\\\u00A8\u00DE$kAi=\u00E7\u00F5xy\x02f\u009E\u00A7\u0082\u00A8\u00F2(\u00A8\u00ED@\x19\u00B3]\x1F\fN<$\u00CF\u00F7\u00D6\x17Il\x00\u00C9\u00A8\x14c\u0080fsX\u00D4\u008D\u00D6_(\x00\u00C8\u008B\u00B1\b\u00BDt\x067\u00AB?\u0080\u00FA\u00AA9\u00AD\u00FE\x04\u00A1\u00CF\u00AAe\u00C0P\u0089\u00B2\x07\u00F8\x12\u00B3\u00B00\x1E\x04\u0093\u00AB@\u00ACv^\u00DA\x10\u00E25^\x7Fe\u00DB_\u00B5\u0087\x18\u00B8\u008F\u00E9\x0F`\u00B8\n\u0088\u00EF*\u0081\u00BE\"\u0080i\"\u00E0\u0093\u00E4\u00F7\u00FA\u00F4,(q:\u00AF\x1B\x16\u0097\u00CDTn\x13lq\u00DB\u00C6\f\u00BC3\x17\x0END\u00DDR|;C\u00A9\u00EF\u00DD\u009Eayn\u00FAw\r\u00B8\x1D\u00D3\u00B0\"\f\u00E5\x11\x02\u0083EXO\u009E\x0E\x03\u008A\x01\u009D\u00D1\u00C0\u00E0}*\u00EAR5\x04\x07\u0090\u00C7\u00F5\u00F0:Z\u0091\n\u0093\u00FB4x\u0086\u00D10OB\u0085\u00B9\u00E8\u0089p\u0087<\x06\u008CIc\u00EC\u0082\x18\x07\u0099\u0092\u00F5\x05\u00AC\u0085\u00C4\u00A1\u00A8\u0084Y\x1E\u00D2\"\x12%\u0088X\n\u00C2\x06AtH+\u00F8Z\u00A5W\u00EB\u0092\u00C6\u00B6|\x04\u00CCNHOi\u009B\x0B\u0096Ld1\u0080\x19\x1Cs%\bJ\u00CC4\u0094y\u00BF\u00D7@\u00A6'/\u00F7\u00D6\u0083\x0BE\u00AC\u00FA.b\u00B3\u00A6\u00DE\x00\u00DAt%!7\f\u00C9YZ\u00CA\u00B2\u00A1\u00D56\u00E2\u009Cx\x1F\u00BB\x1B\u00B2^C\u00AB\u0095X.E1N_\u00AE1\x18\u0094\u009D)\u00E6$1\x11\u00ED\x0B\u00BDx\u00A9\x06sf\u00FE\u0084\u00EB\u00BE\u009C\u00A7\u00F0\u00C0\x14\u00F3\u00D8_\x7F\u008C\u00FDw\u00AF^\u0081\u00F9\x13\u0088\u00A8C\x11\u00FC\u0080T\u0083a\u00FBj'\u00B0\u00C6$(\u0095a\u00BDv`\u00A0\r\u00E5.\u0088\u00F0|\u00D1\u00E7\x1B\u0083H\u00BBBG\x07\u00FA\x04\x16\u0084\u00A2\u00C5`\u00E5\u00BD0\u0093\u00C1\x12\u0089\x0En\u0087-\u00F3X\x0BB\u00EA\u00F9\n\u00C5Pz`T\u00FF\u00BD\b\u00BC\b^\u00E3\u00E3\u00B9\x0E\u0084aT\u00FD\u00DC2\u00A48\u00E2\u00F8k>\u00AC1\u00A5\u00F5\x1C}\u00E3\u00BD|5\x1A\x02\u008A\u00F2'Q\u00FB\u00A4\u00ED \u0096\\\u00C4\u00DC\x05\u00E3\u00AB:\t@\u00B7'\fhWjFCz\u00A9\x06\u008B\u00C4`\u0084`\u00FD\u008Ez^\u008Cjt\u009F\u00CDY \u00C2\u00D4\u009F\u00C6\"\u00AE[$\u00F1\u00A4\u00D8g\u00DB<\u00A4'w\u00FB\u009B\b\u00A3\u00FAd4\u00AC\u0095*\u0082$H1\u0087\u00B9\u0094!?Z\u009F\u0094\x03\u0080\u00B4'd$\u00A1\u00A2\x1Fy\u00BE\u00A9#\t\u00BFQL\u00C0CZg\u00A2\u0091\u00E6M\u00F7\u0091Q\u00CF\u00C1\u0098\x04\u00A4\u00E1\u00CF%\u00E53\u00DD\u00BAT\u009DDI\x19\u00FB1\u00A2\u00AD\u00E3(\x03\u00A8n \x14\u0093%\u00E4\u00C5L\x06\u00E0\x17\u009E\x1F\u00CCL\u00F75%y\u00B1\x7F\u00A3\x1B.i\u00D0\u00B4\u00CB\r\u00F6\u008B=\u00C2a\x0F\u0082\u0087\u009B$\u00F1\u0080\u00BC\x04k\u00E0\u00D0\u008E\x0E\u00E3k\u00FF\u00C5N\u00CC\x05\u0092\x01y\x0E\x1Aq)\u00A2\u00CE\u00BA\x0E\u00AFs\x1C+\u00C3 Ax\u009A\u00C3Je\u00F0\x1E\x06-\x02VnEh\u00CFKTbC\x05\u00F5\u00A9\u00DC\u0086\u008E\b\u00C6\u00D2\u009E\u00D6c\x10\u00E9\u00C6\u00C5\u00A2\u00F6\n\u00AEG\u00BD\u008E\u00DA\u00EA\u00CD\u00BAjs\u008Ai\u00E8o\x15N\u00D5}\u00CB0\u00B9\u00A1*\x1A\u0097$7\x14\u00A3\t\u00A3\\\u008D'\u00CA\u00C0\u00C7\u00DF\x17\u0088}X\u00CE\u00EC\u00EE#\u00B20\u00AD\x10G\x19@\u0081\u00B2\tt$P\u00C5<s\u00EC\u00F97\x17\u0099`3F\x0B\u00CA\u00D1\x02\u00AD\u00DF\u0093i\u00A0\u00AA7\u00F7\u00D0c\u00A7\x0B/\b\u00A8\x13\x0B\u00AA\u008D<f\u008B\u00E1\u00CC\u0093({\u009B\u00D6\u00FC\u00F1\u00A1&\u0088\x18\u0095\u00F8\u0093\bB:~\u0087\u00D3\x0B\x02A\x12\u00F7\u00DA\u00973\u00C3\u00A0\x17\u00E2T\x7F\u00A0\f\u00A7\u009A\x07\u00AA\x15\u00CD8X*\u0092\u00DA$\u0083\u00EC\u00A8g\u009E\u00FA4\u0085b\u008A\u00F9\u00D5\u00FC\u0083\u00FD\u00E6:\u00CE\x00%\u0090\u0099pL\b\x01\u00B2=\u00BA`\u009F\u00CAX\u00C3N\u00F8\u00AA]n\u0094C w\u00E3\n\u0081\x157P\x7FK\u00DAWA\u00D4\n\x15n\u00E7`\x00g\u00FBB\x12 \u0089\u00B8[\u00C1\x13\u00F2\u0091\u00D0\\y\r\u00ED\x1C\x11\u0093\u0088z\u00AA/\u00EB9kt\u00E3\x1B\u00A3\x15,\x0B\u009F\u00BD\u00B3\u009D\u00FE}\x1A\u00B2\u009A\u00814\u00CE\x0F\u00D5Cd\u00E6\u00E8h\u00A2#\u0095\"`\u00CF\u00BE5\x14\u00E0;\u0096\u0082\u00A3}n\u00BC\u0098^0\u00C9\u00F5zEN\u0086}\u00B0R\u008B\u00A6\x01\u00C3\u0099\u0086D\u00FB\u0087\u00B6\u0085\x1B\u008C\u00B0L\bl'b\u00D0k1\u00EC\r.\u00E03\u00C1\u00B3\u00AF\u00AEg7sQ\u00EAx,p\u00AC\u00ED\u00B3\u00CDe3\u00D5\u00B6\u00A0W\u00F8o0\x12\u00B7\u00A0\u00B57\u0086\x10L\u00CB\u00D7\u00EB:u\t6\u0083L\u0081\u00C7M\u00CF\x10b\x14\"\u00DD\u00AE\u00CB[#*1\t\u00F5U\u0081F@\u00D6V\u0090\x04\u00AFU\u00C4\u00F6W&\u00E7\u009C\u00AF*\u00ED\x1E(b\r|j\u00ED\u00B2?\u0099ZM&QQ\u0099\x14\x1E\u00ECS\u0096^\u00CF\u00FE\u008A9\u00D5\x031\x18ps\u00C1\u00EE\u00B8\x00\u00CEb\u00A7\u00A9\x16\u0094\u00C7\u00C0Z\x1ArL\u00F7~\"\x1E\x12\x07\u00FF\x1E\x103\u00E9D\u00A1v\u0081\u00DBR\u00BD\x13\u00BC\x18@\u008B\x12\x1Bb.h\u00F7)\u0089\u00BEz\x0F\u00A2\u00CD\u00AA(\u00DCT\x16\u00FE\u00BE0\x05\u0096m[\u0092\u00B1\u00BC\u00DA\u0089\u00B6hg\u00C0\u008EaLP\u009A\u00D6\u0098\u00A1\u00D5=Q\u00BB*\r\u0096\u008AO\u00B5\u00A91\u00C3\u00D4\u00E7\u009B\u009B\u00D2NsR*\u0084\u0088I\x06H2\x03\u00AA8\u0092*1\u00E6bH#\u00DB\u00D2\u00DA#\u00A2\u00CBHR\u00CD\tK|i\u00CDJ\u00FA\u00BAQ\u00CA\x19J\u009F\x15aI\u00BA\u00D1\u00FF>\x0F\u00C0\x0F\u00E6\u00F4\u00CB\u0088\u00E7\u00CB\"\u00CD\u00EF\u00DC\u00AF\x00\u00CE'6\u008F<W\u00D08K\u00C9&\u008C\u009E\u0081D\u00E0'\u00F7\u00A1\u00B7MU\u00D8\u00EF\u00C3\u0088<\u00A8\u0098\u00A3\u00FA\u00A1k\u00CA\"o\u00D5\u00B6\u00AA+\x1DF\u00D5\u0084\u00E3\u00CF\u00B1\x10\u008E\u00FB\u008C\u0080\x12\u00F7\u00E8\u00FB4hC\x141\u00BA\u00D1\u00D0\u00CB\u0098\x06\u009FG0\u0092y\u00B0M\x12\u00FA\u00BC@\u009B\u00AFV\u00F5\u00A6\u009A\u008Bs\u00B4\u00A1\u00B5\u00D8\u0089\u00AA\u00B3\x00\u00C8\u00C0kto\x0E=\x13\u00DEO6\x05\u00B9#=\r\u0090\u009A\u008B\u00B2\u00D1\u00EC1\u00B5W\u009C*\u00AA\f2,\u00B6x\u0082[\f@n;\u00DB\x1A\u0091U\u00E1\u0092U\u008D\u00E8\u00D6\u00FB3t\u00D6=\u00E46\u00E4\u00C3V\x1F\u009A\x11\u00B3\u00EC\x10w\u00BD[\u00DF\u00DA1_>\u00B1\u00DE\u00B338 \u00C7\u00B4\u00B6\u00D9\u0088\u009E\x10ZRZ\u00A1\u00B8\u00BA\u00B7\b\u00BBB\u0089;\u00F3\u00AA\u00F7\u00D9\x13R\b\n\u00ED\u009CB\x1F\x15\u00E2\u00DA\u00E6\"\u00D5#$\u00C3\x0En\x7F\u00F7\u00DCd\u009F\x18tu\u00B4\u00DF\u00B6\x06\x04\x16\u00E9\u00DA\u0099A\u00FEnPH\u00B2R}\u009D\u00AB'\u00A5?\ne\u0094\u00BB\fm#\x11\u0090N9&\u00EA\u00D3\u0096\u00CC\u00C3\u00E0MeX\u00AA&w}\x1D\u00E5A(C\x1C\x19\u00BF\x0B\u00B2{k\u00B7\u008FO\u00D0\u00B9\u0090Cm\u00F7&)\u00DA\u00FA+i\n\u00ACs\"i\u00DB\x11M\u008B\x17.\u0084\u0081\u00EAgJ\u00E8\r\u00E5Z\u00D4\u00F9\x1AKC4hm\u00A7\u00D1\u0091\u00F7q\u00CF\u00AB\x01\u00CE7\u00D6\u0082\u00ED\u00D5\u00D7\x1Ag=\u00ABz\u0099;\u00F6\u00F2&\x10\u00EAZ\u008B3\u00F0N\u00C0\u00D2\u00C9iSh6\u0080\u0095\u00D8\u008B8V\x03\u00DEh\u00BF\u00AD\u0086\u00C2(\u00FE\u00C0\u00EF=\u00F3q\u00F1\u0099\u00DF\u0086\u00DD+\u00D3i\u0086IC\u00B6}\u009B\u00F8\x1A\u00D3\u00D0\u00BD\x16\u00B8\x1B\bia\u0080\u0086\u00C6\x14\u0089\x1A:C\u00B0>\u00B6\u0090\u00D6JbN\u00C6`\x1D\t4\u00B5\u00C4:\u00E3\x00\u00AA\u00DEC\x11\u00B4[p\u00FE2\u00A06\u00F4chc\u00D4\u00B8\u00CFh\u00A7\x10\u009B\u0082\u0094\u0092q%\u00E1\x17iW\u009F<\x17J\u00FCNK\u00BC$\u00E0ls;\u00AFR\"{JAk\u00EE\u00B0\x18\u00AF\u0082~R=\u00C88\x04C\u00E8\u00C1\u00A3I\u00C7\tO\u00EF\u0092\x0E\x02i'\u0090;S)\u00C6\x1D\x0E{\u00FB\u008D\u00D22\u00E3\u00F6\x1BS0\u00CE\u0099{\u00B5+\tj\u00D9_\u00D6\u0093\u00CCpl\u009E3\x0F,AH\u0089\u008A\u0090\u00CC\u00A8\x18\x0E\u00C0\x1D\u0086O\u00CCc *@\u00A9oV\u00F7Y\bY\u00E7\x04\u00E37\u00DEn\u0099\x07^\x13)\u00E5\x03!\u00D4{\u00D4g\x13n\u00CB<i\u00ED8vw\u00C5\x12h\u0091U\u00A8\u00AF\u00A5\u00AA\u00D0\u00A5\u00AF\u00D4\x02!\u0082\u00BA\u00B6\x16{\u008F\u00D0[\u0099\u00C3\x1A\u00C5\u00C8c\u00860\u00C6,\u008CB\u00C4X\u008B\u00AEt\u00F1.\u0095O\u00CC\x05\x15\u00E5\u00D8\u008D\x7F8\u008D\u00A1\x18A\x11h$\u00ECt\u00E2\u00D6y1\u0092\u00C8h\x17\u00C4\x16r\"Wn\f\u00F2\u00B6G\u00A2\u00A2\x0E\u00B3O.oB\u008B\x1E\u00EC*\x06\u00D6h\u00C58\u00E5\u008C\u00BAb\u0087)\x03U\u0092\u00C5\x00I\x0FPcrg\u00C6\x1C\u00BC\u00C0\u00B2\u0084\x00\x18\u00B9\u00B6\u00FA\u00B8k\u00A1I\u0092\u008B\u00F9\u0088\u00A0#Ym\u00C2\u00EC@5\u00D6\x18m\n\u00DBH\u00B5\u00A2\u00F9\u009C\u00CF\u00A8\x11\u00B2\u0091Xl@n\u00C2|\u008Eb\n\u00D5X;\x1E\fhbFb\u0097\u00F8\x17\x06\u00EB\x16\u00C4\u00F8-#,\u00E3\u00FE%\u00B0jL\u0080lD\u00E9\u0093\u00E1X\u0088\u008A\\\x1E\u00A6\u00F8\u00DD\u00AD\u00DC\u0099i8t\x07\x18\u009B\u00E2\u00D9g>\u00F7I\u00E9\u009D\x15\u00A3f\u00CCa\"\u008B\x18gHp\u00AA1I\u0093\u00AA\x18=\u0081\u00A9m\u0083\u00F5,jz\u00CA\u009D|i\u00AA\u0092\u00CE\u00A5\x10rC\u00D6\x0172\x06\x18v\u00C3\u00D3p\u00BC\u0086\u00F2\u00D5\u008BH\u00EFH42Y\u00F6\u00CF\x04\u00A6\u00C9\u00EC\f\u00E4,\u0095\u0081\u00D5hhK\u00DB\u00D9\u00A6\u00A4Z+\u0096R\u008Cde(\u008B\u0094O\"9Cr\u00D4\u00B8\x14\x1F\u00B1\x18\fW\x02[s\x1Ft}\u00EB;\x1CU\u00C6M\u00C7\u0081u\u008C\u008D\u0090\u00DB\u00B1@\u0081M\u0092g\u0088\u00F5y>8\u00FF\u008B\u00AA\u00D6\u00C7X\u00FD^\r\u00B75\u008En\u00C8\\6\u00B4q\u00A5\u009DG;\u00C7\x04F\u00A3\u0087\u00DA\x01\b)\u00D5\u00D7\u00A4\x1EJq8*\u00E3\u00B0\u00E5\x0E$\u0081s\u00B1q\u00E1\u00BB_P6\u0088\u008E8\u008Cs\u00AAx\u0085K.\u00CE0\x18N\u00C4\u00EE\u00C9$R\x17c\u00D0b\u0096\u009D \u00CE\u008B>6\u00FB\x01\u00A3'=\tJ\u00D7n\u00F5\u00BB\x18\u009D\u0088\u00D4[\u00FB\x18\b\u00DB\u0081\u0098{C!b`\u00CE\u00FD,\u00F3\u00DE[\u00EB\u00CFl\u00ED\u00F5\u00ECM\u00D9I.\u00EC\u00D3V\u00EB\u00C0\u00F5tf\u00FE\u00BD0\x10\u00D5[H\u00E9?\u0090\u00B9HY_\x02\u0081\x10\u00CE\u00F3\u00A5k0\u00E1Y\u00B3\u00E2&\u00E6\u00D1\f\u00BB\u00F9\x13p{\u008C\u00C8](\"\u00A8\x14f-Z\u00E9\u00AC\u00DDfp&\u009A\nI^\u00A0q?\u00B7\u00BB\x13\u00B5\u0098E\u00FC\x0Bt\u00D7\x04\x01\u00E9\u00AAL\x03\u009A&n\u00CFI\x14\x1F\\\u00DC\u008A-7\x02\x19\x07\u00B0\u00A1x\u00A61\u00BAqE\x18\u00854jl\u00B91K\u00FE\u00C6\u00BE\u00B8\u0082BH\u0084\u00E7LJG\u008EC.AW\u00F2V\x1B\u008B\u00E7\u00F9\u00B4\x0Bd\x7F\u00DA+\x11\u008F^\u009DY\u00C4\u00F5\x13*\u00ED62\x0EA\u00F1\f\u0086\b\u0081\u008E\u0080,\u0086\x0ByT\u0082\x0E\u00C1S9\u00F6\x15\u00B02\x1A\u00A1Sh\u0098\u00C7b\u00B2\x03>[\u00A5\u00E1\u00D4\u00ED\u00D1\u00E6R\x12-qs|\u00FA\u008E\u0089\r\u00C3\x0E\u00C08\u00B3\x0E8v>\u008A\t\u008C\u0090\u00E21\u00C7A\u0094Q\u00D2\u00ED\u00C8\u00F1$\u00F15Cd>\u00CBD8!\u00AB]\f\u00C0\x0E\u00B8\u008A\u00C6\u009A%\u008A\u008859\u00AB\u00DF\"H\u00F5'%\u00BA\x18\u00CFF\u00E8\u00ADJ\u009AD\x15\u00D6\u00F7\u00FE>\u00C88\x1D*\x18\u00EBv\u00C4F\u00B9\u00A9rq\u00D2\u00FDB\x06G\u00D5,\x11\u00DFd7\u00CE\u008CH\u00EA\x16\u00E9t\x1C\u00A8\u00CAI\u009C\u00F7dH\u00D1\u008Fb\u00A2\u0091n\u00EE\u0089\u00D4.\u00F0}\u00C3>\u00FC-\u0098x5&\u009A\x0F\u00B2$J!\x04[\x18A\u00FD\u00DEc\u00F3o\u00FF~\u0092\u00D0:O\x12\u00C0z\u00FB\u008DI\x106.\u0081?\"\x1EB\u00B1\x18\f\u008A\u0090\x00\u00DCfT\u0092\u00BEg\u00E6e\u00F9\u00DB\u0099\x19h_e\u00EFR\u00D7\x10\u00D2\u009AR>\u00FAM\"\u00B0\u00B0$[O\u00AA\x02\u008A\u00DB7\u00A8\x1E\x0B\u009E\f\u00D1\u00BB\u00F1Q\u00F3R\u0084\u00AB\u00E7057h\u0086A\u0097qp\u009C$\u00FEj\u00D0T\u00F9\u0090\u00F2\x12\u00898L\u0086g\u00C0\u008D\u009F\x01\u00BBG\u00D2m\u00E8\u009CA_q\u009F\n\u00F6!JH.\u00ACE}\u00C0\u0099~-\t\u00CF\t\u00E3\u00B3\u0093t\u00F3x\u00B6)M/(\b/D\x00\u0082\u0089\"pK\u00E9\bd\u008CC\u00C2l\u00AD_y\x05\u00D8'!\u0097\u00A6n\u00B8\fo6I\u00E7b\u0090Z\x1B\u00ABj\x14\x0B@\u00C6\u00CB#\u009E\x7F\u00D6\u0085\u009C\u00C8\u00F8\x1C!\u0082\u00F6\u0092Z\x06\u00CCl-\u00C7\u0092\b\u00A4I}Ix\"\x15\u00B7\u00A6\x1A\u0098\u00A4;\u009F\u0089]\u00F8y \u00D3\f\u009C\u00CFhr\x1E\u008D\u00B9'\x14\x02\u00EA\u00A3\x00\u00DF\u00A2\u00E6\u00EF\u00D7\u00D8\u00DF=\u009F\u00C5\u00BF\u00D9_\u00E4$(W\x00(\u0088,\u00F8\u00D9\u00D0\x02\f&c\u00CF\u009D\u0085N\u0080\u00B2G4x\u009F\u008FD\u00AAC\u00AB\u00B8l\u00ED:\u00C3\u00C2hV5\u00A11\x1C\u008B\u00F3K\u0092\u00EB\u00DCv\u008D\u00EE\u0097\u00D2U\u00D7v\u00C4\"\u0086s\x1B\u009E/\u00E3q\u00A9\f[\u00B9\x11\u00B3\x1FE\u00A4\u0082\u00BF1w\u00C5XJ\u00BF\u008F\x07\x1ALA\u009F\u0080v|\u00CE\u00D4i\x17\u00E3;\u00ABa\u00BC\x1F\x06k,\x0E\u00DA\u00F9d\u00C8\u00EC\u00DF\u0089N@\u00C9\u00CF\u00AD\u00D8\u00C5\f\u00E0\u00F2\u00E8\x19\u00B4\x11\u00CB\u0096\x06C\u00DEILB\u00EA\u0084k>\u009C\u00CF\u00F0\x12\x12\x06@\u00AE4\x12\u00A0t\u00E8\u00B5\u009C\u009A$\x17\u0089/\u00E1{\u00F4:R\u0090\u00C5t\x1C\u00A52 \u00EE\u00B3\u0084\u00F6\x1E@\u00AFS\u00ED\u0092\u00B0\u00C6\u00CF=\u00A4\u00A0\u00E2\x07\x16Uc\u00C0-$\u00B1\u00A2'\x0BY\x18\u00F9\t\x05\u0094ww\u00A8\u00D6\u00D6\u0081\u00CEF\u0096\u00D2f\u0098|\u00AE\u00CC$\u00A6\u009B\x16\u0086e\x0F\u009BZ\u0093\u009CS1\x0E\u00F7Z\u009F2V\u00E2\x06\u00B5?x\u00F7Nh\x1E/\x10b\u00E8q0\x19\x0B1\u00D5\u00FF\x15\u00D5\u00C7<\x1D\u00B8\\=\u0089\u00FD-\u0097\u00A7\x1E\u00DDN\u00DE\x00\x00 \x00IDAT\u00F1\u00BB\u00BB\fL\u00B5\x11J\u00ED\u00B8\u00AC\x12\u00DF\u00AB\u00E4W}\u0083U\u00BA\u008E[\u00C7\u0096\x14hM&\u008D<\x0Bj\x00P\x04\u00D3\u00A5z\u00F5\x07\u00AD\x1D\x11\u00D0mD\u00D2uz\u00DD\x13y^\u00D5*\u00A0\u00AE\x7F\u0087\r\u00E2\u008Cp\x1C\u00C0AC\u00CC\u00E4#\u009BV*\x04\u00CBg\x06\u00E1\u00F2\u00BCE\u00F2C^\x07\u00E4xT|uRzn\u00A97\u00F7\u00F9C\u00F6\u00C5y\u00CF-\u008F\x15\n\u0098\x10\u00BB)\u00A4T\x1E\u0085x2\rNaN`\x10\x19d\u0099/\u0099\b<l\n\u00A9:\u00F4k'\u008A!\u00A4>k\u0094L\"\u00A4\u00C9\u00D3\u00A5\x1B\u00EBaI\u00AF\u00F6\u00D6\u00F7\u00F8{\u00A9]`\u0093\u00F5!b\u0081\u0097QO\u00C7b-\u00B8]\u00E0C#\x0F\u00E2\u00B4\u0083\x062\x11\u00B8\u00ED!ai$\u00B4\u00B4\u00BC\x1D\u00C0T\x7F\u00D0\u0088\u0098\x10\u00DC\x1C>\u008E\u00C83@\u0084\u009D\u00C3z\u0081\u00FD\u0099\u00E0#\u00B4\x0B\u00A3\u00BCi6\x020\u008E\u00C4\u00E5Z<\u00F2:]\u00EC\x12~\u00C3\u00E3^D\n\u00B1\u008E\u008Ed \u0081\x00\x0E\u00C0\u00E9\u00C9i\u00AE\u00D6\u00F0\u00D6\x1C\b;\x00i$\u00A8\u00BF\x18\u00B8\u0091\u00F1\u008DIM\u0081\u00E3\u00CD\x02\u00AF1\u00AEy\u00EF\x19\u00EC\u00D7v\u00EF0\u00EC[-\u00BC2\u00AA-F\u00C5\u0093\u00AAp\u00F7q\u00CEPOD\"\u00F2H\x04 \u00A2N\u00E9p&@\u00B5S\tI\u0096H\u0080\u00CB\u00DB5\u00E8\u008E\x04z\u00DF\u00F8\u00DB\x12dt\u008A\u009C\u00F4\u00DB\u00CC\u00E0.t 2;<vh\u008A\x1C>\u00E4\u00A2V\u00C4\u009F\x02\u0092\x02\u00F6#!\u00BE\u00F2\x0E\u00BC3\r\u008D\u00B3y'\u0082\u009E\x14\u00845R\u00AD\u00AA\x10k\u00A9\b\x1Di\u00E9\u00DFb@\x07F\u00DA\x10\u0084\u009CD\u00F8\"tAqkLAE\u0084\u008D\u00F41g\u009B\t\u00AD\u00F1\u0094\u009C\u0092Z$\u00EA\u009CoI5\u00B9\x1D\x19\u00B0\u00B4\u00B8\u00E6\u00AER\u00EA\u0097>n\u00EA\x14*\u00ED8\"h5\u00D7\u00850t/\u00F5g\x12\x1E\x13\u00C63mX^\x12\u00EBF5\x0F\u00C4\x12*X\u00D5\u009DR\u00AB]\x00\x14\u0092\u00A1\u00B0\u00B2=\u00DAm\x06\u00DAtK\u009E\u00FBF\u009D\u00BFl/D8\u0089z\u009A\u00D1\u00D1UR.\u0098\u0099LD\u00B2\x1D$\"\u00A0\u00D1/\u00D7h\u00A2\u00B3\u00A62\u00A5q\u00F4\u00E0:\u0092\x11Q\u00CF\u00A6\f\u0099I\u00A3i\x006\x1C\u00D7\u00F7\u008F\u00FDm\u00E3\u00FE\u00D7\u00CD\u00F6\u00B7\n\u00A2O\u00EC)a\u00CE\u0092>\r%-\u0087\u00A1\u00A4\u00FAI\u00B2\u00B1\u00BE\u0082+\u00966\t\u00B1!\x04=X\u00EB\u00B6\bU\\\u0092*\u00D1\t\u00B4\x19\x0BA\u0083\u00DEyS\u00D8\u009C\u009C\x13a\u00AB\u00CF\u00DE\x1F\u00A6E\u00F1\u00D0&Y\u00CF\x16{\u00F5\u00E3\u00B0\u00C9\u00EB\u00A92\u0088\u00E0\u008C\u00BBG\u00D9`\u00C1\u0093\u00D2\u00F5E\u00DC\u00F2\u00F9O\u0093{\u0090\x0B\u00DD\u00CB6\u00A0\u00B1U\u009D\bd\x1B\u0089\x10P\u00F5\x1A\u00A6\u00D3]i{\u00DE/\u00B2\x0E\u0082a\u008E6\u00BF\u00EE\u00E1M\x00\u0099\x02\u00BC\u0098\u0084+j\u0090\u00BE\u00F7aB\x10|4\x0E\u008C\u008C\u008C\x03\u00FBY\u00D1vK5\u00E0)\u009D\u00DC\u00A1\u00F8yo\x121\u00D6\u0085\u00D3\x1F/\u009B\u0080`>\tc\x16\u00B3\u00E9B&\u00B2\x1B=\x16s\u00EA\u00DE`?6\u00C0o\u0088j:\u0081\n\u00F6\u0084\u008A\u00E0\u00C9h\u00DA\u00DA\x13\u0094O\x042\x11\u00C8Dc\u00D5\u00B3!\u00D7\u00C4\u0085\u00CB\u008B\x0Ec\u00F7\u0088sp!\u0088#\u00EF\u0095\u00C8\u0085\u00AB+.\x14S\u00B8\u00D4\u00FD\u0098\u00C3a|\u00E6\u00F5)b\u00A7A\u00D7y\u00FF\u00B4?hN\u00B5\u0084\x1Bs6Gz>8V\u00938cL\u00CB\u00E4\u00D6\u00C4\u00C4\u0090\u00C0\u00FD{_\u00DF\u00AFa/O\u00C7[{|\u00FEm\x02+i\u00EAw\x11\u00DFI\u00C7\u0097q0 \u00D5\u00C6\x07\x06fF\u009E\u00DC\u0082\u00E9{o\u00EDf\u00C1\u00CC\x15\u00A9\x14\u0091i\u00D0gTq\x1B\x15\u00E8\u00BC\x1E<e\u00B0X\u00F9I\u008C\u00B85\u00DEU\u0082\x0F\u00DC \u00F6V\u00B8\u00B1`\u009A]]\x00\x1F\u00E0a\u00F2P\u00AFLAEP\u00E2A7\u00E3`{\u00A2\u0093s,\u00D5\u00C2\u00A9N\u008Cv\x0F\u00C0p\u00B18\x16\u0089J\x01\u009F\u0095\x04\u00EB\u0090-\u009D}\u0093\u0094\u00CF\u00C5&[\u0082\x07\u00C1\u00CB\u00FEFUH\x06\u00C5\x0B\u00E9w\u00F0zxEU\u0084p\u00B7\n\u008AIUAL\u00987rC\u00BA\u00BD2\u00848\u00CEq\u009B\u00D4\u00A9%\u00A1(=\x11\u008B\u00BA\u009E\tPu\x1D\u0095\u00B4\u00D6\"\u00FF\x00\u00A4\u00A5\u009D\x0B>\u00E3\x1B\u0092hX\x17\u00D3I\u00B4\u00DE\u00CA\u009D\u00A5\u00BD\u00A33\u0083b\x14\u00E9\u00E2K&\u00A3u\u00DDvJ\u00EA\u0082\u008A\x04I\u00B3-\u00A5:\u00D7\u0092\u00A9\x1D\u00A9%Z\u00F74n\u0082\u00D0\u00DFG\u00EB\u009F\u00DEZ\u009B\u00B2\u00BBL\u0084\x01\u00B7?U\u00F5Qs\u00A0\u00B1\r\x18.\u00E4\u00FEuO\u00F8\rF\x06\u0085\x05Z\u00BBl\u00F7_\u00DE_\u00C3\u0093_\x06\u00AE?P\u0092\u00AC\x11\u0099w\u0082\u00EAj@'\"\u0085\x17sj\u00F3\x1A>hS\u00C4\u00E1\u0099P%%\u00BA\u00F1O\u00EA\x06\u00D6~t&\u00B0\u00F4\u00A1\u00A9/KlA\u00FB-\u00FB\u00D1\b\u00DE\u00CE}\u00E9\u00E39\u00C7\x15\u00C42<|\u00CFi\u008E\u00E2\u00A8\u00A1.\u00B8\u008F\u00F6H\f\u00B7J\u0098\u00F9\u00A0\u00B4\x16\u009D\fLZ\u00A53\u00C1\b\u00C5(tLRbM+\u00AF\nK\u00B2\u00F9%\x12O\u00A6\u00B0G\x7F&p\u0099\x1C\u0085P\x01b\u008D\u008Eiw \x044\"\u00E3gg(\u0084\u00E0~\u00BAq\u00EEUH\u00C4\u00B5Z\u00F7\u00E99\u00C8\u0085\u00ED\u0094\u00C8\x07Ty\u00B9\x16\u00B2\x18\u0087\u00A4\u00DC\u00D1\u009E\u00A9\u008ESM\u00A1\x1A\u00E2i\u00C7\u00E8*CAe\u00F3~\u009D\f\u0097V\u009F\u00B2\u00A2j0\x0B\u0083j\u00C4\u00A8\u00BE\u00CF\u00F2\u00B0\x18&\u00D2\u00DB``_\x19\u00F3\u0090\u00A8\u00A3o\u008A\u00AB\u0095D\u00F4#\u00A3\u00B4;\u00C7\u00D2\u008C\u00A8\u008D\u00B0\u008B1\u00A9\u00EFV\u00E3\u00C9{L\u00D8\u0094\u00D7\u00E3\u0080\u00D3\u00F6bhh\u00AB#\u0092|\u00C6\u00CEg\u00B4\x018\u00B0\u008F\u00AB/\u00EF\u00CF\x1D\u00CF\u00BE\u0084k-b$A\u0084kO\u0092\u00F9.\u00DD\u00FA\u00C44`\t{\x04\u0095\u00CBp\x18\u0084\u00E9\u00CB\u00B5'i\f\x04sH$\x02t\u00C8v\u008B\x01\u00F4\u00F7\u0089\u00D9X\u008F\u00CA\u00F3\u00B1\u00DE\u00D3\u00B0\x10Xg\b\u00E3\x1C\u00F5\u00A8\u00E8C\u00DFh\x00Dn\u00A8\u00AA\u008DP\u0090S<\u00A0\u00AD\u00BC\u008B8\u00B38W\u008E%=\n\r\u00B5\u00F4c=\x0E\u00C1\u00AD3\u0083\u00EEv\u00C4\u0082\u00C2\n(\x0E\x1C\u00EE\u00B4bKN:\u00B6T\x11\f\u00F3@Z\u00B9\x0F\t1G\u00E6\x0E\u0089\\<\u00AFAJd\x03\u00DD\u0092\u00B31\u0088\u00B4\x17\x00KJq\u00C0\u00C3\u00B6\u0090I\u00C8$\u0088\u009C\u00B9<\x0F\x15m\u00A7\x05\u00EB\x06k\u00C4\u00E9\u00E9q\x10\x10\u009E\\\u00E8\u008C%@\u00B3\u00EF\u00B0\u00BF\u00D2\u00F1\u00B5\"B\"\u0087\x0F\u00DE\u009A\u00C4\u00F5|\u009A\x16\u00C6\u00C7\u008C\x13\u00E1\u00BArURB\u00F5=\u0091\x02\u00BDn\\\u00EB.\"%\u00B3*$\u00A8I\u00EE\u00F3\u00E6\u00C1\x14\x18\u009E^\u00ABFj\u0091T\x1C\u008E\u00D7d_:`\u00B8\u00D0\u0088\u00ED9'A\u00B3\u00B3\u00BE\u00AB\x1Ax\u00AAb\x07*\u00F6 tC\u0085D_\u00AE\u00AF_\u00DA\u00AFn\x1E\u00BC\u00E8\x0F\u009Ad\u00CC0\u00D7\u00AE\x1A\u009CR\u009F\x11\u00D0\x1B\u00BEU,Q\u00BA\u00C86J\u0095-\u00F4\u00FBn\b\u00C9\x7F\u008B\u00DB\u00AD\b\u00A1\x11\u008E\u00EE\u00D1\u008E\u00DF\u00A5\u00CA\u00DC\u008Az\u00ECD\u00E4\u00AD\u00AF\u00C9\u00A7\u00EFj\u00E7\u00AE7\u00E7\u0084D>\x01<\x060\u00AD,\u00FEQ\x12\u00BDvY\u00DA\u00B1a\u00D2\u0096\u00A09\x14$\x17*qF \u00A6G\x02\u008A7\u00A0\u009B\u00D0\u0094\u00C2\\\u00E5\u00D3\u00CBKA\u00C3\u00A1\u009E=\x1F\u00AD\x02i\u00E1\u00C0&\u00A2\x04m\x01\b\u00C2\u00DF(\u00D9e\n\x18\x0El\"b\tQ\u00A7\u00B1\u009BD,\u00CF\u00C3\u00C1\u00DF\u0086\x18\x04\u0080J8\x02\u00E9\u00DA\u0080\u00C6\x1C\n\r\b-\x00\u008Bz\u00B0d#\u008A0\u00B5\u0096t\u00AE\x0E\u0088\u00F17\u00BD9\u00D7P#\u0080\u00FCI\u00C2J\u00C4E+}\u00CC\x00*\u00BA\u00F0\u00EC\u00AAT\u00BBjC(eFP\u00CF\u0082\x1E\x1A\u00EA\u00F5\u00AD\u00AC\u00F5\x1C\u00D7r_\u00D7\u00BA\u00EE\u0091\u0092\u00ECKC'1\u00A2f\x07\u00D0\x10\x15\u00C0\u0094FC!\x06y\u00E0@\u00B4\u00A3\u00DF\u0091\u00CCW\u008C\u00CE\u00C7\b\x1B\x0F\x06r\x1F\f\x06@E\x0F6\u00F8\u00F6\u00C4\u008B\u00FB\x07\u00F6g~?R\u009C\u00F9\x10\u00D2g\u00DF\u00A5q'\x1E1\x0E\u00E35\u008D\u0098\x15\u00DA\u00ECa\u00B4P6^\u00A9\x07\u00FA\u00DEl\x0E\u00B6\x12\u00BD/\u00D7\u0094G\u00A0$\u00B6\u00CEGNtF56w\u00E2\u00A2B$\u00B3\u00AA\u00BET\u00FB\u008E\u00BB\u0099\x03%2%\u0084\u00C1\u00F0\u00C8\x1D7VL\x00\u00B0|\u00C4Q\u0081\u00BA\n\u00A4H\u008FW\t\u0095\u00A8\u00B1\u00D7\u00BC\x05yN\u00F3\x17\u00EBoC^\u00BFVP6-aLlY\u00A99%7%v\u00D8\t\"\x02^\u00C1E\u0092n\x13M\u00E2\u008B&[j\u00EC\x007{\u00C9\u00A7\u00E2i\u0080\u00D55\u0083\u00CC@9\u00FB\u0099\u00DF\x0Fkk\\\u008CA\u00CFI\u00CF\u008C\u00CF]\u009D\u00F2\x1B\x14,\x16\u00B3\x00J\u008D\u00B8\x0B\u00CA\u00AB\u00DD\u00A6\u00E3\u00E7w]\u00D3U\x11\u009D/\u00EB~\u00BDs\x13Z\u00A9\x1C\u0099\n,\u00F4\u00B2\u00BA\u0090\x13\u00B1\u00A0$7\u00D0}Ozi\u00DD\u00CA \u00DA\u00D5\x10\u00A0\u0082\u00B1\u00D2\u0090\u00C3\u00F9ij\x16,\u00CE3\u00CD\u00CBy.v\u00C0/0y\x1B\u00D2{\x13\u00F3\x1CZ\u00C1%\u00FB\u00EB\u0090%KQ\u00C1D\x0ED:\u00AF>\u00F3\u00CC\u00EF\u00EFo\x1Do\u00FB=;\u00EE\x01\u00FB\r\u00BA\u00AD\u00A0b\nDDEL\u00B91\u00AA\x1B\"vAS1\u00928\x0Ba\u00E8\u00D7Fhs0\x7F\x7F;\u00B5\u00DBU\x04\x12\u00A9:\u00DE\u00F5\u00FE\\`\u00F4\x1E\u009Cb\u00F5\x03\u00EA\u00D5\u00FD\x15\x1B\u00B0\x04?\u00F1\u00FCq\u00BE\u009F\x18\u0081\x16\u00B8U<\u00C6a\u00A5\u009D\x1D\x1E\u00B1\t{\u00DA\x11\x14\u00C9\u00B9%\u008C\u00B7\u00BC\u00F7\u0096\f$\u0090\u00C1\u00C6\u00CA\u00C9e#0\u00A2\x101\x14A\u00D6\u00BEE{\u00CD#\u00AD\u00D2\x19\u00F3 \u00A1a\u0090\u00A4\u00EF\u00C2\x07m\u009D\b\u009A\u00BB{,\x11\x0F\u008F\u008B\u00BC\x03a\u00EF\u008A67g\u008F\u00E9\u00B3\u00CE\u00B6\u00A6P\x02\x19\x11\u0089.\u00DC\u00F0Z\u00D8:\u009F\u009F\x07\u0090\u00A9\u00CE\b\u00B9d\u00CE\u0080\u00A1\u00B6\u00D7b\u00BDF\u00DD,\t\u00B0\u0090e\u00D4/\x10\u008A\u00E9\u0088\u00B3\u0090\u0087\u00DB\u00803\tHi\u00C1u\u009FK\u00AD%\u008E\u00B3\u008C\x7FL.b\u0096TT\u00AF:\u00E0\u0098\u00E4\u00A2\x1A[1\r\u00A3@\u008D0\u00E8\u0089\u00A8\nMF\u00C15l\u00A6:V\x13\u00DA\u00C0x\u00D8`\u00D7\u00C94l\x0B{\u0082]8O\u00D71Of\u0088pkn\u0098\u00CB\u0087\u0091\u00D0_\u0091\u0093\u008AC\u00B0#<C\u00B6sLV\u00AB\u00D2\x1CU\\76\x1Fr\\\u00B0\u00BD\u00ED\u00A9\u00DF\u00DB\u00BF\u00FD\u00FE{_x\u00E2\u00F1\x03\u00BC\u009AK\u00B8\u00A9\t\u00A9\x12T\u00F6b\x11\u00FEz\u00EEB\u00BC\x0B$\u00EF\\3\u00A2\x13C\u0098\x17Q\u00BFQ.ATG:!\u0094\u00C5^\x10\x7F/a\u00CF\u00A7w\u00A2\u0082S\u008A\u00F2z\u00AF\u00BE\b\u009B\u00FD\u00A3y7\f\u00C0\r\x06\x1Ec\u00C3\x05Q#cR\u00A5p7\x1C#\u008A\u0099N_4@T\u00ACB\u00F4\u00F3 \x132\u008B\u009A\u0083\u00DAXe\u0082\u00AEPp\x07'\u00C8\u00C3P\u00FDL\u009DX\u00B9\x11\x1E\x15q\u00B4.\u00E5.T\u009D\u008D\u008B\x03\u00BB#\u00AB\u009C\r\u00A1\u0082&\u00E1\u00C1:~\u00E3\u00E0\x1D\u00A8\x1A\x00\u00B41\u00A4\u0084\u008D\u00CF1\u00A3\u00ED\u00EE\u00A50\u00D1dJ9^C\u00DA\\\u00EB\x01\u00F0\u0099M1\u0099.\u00B5\u0081\u008AS\u00F0\u0092\u0092\u00D9\u00BET\u008B\u00A6[\u00DF\u00B2\u00C87\u00E2\u00F0\u00C95\u00C7\u00F5\u00D2\u0082\u009B\u00A2=qI\x14\u00B1hM\u00A5$\u0096Z#\u00E4\u00A1k.\u00C8\u00BD\u00B8Z\u00C0\u00D5\x12\u0086\u00AC\u00BE\x13\u00CE\x07\u00F3\u0092\x17\u0084B$m\r\x1A\u008B\u00C6\x15\u00EDZ\u00BA@\u0085\x12\u00B8\x1E;\u00D7\u00B7\u00AE\u00FE\u008C\u008A\u008F`\u00BF\u009C\u0088\u00C3\u0096\u0084+C\u0097\x1A\u0097ax\u00EA=\u00EF\x7Fa\x7F\x1F\u00BE\u00EDw\u009E\u00F5\u00A7\u00F1*^\u00BFE\u00F4\u00D2qW&\u00A0A\nz\u0090\u00D0,\u00A4\u00A9\u0088\u00D5\x16b\u0093NG)\u00B7\x18+\u00D1\u00E0XIF\u00F3\u00B6_d2\x1B=\u00D8\u0091\u00E7\u00B9m\u00B1\u00E1\x04\x1A\u00AC3k\u00E7\u00B5\u00FB\u008B\u00D1,6\u008B\u00C6\u00D4\x18Gp\u009B9IZ\x03\u008F)\u00D1\x0F>\u00AA\x1BD$\u00FBt\u00EE\u00DDh\u00B1\u00D1\u00AB\u00B6n\u008F}\x12\u00AA\x16B\u00EE\u00A1\u0080\u00F0V\u00C8\u00AD(\u00BB\u00C4\u00C1\u00FB\x1E\u009C7\u0095r\x17\u00969\u00E0\u00DCg!\u0088+\u0089\u0093\u00EFd\n$\u00A2\u00C3\u0081\u00CD\u009D\u0085sbQ\u0087!\u00D1\u00C3\u00AD\u0098UxCj\u008F\u0089\u00F4r\x04c\x18!\u00F4e\u0088\u009ChFJ\u0084\u0097\u0082k>\u00E8\u00AA\x13\u00F0\u0099\x19T;\u00B9\u0096\u00F4|\u00FC\u00B22\u0095\u0084\u00FB\u009D0\u00BB\u00FE\u00AC6$\u00F5\u008F:\x1FjG\u00D7v\u00C8\u00DDaw\u00CFI\u00A0\x14\u009DB&\u0092\u00EC\x1D\u00D2\u008Bi\u00CC\u0090\u00BC\u008DH\u00B3?i_`\x1E\u00C1\f}\u00DDR\u00E7\u00AF\x1C\u00880\u00B0^\x1A\u0093\u00E9\u00CC\u00AE\"K\x16\u00E9\u009EL\u00D2s\u00CD\u008A)\u00AE^\u008C\x1E\u0089\x19\u00F1\x06\u00DER\u00B9\u00CBs\x11\u00DF_\u00BF\u00DE\u00F0\u00CC\u00F7\x7F\u00FF\u00EF\u00EC\u00DF\u00EDW\u009F{\u00CE\u00DE\u00E6\u009F\u00C7\u0097\u00CCN\u0084\x13\u00D2WD\u00B2\u0086\x0E\u00DF\u0085\b\u00ECD@uLL\x03\u00D9~\u00A9\x07\u00C8\u00F3U\u009C\x05\u00BAg\u00DA)Z\u009B>\u0080q\"\u00EEqF\x05\u00EC\u00D7\u00A2\"4{DC'\u00A9\u00E6\u00C0V;Vcj\u00F2\x1A\x18\x19\u00C0\u008D\x1B\u00EE\u0091x\x0F\u00C4\u00CE\u00CF\u00831\b\u00E5k\x0FUBh\u00C1A\u0081\u00E8H\x15&\u0093\u0094,\x18\u008AQ\u00D5: i-\u00E6\u00A6\u00D8t0\x0F\u00A1\fz\u0087;\u00B6\\\u00B3\u0096h =j$z\u00B9\u00E9\u00B2|V\u00EA\u00FE\u00D1\u00A9\u0083\x06\u00C19-#\x7F\x01_\u0099MC\x06b6zml3\u00D1\u0082\u00D6\u00BD\u00DE@\x11\u00F2\u00B4\u008A~<t\\\u00F6\u00AA\u00B8\u0099\u00EA\x07\u00CA;\u00B2\x18\u00FF\u00FC@\x16N\u00C9E\x1D$\x14j\x14\u00B1!\u008B\u008Ff\u00B2\x15]*!\u0090.A \x19\x0E\f(\u00A6\u00A1\u008C\x7FB\x17\"`1\x0B\u00ADI\u00D1\u0084\u00A4/\u00EA\u00B7d.\u0092\u00C6JO\u0096\u00B4\u0096\u00FA$\x15qk\u00E7\"\u00DBKuqr\u00B51\u00932\x12\u00B38o\x1E\"\u00AAB\u009F\u00DBs\u0080W\u00BF\x01\u00AA\x1D\u00A2\u0083x\x00\x0E\u0083\u00BD\u00FDi\u00C7G?\u00FC\u00B9\u00FD\u00D91^\u00FD\u00E1\u0087\u00FF\u00C7\u008B\x06{wZ\u00F6\u0097\u00D0c\u0094\u00C7`\u00D1\u00E1Hp\u009A\u0098v~}?\u00878\u00EB\u00B7\u00DB\u009E\u0085z\u0097[Q\x06\u00BDx\u00F5\u0089\x13\u00DA8\x13w;o\u00B9\x7F\u00DD\u00A7\u00F4q\u00E3\"\x12\u00E3\u00A0\u009DA\u008CF\tF\u00A7>>\x06\u00F0:\f\u00F71p\x10\x05\u0084aMR~\u00B0\u00F4=U\x05\u00E5<\u00B8\u00BC\x04\u008C3\u00B0\u00B6\u009B3\u00DBQ\u00C9\x14\x00\u00A9JH\u00CD\u00D0k\u008A\u00F0\b\u00DF\u0093&$\u00C4\u00B8\x10f IHJ\u008FYR?a<\u0089\u00D1\x0E$c\u00B0Yl0\u00D7\u00BE\u00DA\x012\x11j\u00B0\u00AD\u0083\u00C7\u00D3\u00D8\u00B8TH\x02\u00D6\u008E\u00C7\u00FD\u00E2\u00FE\u00D6\x10\u00EBh\u009FM\x1A\u00EB\x128l\u0091\u00EC\u0082\u00C3\u00DD\u00D0\u00A6k\x1Ba&\u00D4\u0097\x14\u00A7\u0084\x16\x03\u00CA\u00F9\x1Ad\x1E4\u00BEI\u00E7\u0097\u00AD&\u008D\u0094\u0092\u00BE\r\u008E{\u00CB\x02\u009D\u00DDS1\u00B0\u00D8=|o\u00E3\u00D2\u00B5^\u008CA\u00EAH\u00F6U\u00A2\u00A4\x19/S]Rx6\u00DB\u00C8\u0089\u008A\u00F9\u00B1^/a\u00A1Y\u00A9&\u00BE\u00B4mp\u00DC{\u00F2\u0099\x17\u00ED\x03O\u00BD\u00BA\x03\u00C0\u0093\u00FE\u00E03\u00C0\u00FE\u00EE\u00AA/\u00D0uvC\x05\u00F5H\u0097m\u00A5\u00BC\u00A8\x0B\x17\u00F1\u00DC\u00A5\u00A7\x17\u00F2\u00E8\x16\u00F6\u0085\x11\u009C\u0083\u0087\x12\u0081\u0088@\u00CBh\u00B7\u00A8.K;w\u00C3\u00FD*w\x06\u00F4\u00E2\u00A8\u00F34\u00A6\u00BE\u00FDZ\u00E9y\u00C5\u00C5\x1D\x03\x17\x00\u008F\u00A0\u00C8\u00C5\u00B0\u00F4\x1FV\u00D1\u0081\u00B1\u00ED\u00FBP\u00AF\u00A1\u00E0\u00A2d\f\u00A6\u00DD\u0098\u00C2V\x10\x19\u00F3UeIp\u00DD\u00C4,\u00C0\u00D0hg0\u00AB\u00ECZ)\u00B1=\u0093\u0093\u00FA\x1Bn\x18s\u00F2\u00B1S\u00DEM\u00C31\x01;\u0082\u00C0\u00E6\u0094\"C\u00B67\r\u00F3p\u00C0,\u008Dp\u00CA\u008A\x17})U\u009A]\nd\u00E0\u0080O\u00C3\u00D1\u0098\u0081\u00D8\u00B3\u008B1\u00F1\u00FA\u00CE\u00B4\u00C4p\u0096\u00C8CHB\n\x0E\u008B\u00E8\u0081e\u00B3\x15\u00BD\u009B\x1B\u00B1\u00CEkR\x1F\u0088\u00B5\u00EA\u00CA\"\x14\x01v\u00DB\u0085\u00B8\u00A3\u00DA\u0094\rB\u008C\u00CA\u00EB\\\u00AD\u00AB\fzj*L2 \u00ED\u0092\u00E1\u0080_\u00C1z\u00DFx\u009DCi\u00C84\u0084v.\u00DA\u00ED\"BF\x0B\x13\u008C\u00B9P\x1B5\u00EE\x01\u00D8\rJ\u00BDo\x13\u009ELS\u00C7\x15P\x15(\u00E6\u00F1\u00BDg?\x03D\u00E2\x00\u00DE\u00E6\u00EF\u00FC-\u00F3\u00AB\u00FF0Cd\u00E5Ah\u00D23\u009E\\\u00AF\u008B\u00D0\u00B8\u00A8e`k\x12TO:\u00EA1\rk\u00AArSQ\u00EEHG\u00EE\u00E9\u00CA\u00E5%(\u00CF\u0084e;\u009D\u00C1(\u00B0\u00AA\b_\x0E\u00CFz\x15cZ34\u0089\u0088\u00B2=\u00DC\u00D9\u00A7G6p\u00E3\u0083\x06\u00C4 \u00E8\u00C3\u00C2\u0096p\u00806\x04>\u00E6\u0083\f \u00C3M<\u00A2\f\u00E5a\u0098\x1EhA\u00A6&\x19\x1DG_&'\u00EFA\u00B7\u00B9i\u008DM\x12a\u00DA\u00C0P\u00814N\x06Q\u0081F\u0096\u00C1E\u00DD\u00B8\u00A8\bF\u00E7q-\u00D1\f\x04Jf\x13m\x0F\x00\u0098\u0091\u00A9)\u00D4!\x17dn 2{\x1F\u00B40k\u00ED\u00C7\u00EF\u00BC\u00D9\u0082.\u0082p\u0087[X\u00EByN\x19\u00FBZ[\\\u009F\u0095\x1BA7\u00AF+\u009DZ\u00D7!t\u00FA\u0094\u00C6\x17(|+\u0089\u0099\u00CF_\u008CB\x15\u00A1J=\u0096\x0E\u00CF\u0088\u00C5\u00B4A\u0088V\u00C4\u00B1\x15)(D\u00A2\u00F3\u0080>\u00FE\u00A4\u00B5zp\u00CB\u00BA\u008E99\u008A\x1E\u0092\u00A1\u0095\u00D8P\u0088\u00B4\u00FB%b\fR\u00E7\x13s\x0Btc4>z\u00B8|8\u00CE`]7\u00CF\u00DC\u00FB-\u0080\f\u00E1;\u00E7;?\u00BDM\u00C3\u00DC|!\u00DE\u00D0\u00D7\u00B7\u009C\u00A8\u00D5#\u00D0\u00E3\x15z~\u0082-\u00C7o\x13l'4C\u00ED\x04e\u00ED>\u00D4\x053\u00F3\u00B23\u00A0\u0080\u00F6\u0096i\u009Et\u0083\u009E\x19L\x12\u00BB\u00DA\u0094\u00AAQ\u00F6\x02\u00F5S[\x7FW\t\x00\u00E3sk*Q\x1A\u008E\u0080G\x03x\u00DD\f\x0F\u00B0\u00E1\u00C6\"\u009B\u00E0\u00A0\n\u00B1\u00A11\u0083\u0094\u00F0\u00F1\x1EtgM(\u00E2@\u00F9\b\u00F4@44\u0096\u00E6+\x1A\t\x1DXlj\u00D3\u00C1\u00EC\u00C5\u0090\u00FA\u009E\u0092\f\u0099\u0093 \"\u00E8\u0086\u00C79\u00B5f\u00A9v\u00A0\u00CE\u009D\u00EE8<\\\u0089\u0083\u00F4\x19\f\u00C8\x0B\u00B9\u00CC\u0098\u009F\u00C1\u00FEH5\u0091w\u00C2i(I\x06\u00A0\u00CDX\u00D2 \u00BE2\u0084[\x04\u0082bH\u009A{m\u00BE\u00BA0\x00\x11rJz\x11qAi\u00C1{KI\u00DA\u00A5\u00BC>\u00BD\u00AD\u00BDhgIv\u00D2\u009AHBT8qC\x12\x1C\u0084\u0083kR\u0097\u0085o\u00B8\u00EE\u00D5=\x10\u00EA[2\x02\u0096i[<,\x13\u00BEx\x19\u00E2\u0098a\u00D6\u00FCr\f\u00F1\u00DF\u0080\u00C9H\u0099\u00E8b\u00AF\u00FB\u00BAvyo\u00F3\u00CE\u00CE\u008Eg\u009E\u00FD4@\u0086\u00F0\x1F=\u00F9\u0081O\u00FE\u00AF7\u00F7\u00F1x<B\u00AA\f\u00D6\u00D0\u0081\u0095\u00B4\u00CF\u00E4 \u00D4\u00E2\x15\x11e\u00D4aJv$d\x06\u00D6sW\x14\u00C1cM]Y\x19\u00C8\u00D6R\u0095\x01\x1B\u00CD\u009D\u00D8\x19\x14\u0099\u00C2\u00B8u\u00AFB\x1F\u00B3\u00A1\u008E5\u00FD\u00B9Im\x04\u00C20\u00A9\f9\u0083\u0080\u00A2\n\x1F\"\\\u0090W>p\x05\u00C7Aubs\u00C3f#5\u00BF\u00CDA\u00A2G\x04k%\u00BC\u008C{o\\\\\u00B1\u00D6=\x17Q\x12\u009F\u00D7\x1A\u00E9\u00DB\x13\x18\u00D7\u00CC\u00CC\u008E\u00AD#\u008E5\x15\u008B\u00DD\u00A7\u00D5\u00B9\u00B2\x1F\u00E82\u00D2HT\u00D5\u00B2(\u00A3\u00D6\u00DA\x01=\x14\u00C2Y\u00DDk \u00C4\u0090\u00F6\nh\f\u0084\u00C2D\t[g\x02\u00B3}vt\u00A0\u009BNp\x7F\u0087\u00FA\u00BB$\u00BC\x04\u008E\x17gL\u00A8\u008F *T\u00FF\ny\x04AL\u00D6h\u00A814\"\x17SH\u0095A\u00F7\u00E9u\t\u00F5\u00DCnP5 \u00AC\u00EE\u0093\u00D1\u008E\u0086\u00CA5\u00B8\u00E8\u0089\u00C4\u00BA2\u00E1ON\u0082_h{\u00D8\u00D6{\u00E78v\u00DC\u00AE\u00C4\x14\u00A82B\u00FDew\u00F0\u00D6\u00FFH\u00EFN\x1BC\u00DA=\x06\x1C\x17\u00A2\u00BET\u00EApc\x13\u00C7\u00F7}\u00D7'\u00F13d\b\u00EF\u00C03\u00BF\u00F9\x1D7\u00EF\u00C7\u00A7\u00F7\u00CFB\u00D5{\u0093\u008B%\u0091v\u0088]Du\u0097\u008D\u00C1s9\u00E9\u00A6g\u00DD\u00BE\u00C1\u00F0;U\u0084~^cP9\u00D9\u00FD\u00DC\u00BB\u00FAV\x13\u00A7\x18\nW\u00FB\x19\u00B8THe\n-,}U\u00BB^\x7F\x1B\u00B2\u00FD\u0087\u00EEx\b\u00E0\n\x03;\x0E\u00EE\u0095\x1D}r\u00A7aQ\x01Q\nU\u00E6xB\u00C8\t\t\u00B0\u0090\x06,\u00F4u\u00EA\u00AD}\u00CD\u00A7\u008B\u00AF3\x07.\x11\u00E5\x16\x00@\u00ED\x1C\u0084\"\u00E2N\u00C0\\d\u00B9\u00A1\u00C8A\u00A6\u00E1\u0096R\x1E\u00B3?\u00E1\u00F8\u00ED\u00F0\x16SI/D!\u0094b\n\u00EE\u00CE$)2X\x17r\b\u0082It\u00D0R\u00A9\u00B9&qr\u00F1\u00D4wO<\u00A2A\"P\u0080H\u008CD\r\u00CD\u009D\u0092x\u00BC\u008E#\u00D0\u0082y\u0095\u008AO\u00FBDN^\u00BBq\x164\u00E5D'z\u0090\u00E4\u00BEB&\x1E\u00A5\u00B7@\u00C8\x04\u00C8\u00BC\x01\u00F6\u0081\u00D6\u009F\u00EAS\u0089wT\u00AC\u00CBD\x16\u0083\u0091\n\u0092O\u0099\u00E8\x07\u00ED\u009D\u00AE\u00C3\"\u00EC\\\u00AB\u00F2\u00CA\u00A4-\u0084c\u00B4`p\u0096\u00DE\u0094(U\u00E7\u00CF<\u00C0\u00DB~\u00EC\u0087~\x13\u00FF\x0B\x19\u00C2\x07l\u00FB\u00C2\x7F\u00FC\u00E8\u00FF~\u00F1S6\u009E+X]\u009DM}\u00C5\u0094\x11)\"!|o\u00D2\u00F6\u0096\u008D`a0\u0094\u00E4Y\x0Fad\u00DBqE\u00E9\u00F6\u00D9\x0F2\u009CE\u00A7\u00CF\u00F6\u00D7D\u00A7\u00F2 \u00D4\u00C3Mf\u00C0v\u00D4\u00CF\u00C8\x06\u0095\u00E5c\x14?pF?vx\u00DA\u00CA\u0094\u00C9xz\u00B1@\t\u00F7a\u00B8\u00F1\u0081\u00C7\x00\u0086\u00E7\u00EE\u008F\u00D0>\f7\u00ECS\u0094 \u00A7\u00A11\x13\u0093b'\u00E92>\x16\u00D1\x06\u00D4\u00F7\u00ACc\u00A0\u009D\u00A2S\u00A0\u00BA\u00B6fkk\u0086k\u00ED\u00A0\u009A\u00A1\u009A\u009AZ\u0087\u00C9<x\u00A2)\u00EBq\u00D6\u00B9\u00AA$\x16\u00EAD\u00F4I\u00B1\f\u008Ep[N\u008B\u00DF\u008F\u0089B\r\u00B3\b>J\u00A2\u00F3)\u0092QT@\u00945B\u00D5X\u00AD\u00EC\x16\u00CB\x1E\u008B\x1C\u00BB\u00C60\u0089\x14\u00B8\u00D3r\u008D\u00CF\u00B1\x06(\u00A1\x11\x0F\u009Fa&Tu\x1D\u00BC\u00C1x\x07!\u00B7\u0084@\u00B4\u00A5\f\u00CE\u00B0E\u00CCbP\u00BAG\u0086]k\u00ECr\u00FF\u0089\u00F0\u00F7\u00EC\u0097\u00A5\u008A \u0098$\u009Ap0\u00C2\x04f\x17z\x0ED\u00C4m]\u00B4\u00B5\u00BE\u00BC\x1C\u00A8\u00BD34~]\u00A1\u00B9\u00E6\u00DF\u0099y{pz\x1C\u0097\u00E7\u00DE\u00F6\u00A2\u00FD\u00E0\u00BB\u00BE\x00\u0090!\x00\u00C0[\u008E\u00A7\u00FE\x19\x1C?\x12\u00C4z\u00CA(4\u0085\u00C6D\x03=y\u00C8F\u00C5\x1AT\x1E\x02\u0089\u00D3\u00B5\u00F8)m[\u00F4\u00DF\u0082\f\u00B2\u00EB\u00ABZb\u0094\u00EAk\u0080\u00D4\u008AHFg K{\n'\u00E6\u00FDN\x1E\u0084\u00F4\"\u00901 \u00ED\x12\u00A3\x18x2.\u00E4\u00B8\u0090\u00E3\x1A\u00F8\x06\u0080\u00FB\x00\u00AEh\x14\u00BC\u00B1\u0081\u00DD\u00A3'\x1B\u0098\u0080jat\u009BpL\u0097\x0B\u0091nJ\u00B3&\x17\u00BCT\u0082\u00C6\x1AK\u00A8\u009C\u00A2\x12i\u00F0R4\u00A1\u00898I\u00DC\u0092\u00E0\u00A0\x17B%\u00D3\u00CAR\x191\x07\x00Je\u00F0\u0088n\u00DCH\u009C\\^\u008C\u00A0\u0094j\u00C0\u00CC\u00BC\u0086\n\u00DC\u00A3\x0E\u00E3\u0080\u00A5\u00BD\u00C3y\u00FF\u00890\u00A4f\u00F1V\u008E.\x11\u0081\u0090\u00BF\x16\u00F6lK\u00B8\u008D\u00DB\u008EB6\u00EB\u00F3n\u0093\u0084\x01\u00CCk6\u00AA\u0098\u00FE\u0093\u00C4o\u00E1\u00C6\u00D1\u0087\u00EE~l\x1DZB\u00A6;\u00A1q\u0080\"\u00F4d}\u008A \x04\u00D2;\u00A1~\u00E4}*V\u00A0{A\u00D2\x16\u0092\f\u00E2R\u00E3\u00C9\u00F6\u00B6\u00B5_\u00E9\u00A2T\x1F\u00B5P\u0080\u00F2\u00B2\u0088\u00F9\u0089\u00C9\t5\x1C\x00\u00A3\u0080\u00DD.\x18O\u00DC\u00FFg\u00EAI2\u0084\x0F\u00D8;\u00FF)\u00FC\u0089\x1F\x01<c\u00D9\x0B\u008A+0\u00E4\u0094\u00C7\u0090l\u00A2\u0095\x05\u00E3#\u00AF2\u00EE+\u00AC\u00EF\u00B5\x13\u00E2o\x11,\u00EF\u00D7\u008A\u00B7\u00BA\u00D4\u0084\x16\u0099\u00B8\"\u0083\u00B3\u008A\u00A0>K%9\u00AB<\u00FA\u00DD\x1B\u0093i\u00EA\x0BP\x0BU\u00FD[\x18M\u00FD-\x17\u00E4+nx\x02\x03\u008F\x11Pzo\u00E1]Y\x18\u0085\x06V\u00A5\u00D2z\"\u00AA\u00E8S_\u00F8\x11X\x14=\u008B-\x07-U\x00\u00BD\u00E1h\x01C\x1EL\u0081D\u00E73\u00A4\u00F9\u0090\u008B\u0091\u00D27\u00A4\u00BFC1\f\u00EE\u0091\u008F\u0091u\x10BH\u00E1\u00D2\u00DA\u008F$\u00A7r\u0083&AK\u00BD`;)\u00AD\u00D5gt4\u0092\u0082\b\u00B2\u00DAo\u00F4r\u00A0\u00D3\x04\u00C7R\u008C\u00C2\u0093a \u00CB\u00C3[ \u0088Ts\u00880s\u009F\u00C3T\u00A4\u00C2\u009B\u00C0D\u00A5\u00A8\u009F\u00D0`F\x0E\x18$\x1C\u00D9\x03\x1C\x151Y\u00CC\u00DF\\\u009CZD\u0086F\u00D4'\x06\u0092\u00D1gg\u00E6\u00B3J\u00EA\\\x07\u00A9z\u00B4k2UY\u0084\u00DF\u00DAj\u00C6\u00C1X\u00BB=\u00A1K\x13&f\b\x1E\x13\ni\u00B4\u0091\u008Cd\u00E0\u0095\u00E7\u009E\u00FE\u00A7z\f\u00C9\x10\u00BE\u00FF\u00DE\u009F\u00FE\u00B5'\x1F\u00FD\"^\u00BB\u00F7\b\u009D\u00D0\u008B\u00FB!\u00A1\u00AE\u00A1\x13h/\x03\x06,\u00C4z\u00B2-\u00DC\u0082<\u008A\u00CE\x13\u008C\x17\u00B19\u0090Qg@#jMB\x1C\x1B\u00D96\u00D6\u00B6=\u0098\u0089'\u00A7\u0096\u00CD\u00A0\u00A3\x07\u00DDCVlF\u00EE\x199\u00BE\n\u00BB\u00C8\u00D8\u00E3\x00\u0088\u0086BPD\u00DF\x1E\u009A\u00E1U\u0084\u00FD\u00E0\u00CA\u00C3\u00D2;\x19y\u00B8A5\f*\bIy\n\u0086\u00B2\u00E6\u00870\u00A1\u00B4\u00D6:\u00A5\u00D5_H \u0098BA|\x07R\u00FF\u0097\u00B4\x06%\u00BB\"\x01\u00A3b\u0092W`\u00D2$\x13\u00A0%}6bN\u0095\u00D9\u00CB\u00FD\x18\u00A8\t\x19\u00B5(\x04\u00A2\u00E5\bGl\u00DE\n\u00D1d\x10\u00BAT\x1B\u00A5_\u0097A3\u00C6\u009Cq\x13<oU9$\u00E5x\u00FF\\\u00D8m|I\u00CC\ri\u00E4w1\u00D9 \"\u00CFMV\u009A\u00AA\u00C0|n[,\u00FB\u00FA\fx\u00E53\x18\u00CE\u00B2n\u0092Q\u00E8S\tR\u00B3\u00FA\u0098\u009D\x173\u0090Z\\\u00CF\u00AA\u00CC\u00B6\u00DAcq\u00B2?RA\u00F4\u00BB\u00D6\u00FC\u00C15\u00D1\u00A2\f5\u00D6Y\x04n\x19\u00D6\u00CC\u00F5\u0094\u00EA\u0088\u00A1\u00B2(c\u00E2\u009D\u008B\u00EDf8\u009E|\u00FE\u00BD\u00BF\u00C6\x1B\x16C\u00F8\u0088\u00BD\u00E5W?8\u00DE\u00E5\u009F\u00B0\x17\u00AC\u0092\u0099Dl\u00E5ehql(\u0086p&v]\u00BB\u00DA \x12\u00B2K:\u00B7\u00DA\u008C\u008B\u00AB\u0092ha\u00CD|l\f\u00C1\u00CE\x06\u00C4Vl\u00846\n[\u0098\u0080P\f h'\u00A4\x11\u0084\u00C0\u0087\x10YWXb\"\f\u00EDo2\u00C5\u00B6H.\x18\u00F8:\u0080k\f\\Y\x18\x19eS\u00B1Y\u00FDH\u0094\u00C5o\x1B\u0098\u00AA\u00EC\x01\u00B5'J\u00D8\f1E\u00E5\x19\u00A0\b\u00B6\u00DB\u00A4\u0084(\f\u0096\u00B1\b\u0092\u00DC\x17\x0Fc\u00DE\u00F0b\x0E! \u009D\u00E7[&*eD#\u0085\u00E0D\u0085%\x1B\x17\u00F0>\u0085\x1A,\u009F<fx\x10\u0084\x00D\u00EC\\kdZ\u00B9\x06oy(R5\u00E9j\u00B5\u00D4\u00FE4@\u00B6\u00DF\u0092\u00F0\u00C5\u00E8\u00FB\u00B1\u00F8\u00D4\u00E6\u00A9\u00C6uQ\u00D2\x7FV\u00870\x11!\u00CB\x1B-\u00FC\u0095_\x00\u00BF\u00C6\u00A2.t}&p[\u00DD;\x13\u009B\u00B8\u00862h\u00A8\u00A1\x01G\u00B5\u00DF\u0098VV\u008D\u00EA\x12\u00BC\u0095\u0083\u00CB\x01\u00A7\u0084\u00E0\x18\u00D6\u0081c\u008D\u009C\u00A4\x1A\x012\u00AB\u00DEN\u00D2a\u00ACu#3{\u00FC\u00F6k\x7F\u00FA\u00C7\u00FF\u00F2\u00AF\u00E2\x7F\u008FV\u0093!\u00BC\u00CF\u00ECK?\u00F6\u00FA\u00DF\u00FF\u00CC'\u00F0\u00E2\x07ej+H\u00CD`\u009F;\tL\u00D3\u00AF:\t\"^\u00C5y\u00EBw\u00BEO^\u008B\u0085q\u00E4\u00EF\u00FD}\x0E\u008B\u0096\u00DD\x00K\x1BI\u00E4\u00B9+\u00D2\u00AA\u009A\u0094\u00FF\u00B5\u00A3\x15qo\u00E3\u00FFb\x16=\x1A\u0092D\u00BC\u00A8Qu\u00DF\t\u00C3C\x07^\u00B7\r\u00D7pl\x1E\u00EE\u00A0a\u00A1>l\x1E6\x02\u00DE\"\u00D9B\x1A-\u00D3&\u0090\b\u00B7\u00D4\u0082F\u00E4\"0\u00C5\x14\u00A4t\u00A7Tw\x0F\x02\u00DFR\x1A\u00C7=\u00BA\u00EBR\u00A877Q:\x1AA\u00F2S\u00C6\u00BF\u00AA\x1F\u00C4>\u008B05\x16\u00E7\u00BD:\"H)Y}\u00D6\u00BDG\u00BB\x0F\u009C*\u00D5\\\u008F\u00F5\u009D\u0098\u00D3\u008E#U\u00A71\u00C1\u00BE\u00A3t\x11\x14\u008A\u00B97\u00D5\u00C3\x16b\x01\u0096*\u00C4\u00A9\x16\u00E8\x1C\u00BD%}\x19\u00AE\u009F\u00FAz\u00D3\u00FDS\u009A\u00AB\u00B8js\u00EF\u00E1\u0092\u00F7\u00EF\x10]\u00F5!Cu\u00DB`\u00CE\u00CDl\u00BB\x0BuQA4\x0E\x11\u00B9\u0090\u0081~\x13\u00C7\u00F4\u00EC\u00C3:6\u00A9\x1B\u00CD~!\u00E6#Zy\u00FB[?c\x1Fy\u00CB\u0097D)\u00C9\x10\x00\u00E0\u00BD\u00FE\u00F6_2\u00B7\x0F\u008Ah3\u008A\u00CFD\b@\u00A1\x07 \u00FD\u00F4\u00A0\u00CF\u0099\x06\u00C9\u0099\u0093`yM\u00955\x0B\u00FEtk\x0F\u0087[\x05L\u008A \u0097\u00D0\u00E3\x055D{\u00B3\u009D\u0087\u0093j\u00D0c\x0B:\u00C3pI\u0096\u00AC\x16\u00B2\u0096+\x13*\u00E8\u00C6\u00C7\u008A\u0094\u00F4\u00E5\u00FE\u0087\x01\u00AF\u00B8\u00E3\u00DA\f\u00BB\x19v\x0F\u00C6p\x03$:\x00h\u00AD\u00EFk\x7Fz\u00956s\x12\u00E2\u008C~\u00DA\x01\u00AA\f\"\x18K\u00AF\u00C2\u00A1.O\u00A1\u00DFF\u00B0d\x12\x10s\u00F0 \u00A8\u0083D\u0099\x16}\u009E\u00DFK\u00B0\u00FBD\u00C4\x00\u00E8\u00E5\u00C0\u00B0\u00C6\u0090<l\u00E1rM\u00CEYL+\u0097dcf@yBrW\u00B1\u00C6\u00D8\u00D4\u00D7286\x15A\u00CC\"\u009F\x1BNo1\u00D4\u00FA-\u00E3+d\u00A3\u00E8\u00E7\u0083*\u00E1\u00E4:q\x12:\u00AA\u00AD\u008A\u00AF\u00D9B\u0082J\u00D7q\x0B5,\u0083\u00DB\u00C44\u00E4.\u00D4+\b\u00CE'\u00C5\x0F\u00ED\x01\f\\\u0084\b\u00D1\u00DD\u0083V\u00BC%9e\x0E\u00C3\u0085\u00B5\x15\u00A4\u00E7\u008Bx\u00D5H#\u00F4\u009C\u00F5\u0081^\u00DD\u00A9\x06m\u00C5h$\u009CY/\u00CF\u00E0p\x03.\u00CF=\u00F5K\u00F8T=\u00F2\u0085!|\u009F}\u00C7/\u00DE\u00BB\u00F9\u0095\u00FF\u00E1\u00D1\u0095\u00A3\u0082\u0091\u00F8@nA\u00EE\u0095p\u009D\u00C5V\u00ED\u00D6o\u00ED\u00A1v\u0082KH\u00DE8_2\u009E&\u0099\u00FB\u00F9\u00F9\u00E2\u00C4*A\u00A5\u00D5:\x18\u00D4!\u00D7\u00ED\u00CD8\u00C1\u0089\"z\u00BF\u00C6r}\u00D9(\u00AA\u00DF\u00B1\u009EVd\u0091\u00F5\x13\u00B9j_7\u00E05\x18\u00EEa`\u0087\u00A5;\x11*)\u0097\u00FD\x103X\u00AD\u00EF!\u00C1\u00ED\x14{\x10v\u0084\u0084\u00E3(\u00E8\u009F\u00926\x19\u0081S\u0087\u00AFLHy\x16\x04\u00E5\u00C3\u00F2\u00EFI0\u009D(\u0085\x0Ez^\u00C1\u0092F\r \u00CAzX\u00D9\u00BF\u00BCl\u00EC\u00AA\u00C3\x004\x1E\u008B\"\u00F8\u00AE\u00CEt\u00C4\u00D0]\u00E4\u0098\x1E\u00DC\u00B5\u00F5\u00A1\u008F\u00D5[\x1B\u0089\x0E\u00A4\u0097\u00CF:&\x06\\\u008C\u0083\t{\x0E\u00944\u00E6\x059wh\u0086G\u00E7\u00F9#\u00CE\u00CB\u00F5\u00A2\u008E4\"\u00CE\u00AD\u00E8[\u00DB\u008B\u00D1\u008E\x1C\u00D0\x07\u00A0\u008D\\\x12>\x01\x05\u00BB\u00B8\u00BEr\\\u00FCM\u00ED\u00E6\u00EF\u00CD\u00CE\u0090\u00A8\u00C2\u00EA\x1Egd\u00A1\u00F3'\u00DA\u0084\u0087 \x7F\u00BC\x01\u00F6\u00FEw\u00FFb#\u0086\u0095!|\u00F4\u00FE\u00BB~\u00E1}\u00AF\u00BF\x03\u00BF}\u00F5\u00E5vt\u0095\u00C6\u009E\u00C7:\u00DC\x1F\u00C8-\u00C7\u00FC\u00FC;\u00FFn\u00C4\x1F>\u00DD \u00CC,n\u0092\u00CC\u00E0\u008D\x18\u00C2\u008A\x1ATqF\u00D7\u00A4m\u00C3\n\u00AA\u00A9\n\u00D1r\u00AD\u00B7<\u0085\u00B4\x17l\u00B7\u00EE\x1B\u0083\x1D\u008D\x19l\u00CB\u00FD\u00FB\u00F6\u00EF\u00B1L\f\u00DFp\u00E0\x1Evlp\u00EC\x18\u00D8<\u0082\u008D.\x1E\u00E5\u00CC\u00A4\x16\x04\u0093\u008E\u00E4\"-M\u00D5\x18H\x15\x01Z\u00ABA\u00D4\x07\x17\u00D0\u00D1\u00A4\u00A2\b9\u00D2\u009A\u00D9e\x14\u0081\u00E4\u008ELd\x00Z\u0087C\u00D2\u00B7\u00A1\n\x1D\u00D3\u0086\u00AFB$\u00C3%\u0093\u00C2\u00FBdIG\u00B1\u008F\u00C2\u0086-=\x1E:\u00B7\u00EE\u00CB>u\u00D5g\x16\"\u00A8\u00BC\b>=\x07\"\u008B\u008F\ts\x0B\u00E1\u00AB\u00CF'\u00A2!1;\x12_\u00AC\u00AF<O\u00CFT\u008C\u00E1\u00A8\u00CF)\u0089?Q;:\u00B5\u00CE\u00FB\u00A5\u00D94\u00F8w\x12\u00B4\u0088\x10+\u00A3\x01\u00EF\u0099\u00F0\u009D\u008Cb\nRq2\u00BA1S\b\u00C3\u00B5\x07EW\x11f1\"\u00B9%\u0093qh\u00CD{1\u00B1T\u00EB/\u00A8jQU\x0F\u00C1|\u00E0\u00F2\u00F4\u008Eg\u00FF\u00AB\x1F\u00FC\x05\u00FC\u009F5]\x0BC\u00F8n\u00BB~\u00E1G\x1E\u00FE\u00F4g\u00FE%^~\u00BE\u00D7\x02\u00C0\u00F2\x1Dy\u00B3\u0090\u00EA\u008D\u0098\u0092\u00936I\u00DC\u00F6?\u00E8j\u0082\u00BC\x0B\u0095r\u00DC\x19\f\u009A\u009A\u00D0\u00B9\u00F3\u0086\u00D9\u00C3\u009D\u00A5\u00A64\u0086\u00E1\u00E9\u00D6T@\u0087\f\u008E\u00C0Rm)\u0099A\u00BF?\u00ED \u00C9TP\b\u00A6\u00A3\u0083\u00A5_\x15\u00DCt\u00B1\u0081\u00AF\u00C33\x16\u00C1\f,f\u00CA\x18\x03\x00GZ\u00DA-\u0098\x02\u00AF\u00EF\u00D0^~\u00FF1[P\x10\u00AF\x1F\u00D3\x1B\u0081\u0095\x0BQQ\u0081Z\u0093\u00DDX\x18\u00C2\u00C4)\u0095-\u00897\u0089qz\"\u008F\u00E1\u0096\u00CCE\u00C2-\x10\u0080\u0095\u0080rP\u00ED\x1A\u008B\u00E4\u00EFu\x1A\u00A09\u00C8\u00BFcN7\u00ADc/\u0084\u00B2%\u00BA\u0089\u00B5\u00B5\u00A0\u0080\u00E6r\u00ACc\u00D5\u00DEtz\x04H\u00A0v\u00CB\x18\x19\u0081tB+\u0091\u00F4E\u00CC\u00E6\u00DA\u00EBA\u0091\u0084\u0094\u00BC\u00F3dO\u00A0\u00A2\u0097\tV\x18pS\u00A1\x19I`\u00C6Kx\u00EC\u00BF\u00AD\n\u00CA\u009AD\u00F3\u0083\u0091\u0092\u00E5F\u008C\u00BC\u00A8\u009Dm4\u00FA\u00E9\u008C\x105VU\u00D3\u008Cc\u00EA\x1F\u00DAuz\u00F8\u00FA\u00EE\u0088\u00BD-\u0095\u00D8\u00C4\u00B9\u0085a\u009A\x03\u00DF\u00FE\u00F6\u00CF\u00D8\u008F\u00BC\u00FF\x05\u00B4\u00D7\u00C2\x10\x00\u00E0{\u00E6;~\u00F6gl</\u00E2\u008C.u\u00B8>8\u0091\u009D\x10[\u00A7:\u00F1t(\u009E\u00E9\u00CD\u00BD\u00AD\u008E\"\u00B6\u00D3\u00F1\u00DB\u00EF\u00DB\u009B\u00C4\u00C4\u00F7\u00E1\u0083s\u00C6\u00A4%\u00FD\u00A6\u00CC/-\u00A6\x1E1\u0099{ET?\u00D3^\u0080vn2\u0081\r\u0089.\u00AC\u0098\u00CD:f\u00C7C\x18\u00BEj\x03\u00FB\x04\u00EE9\x0B\u00A5R\u008A\u00B1FN\x12\u00F4\u00A4J\u00A0\u00C8>\u00C0\u00D2((&!\u00D5\u00C2\u0088\u00DD\u008F\x19.\u00D2M\u00FA\u00BF\x0Bq`\u00B1!dfb'tIq\u00AE\u00A5(\u0092\u00EA\u00CC\x1Dp8\u0089o\u00CCbJ{5Q\x11\u008D a\u00B1\u008Fi\u008Bh\u00FD\u00D7\u00A2\u00B6\u00F6]R\u00DE\t\u00D5\x1Dq\u009F\u0091q5\u0085|\u00DC\x11a\u00FAn,\x04\u0082$t\u009F\u0091\u00BE\u00ED\u00D2\u00ED3\x14:\u00A4q\x06Z\u00E5\u00B9\u0096L\u00B1\u0092\u00AB(\u00A4\u00BA\u0084NC]\t\u0084 rI\u00EA\u00BBb\x06&m#\u009D@\u00DBy\u00B7tz\u00D4y\u00ECo\u00ACC]\u0083Z\u00AF\u00F9\u00BD\u00DFW*\u00C2D\u00EE\u00A9\u00B0\u00C4\"\u00F4s\r\u00E6\x17T\u00887\u00F2\x1E\u00E6\x1B\u008Eo{\u00FAgqz\u008D\u00F3\u0081\u00FF\u00E0\u00FEw\u00FD\u00C3g\x1F\u00DD\u00C7\u0098w\u00D4QDd&\u009A]a\u00D8\x0E\x187iI\u00FD\u00BC%7\u0099\u00D0C\u0087\u00E3\"\u00C8\u00E4\x1B\u00B5A\x00\x00 \x00IDAT*\u00E6\x1A.\u00C2\u00BD\u00A1\x07\x15\r\u00EBz}\u00B4\u00E3\u00CB\u00DF\u00CDGl\x1CJ\u00BAU\u00E4\u00FA\u00B3\u00E6\u00A9!\u00E13|9\u008C\u00A0[\"\x1C\u00A91\u00E9eX\u00DE,^\u00D2B\u009F\u0085z\u00AA\u00F2\u0093\u008C\u0097\x03\u00AF{\x04*\x1Dn\u00B8x\u00F8\u00FB\u00C3F\u00E0\u008B'\u00A1\u00DE\u008E\u00C9E\u00ADu\")/f//\u00C1\u009C\u0091[p\u00F0\u009A9\u0083\u0090\u00E7\u00E9\u00AD\u00B5\u00AAuz\u00F0^B\u00C8\x19\u00DF3\x19\u00EF0\u0091\x04\x16*J]w\u00CC~\u008DS\u00F5\u0089\u00C0\u00A7c:n\u00DC\u0097\x02IP\x7FI\x0E\x1D!\u00EB\u00DA\u00E9V(\u00A9\u00CD\u0083\u00CF@I*\u00FD\u00BE@b\u00D7*%\u0093\u00F6\n\u009A\x1A@\u0096\u0083[\u00DD\u009B\u0085\x18neZfM\u00C7\r\u00F0\x1D\u0098;07\u00F8l\u00C7\u00F2S\x1B!\u00C7\u00DF\u00A6\u00E8A\u00EC\u00A8\u00AD\u00D8u\u00DEu\u009E\x17\u00EE\u00CD\u00ABjK\x05\u0088\u00F4\u00EE\u00D7\u00EB\x1A\u00EDk\u00BA\u00D0^[\u00FB\u00DA}\u00BA\u00F5\u00CF\u00FB\u00F5\u00DE\u00CE\u00CF\u00FB_5Z\x1C\u00B8l\x03\u00E3\u00FB\u00DF\u00F7\x0F\u00CF\u00F4\x7F\x0B!\u00FCy{\u00F6\u00E7\u00FE]\u00BC\u00E7\u00D1\u00AF\u00DA\u00EF\u00DE\u00EB\u00B0\u00B8\u0088zG\x16\u00FAL\x02\x04\x1F\u008B\u00A1P\u0085\u00A44P\u00D27\u00AEY\u00C2\u0099\u00F9\u00C0+\u00D9H\u009F\u00ED\u00E1;\u00D1\u00C1\u00B2\x07\u00A4\u00E5\u00B92\x1C\u00F6\u00C0\u00A9RE\u00D8Fk?@b\x0F\u00A1V7\u00FA\u00C4\x03\u00C5\\\u00BA\u00BA\u00A4>j\f\u008E\u00B6$\u0089\x13\x1C\x17g\x1E\u0085#\u00BD\tA\u00DC\u00D4yi\x1B\u0088JJ\n>\u00F2B\x04\u0094\u0094\u0087\x16\u00F8\u008C\b?\u009Fq\u0097\u00CE$J\u00AA:#\x15u\x1FKB\u00CC\x1C\x05\u009D?\u00CB \u00A9\u00DC\x07\u0097D%\x172X\u00AA1Q\u0088K^\x10!\x02\u00B2E\u00A7\u00AD]\u0089Y3f\x19^\x06\u00C5\u0090\u00B4\u00D1\t\u00C1\u00F7\u00C12\u00EE\u00E9\x01\u00A14W\u0094\u00A3\x10s\"\u009DE\x05\u00AA\u00EFe\u0098;3\u008E\u00F6J&P\u00DF\u00EB\u0089\u00EA:\u00A3T\u00D5X\x1CY*=\u00DB\x10\u00F4\u00E8\u00A1\u00C4\n\x18\x02T\u00D2,\u008D\u0094\u00D3\u00E1\u00C9@\u0094:}\u00E4*\u00F2D%\u00CCjT?:\u00A2\u0080\u00A4\u00BF\x10E\x1B\u00A3;j\u00C3]\u00F6\x07\u00EC'\u008D\u008F\u00F2x\u0098\u00E0\u009A9n\u00DE\u00FB\u00F4\u00A3\u00A7\u00FE\u00BB\u00BF\u00F0s\u00F8\u0089u\u009An1\u0084\u00E7l\x7F\u00E5\u00BF|\u00F8s\u00BF\u00E86~\u00B8\u008E\x0E\u009E*C\u00C5\u00A8\x0E\u00A5\u00CAP\u00C5RB\u00B7\u00E7r\u00D1\u0080\u0086\u008C~\u00DDx\u00A7c\x01\u00BFWVP\u00F5\x0B\u009C\u00C3Z`?V\x02\u00F7$\u00EE\x16\u00FF\u0090\u00C8@j\u0081\u00AE\u00DB\u00E0]e\u00C8qX\u009B\x12\u00E3\u00BF\u00C5\u00F4\x16F\u00D7\x18agnN\x11yxHP\x11\u00BD\x13*O!\x06\x1A\x15\u00A7\x1E\x19\u00AF\u00D5nJ\u00C3\x11\u00D5\u0090\u00C8\x14@\u00B5A\x19\u0086\u008E\u00D2\u00FB\x15\u008E\u009C;(u&\u00D1\u0088\u00DD\u0080\u00DC\u00D9I\x11\u008D8\u00BC\u00DC\u009E-\u00F3\u00D1!b\u00B6\x1Ce\u00E4^h\u00B1\u00B3\r\x0B\u00C2\x0E\x1E\x12\u008B0\u0092\u0098|\u0089\u00A3\b&`\x00fTnj\u00AE\u00C1n\u00EB0\u00F6\u00CFip\u00D5\x18\x143\u00A1\x07\x11\f\u00816\u008B\u0084\u00DE\u00FC\u009C\u00F5\u00B7\u00C3\x19\u00E2\u008Cb*qi2\u009Ae\u00D3\u0099\u00CC\u00C2\u00CD\u0089F\u0096Ws\u008B\u008E\u00E4\u00C6\u00AB\u0084\u00ED\u00D3\u00B1Z\u00F8y.K\u00B1+\u00DE!\u0093\u00962\u00B0J6\x01^\u00DF\u00C2\u00AD\u0093\u00DB\u00FB\x01\u00CCKk\u00B7\u00F5#!%\x10\x1B\bKl\u00B5\u00E8Z8*J\u00F1\n\u00C0\u0084\u009B\u00E3x\u00F7\x13\u00BFh\u00FF\u009E\u00BD\u0082\u00D3\u00EB\x16C\x00\u0080\u00BF\u00E0\u00DF\u00F5\x0F>v\u00F9\u00FF~\u00F8f\u00D7\u00CD\u00A5\u00FF\x17\u00A1\u00E8e\u00F2\u00DF\u00B3F`\x11\x19\u0089\u00C4\u0080\u008A18C 0\u0083\u00F2.\u00BB\x02=\t\u008B~\u00DF\u0091\n+\x17\u00C7\u00D2E7\x1E\u00CAJ^5\x1D\u00A4N\u00C4\u00C4\u00DD2&.\u0086I\u00B4\u00F6;\u00E3\x11S\x18\u00CB1Y\u00B6\u0095\u00C9\u00E7,2\u00F8h\x1An\x1ATO\u00D8\u00EC\u0096\x06F\x00\u00CCh\f5@\u0086\u00C0L0\x02\x16\x03\u009A\b\u00C4dg\u0090\u00AE\u00CF\u00B5\u0093\u00C4\u00E4\x15\u00B9\u00E8It\u008C\x18\u0099u\x1D\u00846\u00DA\u00B1@3\u00B1\u00FD\u00DB!\x15\u008A\u008B.\ri\u009C\u0081m\x063\u00BF\u00C0\u00B1\x13\u008EOg\u00D19\x0Fu \u00D9*\u0089=\x19\x1B<m#\x19k!\u0083\u00AB\u008C\u00A5\x1A/\u00AF\u00DD\u009A\u008D!dh\x10\u00BD\u00F2lJ\x1D\u0090@\u00A0\u00B4\u00EFK+\x16\r2\u00D8\t\u0086\u00B21\x00UC\u0080s?\u0085\x16J\u00F0E\x04\u00E9\x01LUS\u008E\u0095\u0091\bb\x1A,a}/\u0088\u0082\u00C6H\u00FA\u00C2h5\rP\u00CD\u0095\u00ADA\u008B\u00FA\u00A8\u00BE$s\u00D2\u00B9^c'zq\x16e\r\u00C0\x11\u0093f>p\x19\u00C0\u00CDw\u00BE\u00FD\x1F\u00E0\u009F\u00E0\u00D6\u00EB\u0096\r\x01\x00\u00FE\u0093\u00FB\u00EF\u00FD\u00D8\x07\u00E6;|\u00CCU\u008F\u00AE\b>\x12ZfE\u008E;\u00DE\"\u00C0~\u00AB\u00B3M\u00A1\b\u00AA\u00AE\u00DB\x11[\u00D2K\u00AF:\x13&JE\u00A0\u00B1/\f~\u00E2\u00EC\u00D4\u00B1ny\x10\x06\u00A2tv\u00BB\u00FF9\u00FE u\u00C4\u00DB\u009E\u0084*\u00F4\u00D2\u00DA\u00CB{\u00C6;\u009F\u00E74\\(\u00D9\u00F5\u00CC\u00F3;\u00A5c\u00EA\u00CF\u0093L\u00C1\u0095Oa\u00A9\u00EE$\u00E4\u00EF\u00C2Az\u00BD\x17\u00C1\u00CF\u00A3\u00E9\u00E6\u00A9\u00DB\u00CB\u00E6@\u009B\x02\x17N!\u0096B\x1F\u0093\u00E7\x1FG\u00BC'\u00EB#\u00CAF0\u00B3-\u00ABX\u0089n\x0F\u0098#\u008D\u009D\u00C1\u008C\u00C8\u0090P\u00B6\u0082 \u00A2\u00F8\u009C\x138\x0Ek}\u00D4\u00FCx\u00DA=\x0E\tH\u00BD\x1D\u00CB8\u009C\u00C6\tsh\u0093\u008C|{\x12\x1B\u00EEx'w\x03\u00AB\u00E1\u009E\u00D4\x11\u00CB\x18\u0093e-S\u008D\u0090g\u00A7J\u00B9\u00C5zr\u00A1S\u00DFB\u00D27;\u0081\u00B9\u00EC\x0E\u00D7\u0080_\x03\u00F3:\u00EC\x15\u008B\u00DE\u00AF\u00B2\u00EE\u00ED\u009D\u00F7\x1E\u00ED<}\u00B2\x1D\u00D9\x07\u00E65l\u00B6\u00F6}\x0F\u00BA\u0090\u00DD\x0F;l\u00EEp\f\u00DC\u00BC\u00E5\u00CA\u009F\u00F9o>\u00FC\u00B1\u00BBh\u00FFN\u0084\u00F0A\u00DB~\u00F7\u00BF~\u00F8K\x1F\u00FFW\u00FE\u00D5\u008F\u00CC\u00A5nA\x10\u00AEe\x0EB\u00B9%m!\u00B23\f/+\u00FDZ\u00DB\u00E0,\u00F5\x19l\u0094\x04\u00DC\u00EB&\u00A2\u00A1\x00\u009D\x1B&HG\x11\x11 \u0097\u00A6\u00FA\u008D\u00ECWff\u00BA\x173XB\u00A9\u00FB8\u00D1\u00EE\u00D3\x19K\u00EF;\u009A\x0BO\x12&\u00A4\u00CD\r3\x07':J\u00B0\u008A\u00CEu\u00E0\u009C\u00C9\x18Q\u0088\u0094\u00F2\u00D0o\x11\u0085\u0098\u0082%\u00D1E;N\u00E2\u00A9\x00$\u00CF\u00F6A\u00C4\u0090:\u00F3\u008C\bFg\x00P\u00EE\u00FE\u00EC\u008C\u00E4\u00F3\u00AA\u00BB\x10\u00B6\x03/\u00CF\x01\u00CA\u00D87\u00E0\u0090{V\u0099\u0091@\u00FB\x1B\u00CA\u00B3@Ju\x17\u0082\u0090\u00CA\u00D2\u00E6m\u00B4\u00B9\x03\u00D1VO\u00BA\u0082\u00AB&\u00A4\u00B7\x18\x05e?\u00A2\u00A9\x1D\u00D1`\x0F\u00DB\u00C6\u00F2\u00DB\u00E9\u00D8<}w\u00F0\u0081\u0090\u00C1\x1B#\x0F}T\u00C9x\u00D9\r\x14\u00A3 \u00AEE\u008B\u00BFv\u00A7\x06c*\u00EAw\u00D9\x11\u00C8\u00B4R\u00FA\u00CB\u00BE\u00E2\u0088HJM\x16\u00E0SnI\u00B95\u00E3\u00D9G\u00ACB<\u00D0r[:J\r\t\u00E1\x1A\u00DB\u00BC\u00D5\u00F6\u00F06\x07\u00E6\u009Fz\u00FA\u00E3W\x7F\u00E5\u00B9\u00DF\u00C5\x1D\u00AF;\x19\x02\x00\u00FC\x00\u00DE\u00F9S\x1F\u00B3\x7F\u00FD\u0091\u00AAfUDy[\u00C2\x07\u0087\u00B4\u00D4\u00CBA\u0082\x04:\u0087\x1DY\x7FQ\u00EDm\u00D9\u00AE\u009F\u0099\u00C1be\rh;{{I\u00DC@VC\u0082\x01v\u00F2\u008E\x18\x00\u00A2\b=\u00E0\u00DB\u00DB\u00C1\u00F7\u00B2pg\x15\x01\u00D5Vg^\r\u00A2NJ*\u0083\u00D5\u00A2\x02p\x03\u00C7\r\u0089T\u0096{\u0085/\u008B\t\u008CR7\u00C38\u00D7\bG>{\x05\u00FA\fG\x06\x0B\x01\u00F1\u00DB\u0085\u0084\u00B4\u00CFb*N5\u00C3\u00F8\u0099q\x0B@\u00EA\u00F5\x1A\u009C\u0098\u0098\u00F4v\x19\x1F\u00BB\u00F1o\u00BAs\u0099\u00D5\u0098\u00C3U\u00CA4m\u00AF1\u009B\u00CF\u00A62 \u00F5~#\u00C3\x19\u008C\x19\x18d\f\x19\u00FC$\u00E64G\u00AA\n@\u00AF\u00CD\u00C0\x152\u0095m\u008A\u00AA\u00CE\u00D4\b\u00BE\x04\u0083\x06\u00D9\u00C6\u00AAx\u0085\u00C6\u00BC\u00CE\u00E7d\u00ECB\u00DA'\u0082).\u00A1\u00D2\x13\u008D\u00B9lM\u00AD\u00F0\x12(\u00F9}\u00AE7\u00E8\u00AEE\u00D9 \u00A4\u00DFg\u00CE\x01 [\u0081)\x122C\u0093\x072E[}N\u009BF\u00CF]\x10zi\u00CC\u00C2\x01\u00C7\u00C4\u00FCw\u009E\u00FA)\u00FC:\u00EE|\u00DD\u00A92\x00\u00C0\u008F\u00DE\u00FB\u00E0O}\u00F0\u00E6-\u00BE\x10\u0081`\u00B3 \u00CCbl$l61\x03\x11<\u00DF\x19\u00C0\u00D4a7\u00BB\u00E0;\u0099A\x18\x11\u00ED\u00D69\u00E7p\u00E9jG\u008B#N;K\u00F2\u00DEO;\u00FD^\u00FD\u00B1\u00E5\x1A\u00AC}\u00EB\u00EA\u0092\u00EE+#\x1E%SE\u00F9\u00A1`\u00EB\x04\x1EM\u00C7\r@\x17\u00A1\u0098\u0080K\u00FDL{\u00D4\u00CC\u009C\x16K\x1B\u0083O\u00C3<,az\u00BEy\u00CC\u008F\u0080\u00F5B\x1D\u00F9NhO(~4\u00F5\u00E1\u00A0\n\u0090\u00AA\u0081G{\x07\u00DD\u009ErW\u00EAw^{L\u00F0\u00BE\u00C5\u00A0\x0E\u00DA\x1Az\u00DF|:\u00D5\u0085~\u00CC\u00B8e\u0081T\u008F\u00F35\u00D5\u00EF\u00EE\x02\u009D\u00D3\u00DB=J]\u0099\u00AE~G\u00BFr\u00D76\u0097:ABey\u00B8\u0088\u00AD\u00A8\u00DFJ\r\u0093\x04\u00D6\x066\u00BC\u0096\u00EB\u00C9\u00D4Tz]\u0096\u0085F\u00C6P\u00AA\u00A6\u00DDrU\u0096*\u00E0R\t\u00F2-\u0098\u00AF\u00BF\u00EFP\u00B9\u00FD\u00B4\u0096{\u00DBrUN\u00B9\x14\u00AF\x01\u00BF\u00C7\u00F75\x7F\u0097\u009BQ;\u00A0E\u00B1\u00A0\u00D7\u00DF\u00BE\u00F93\u00FF\u00C5\u009F\u00FD\u00A97 \u00FB7F\b\x7F\u00DA\u00EC\u0085\x1F\x7F\u00FDW~\u00F9_\u00E0\u0095\u008F\u00C2YJ\u00AAy\nn\u0085\x14\u00B7\u00FA\u0081\u00E7\u00A2$\u008A:\\#\x1D\x01\u00E9\u00EB\u00B3\u00B9\x0B\u00D3H\t\u00B9\x07\u0085 4I\u008Ct\u0084\u009E\u009D5\u00A9/]\x0B\u00AD\x0F@\x1A\x18\u00D1\u008E\u0091)\u00DC\u00AE\u00C3\u00B8A\u008F>$\u00A4T\x0B.\x07.\x0EA\u00D9\n\rnp\u0094R\u00F6r8\x0Es\u00CC9\u00B8\u00CFb\x15AI\u0084\u00C0\u00CB\u00F2;%|W#F;\u0096\x05Mx\u008D<\x12\x12|K*q\u00EB\u00A3\u00DC\u0097F\"\u00DCH\u0080\u0092z\u0087\u00EE\u00D5\u00AE-\u00A3=U\x01\u008D\x1F\u0092\u00F8H\u0097\u00A190\x19\u00DA,dQ\x11\u00C0U\x02\u00DE=\"\x13\u00D30*\u00F4\u0091\u00F7\x1F\x10\x021_\u00C7\u00BCTt\u0086\u00B3\u00DC\u00BDW(\u00F4\"\u00F5%\u00A9\u00DB|\b9,\u00A8\u00A2\u00A9*\u0089\u00F0|}\u00B62\u00C0\u00E6\u009C\u00B6\u00B61\u008A\u0091\u00A4\u00D1C\u00AE\u00C7\u0086\x0E\x16\u0086R\u00D0$\u009E\u0097\u00D0\u0085\u00AE\x15\u00E4?\u00A0\u00DCu\u00CF\u00FCu\u00F5O\u00E8ChH.M\u00A1W\"\x03\u00C5\x04\u00F9\u00C4\x1C\u00F7p\u00F3\u009DW\u00BFl\u00FF\u00ED;_\u00C0\x1B\u00BC\u00DE\u0090!\x00\u00C0G\u00ECO\u00FD\u00DD\u00BF\x7F\u00F3{\x1F}\u00BC]\x16\"\u00AF=\x12:q\u00F5c\u00C5\u00D9\u00AA\x0E\u00C0*\u00F5\u00B3\u00E8\u00E8\u00A9\\\u009B\u00B6\u00DD\u00AA\u0088\u00C0j#\u00A7\u00B1\x0F\u00B4\u00DF\u00FF.$\u0090v\u008B\u0095!\f\x17\u0091\u009FQAj[q\u00EF\u00BE/E.\x12\u00AC\x0BD\u00D0U\u00DFy\u00F8\u0082\u0081\u00C3A\x03c\x04\u00EF\x1C$\u00AC\u00E9U\u009D\u00C8QD==\x12j\x05SwJho\u00E7ed\u00A0W\u00E6\u00E3\u00A51\x0F\u00E88\u00FD\u00FAJ3\x16\u00C1\u00F7\u00A8FL\u00CE\u009A$hk[\x0B\u00FF\u00A0\u00E7@%\u00C2&G\u00E8\u008D\u00C8\u009D\u00E3rxf:b\x02\u009BE\u00F4\"\u00FA9\u00C9\u0080\x14\u00EBPm`\"c\x17\u00E4M\u00E8\u00CC\u00AD\u00CF\u00BDP\u0095\u00C6\t1D\u00AC\u00E3[?m\u00B5\x1B\u00DCq\u00CE\u00CA\u00ECQ\x04\u00B8x2\u00B8fRU\x00\u00B2&\x02\b\u00D1U\x1C\u008F\u00B1\x07\u0091'b\u00A8m\u00DF\u00FA\u00F5z\u00C8\u0082\u00FD:F\x18\u00E4\x07\u0096\u00ED\u00E0 \x15aba\x10d\x04A?\u00CC\u00A6\u00E4\u00E0|8\u00F0\u00DD\u00EF\u00F8\u00BB\u00F88\u00DE\u00F0\u00F5\u0086*\x03\x00\u00FC\u00A7\u00F7\u00DE\u00FB\u0093\x1F\u009E\u00EFx\x18\u00C4Qq\b\ti8 opz\u00F8\u0086\u00D1\u00AC\u00F4+\x1C\u0097\x0E\u00B4\u009F\u00DA\u00D3y\u0081\x16n\x1B\u00F1h\u0094LuE\u00CFF\u0088A\u00D1]c=\u0097\u0086\u00C9\u00DBpl\u0087\u009B\u00FA\u008D\u00EC\x03\u00D2h)\u00A4\u00D1l\x1Cm!\u00F4\u00A2\u009F\t==\u00D4\u0081\\\u00B03\u00DCv\u008F\x0E\u00C3\u008Dw\u00CF\u00C2\u00EA%\u0098h\x7F\x0B\u00E6;\u00D5\u0081YB'\u00ED\x10\u00B3\u009D\u00D7>/^P^P\u00DB\x1D8\u00E6\f\u0082\x16\u00C3Q{\u00BA\x7F\u00FB\u00EE\u00ED\u009E\u00A1J \u00A3\n\u00D3s\u00A0hH\u00AA\x15\x19U\u0098\u00D0\u009Fj\u008FGM\u00C9\u009B\u00D6\u00DF\u00F3\u00BB\u00E6\u00C4\u009AJ\u00C2m\u00D4\u00BDy7\u00BC\u00F7\u00B7\f\u00C8a\u00E0l\u00A5\u00E7\u00F8\u00EE\x04\u00EEd\u008Cg\u0086\u0082~\x1C\u00ED\u00B7\u00E4L\u00BE0)\u009D\u00B3\u00A8%\u00C9\x14\u00F8\u0096-`^#\u00EA\x1AF\u0084\u00A2\u00F9\x06\u00CC+\u00B8\u0087\u00F5\x7FQ\u00A53\u00E2\u00F1\u00A4\x0E\u00EBxF4n\u0080\u00BC\x14\u008A\u00AA<\u00AB\"\u00E9\u00B9 \u00CAV\u008A\x01\u00D5\u008C\u0087\u00DF\u00BE=|\u00F6\u00AF\x7F\u00EFO~3\u009A\u00FF\u00A6\f\u00E1\u00BB\u00CC\u00BE\u00F2!\x7F\u00EB\u00C7`{K\"\u00A2\u00F1P\u0095\u00833\b(\f\x19\u00D3\x00U,\u00AAP\u00A3u\u00A0\u00B2H\x1BTL\u00B5\u00D0\u00831\u00F6 \x02\u0087\u00C2]\x02l\u0084\u00AD\u00BC\u00EF8\u00D9#\\L\u0083;K\u00A5j\u00D1\u0099\x00\u00F2\u00F7^\u00E8%\u00D3\u00A5q\u00DB\u00FB\u0091\x15j\u00B5\u00C8\u00A6g\u00DC|H\u00E30\u0092i\u00B1\u0098\u00BE\u00F3Ca\u00BF\u00C7\u00F4 X\u00EF\u00E1\u00C5\u0080\u00C2\u008E1'\u00E6\x11\x15\u0096/\x13\u00B418\x0E\u00BE/\u00D4\u00EDU\u00C2_\x06\u00CA\u00EE\u00A1\x10\u00B1\x1E\u008D\u0080\u0093\u00A9t[@cHB\x1E\u00E1Z\u009C\u00D0\u00FE\u00C1\u00D3\u008D\f\u00AAl\n\u00EA\u00B3\u0098\u0095\x18\u0090\u00B3\u00E0\u0090\u00BE;\u00EF\u0083\u00A3\u00C6z\u0099\u009EnWW_$\f\u00B3]\u00B5QL\u00A2\u00E6O\u008C\u00C1\u00E9\u00A2\u008Dy\n\u0082\u00ED;\\\x05u\u008B\u0088+l]' \u00E3y4qFA[\u00BB\u00A2ibi\u00D0\u0093K\u0093}\u00CDm\u00EC\u00B5\u00EE\x16w+\u0088^\f\u0098#\x18\u00C1\u00B1\u00F1;\u00D5\u008EcPE\bB\u00CF\u00CD\u0088f\u00B9+\u00FD\x0E\u00B7\u00A5\u00DE>7\"\x0EC\x0F[\u008E>\u00D0\u00A6g;\x06\u00AE`\u00B6\u00C3,\u00B6]\u00F4a\u00C0{\u009F\u00FE\u0098}\u00F4\u00C1W\u00BE\x19\u00CD\x7FS\u0095\x01\x00\u00FE\u00CA\u00F5\x07\u00FE\u00F6O_\u00FE\u00CD_\u00FD\u00F2\u0095f\u00B7$wF\x1D\u009E\u0092\u0084\n~\u00F7\u0097\u0091\u00E8\u00B68\u00F5\u0096\x1A\x11\u00D7\u00CC\u00A4\u00A8R\x01\u0094*\r2\x1B\u00E49D*M\u00ED\b\u00A6}R!h8\u00CC\u009A\x04@\x12\u00FF\u00BC\x15\u00AFP\x0F\u00DB\x05Y\u00C5\x10\u00A8:\u00C8\x00%\x1D\\\u00D0\u00B9K\x0EG,\u0080\u00C7\x1E\u00BBCk\u00D7\u00E8\u00DD=k\x1B\u00CE\x19\u00FBB\x0E\u00BA\u00B8X\u00AEcI.\u00F2l\x0F\u00F2D\u00C59 \u00F4O\u0083\x19\x16U\"\u0089APZ\u00C7f\u00D9$\u00B2\u00BF\x13\t\u00A5\u009Djk\x1E\u00E3l\x01\u0080\u009B\u00A0i\u00CC\u00E8\u009C\u00C8=\x1A\u00A4\u00EF'\u00CC\u009F\u00B6\u00F6\u0093\u00CDHmI\x01-\u00FB\u0084#\x03\u0092\u00A4\u00C2H\u00F5H;Bs\u00D3f\u00FD\x05G\x1Av\x0F\u00D9r\u00A0:\x13~z>\u00D5\u008F86\u009A\u00A4oCms^\u0093\u00DF\u00D4\u00A8\u009Cs[\u00ED\n\u00D3s\u00BE\u00E3\u00D2\r\x19\u00D7\u0090\u0081G\x1E\u0084O.S\u00D5\u00A0f[{\u00EC\u00A07\u009AKw\u00B8\u00D4\f\u00A9%\x13\u0085\u00D69\u00B1T\u00DE\u00CA\u00E2z\u00C1\u00E3\u00AB\x1B\u00F8\u00BF\u00FFm\x7F\x1B\u00BF\u008Co\u00FA\u00FA\u0096\f\u00E1/\u008F\u00A7~\u00EE#7\u00EF\u00FC\u00EC\u00CF\u00E0\x0B\u00DF\u00D9\u0089\u00BFB\u0090\x15\x04\x04\f\u009C\x19\x02\x7F\u00A7\x04w%\x17%0\u00E9\u009F\u00F2\x18P\u0085PI\u00F4\u00D9\u009E\u00D6\x1B\u00DA-Z\u00FEB\u00DA::\f\u00B3\u00AC\\\u00E4\u00FDZ\u009C\u0083\u008D\u00F40\u00F5p\u0083\u00B0\u00B3\u00BA\x10\u00D0\u00A4\x0BO\u00F5R!\u00D2G,\x1F\u009F\x03\u008F\u00A7\u00E3\x06e\u0080;\u00DC\x18\x05\x18\u009Bt\u00D9\x01\u00EC\x13\u0094\u00CCqMU:\n\u00A9X\u0099\u008B\u00B18\u00E6\u00AC\u00C2*e{h\u00BA8U\x16K\x1Ff[\u00B8\u0094\u009C\u00C6v#Z\u00B06\u008C\x15\u00D2\u00B0\u00C9(B\x032C\u00E3\u00E4R3\tK1\"\u0080FB\x16f\u00E1\u00A9\u00AA\u00C4l@\u00DA3z\u00AD\x05w\u00CD\x01\x055\u00C7\u00A5\x10\u00EA\u00CA\u00DA\u008C\x1B\u00AAv\x04\x10\u00C7\u00D3\u0095\u00AAq\u00A3\x13\u00AC\u0097\u008A\u0090\u0084^\u0084\u009BL\u009F\u00EDed\u00A3\x18Bc\u00AAu\u008D-mZg\x06\u00B3\x11\u00B0\x03\u00ABZ\u00A0\x10dU[\u00AE\u00B9L\u00A9C\u00FB@\u00C6)\u00CC\u0081\u00AA\u00D1\u00A02h\u008D\u0089\u00B86wU5%\u00B4\u00DF\u00C4\x18\u00AEp<\x7F\u00FD\u00D9\u00A7\u00FF\u00A7\u00E7\x7F\x0E\u00FF\x1B\u00BE\u00E9\u00EB\u009B\u00AA\f\x00\u00F0\u00B4\u00D9\u00FC\u00C8|\u00EEo]\x1F\x01Q\x12\u00CE/\u00C4n\x18\u00BDNA\u00B2\u00C8P\x11\u00A2\x12\u00B1&\u00D4\u00DA\u00EF\x1A\u0082\n\u00B1m\u0091\u0081\u0088\u0088kp\x05\u00E0\u00A7\u009A\u00D0\u00F4\u00AE\u00B4\x1D\u00F0\x1E\u00CE\u00F3\u0096~\u00C4\x1D\u0082\x118f\u00E2\x0F*4\u00BEg\u00D4\u00D9\u00F2\u009F\u008E\u00F9Z\u009A\u00AC\u00A2NipL\u00A9\u00D1\u00E3\x10h\x01\u00A1;\u00EB\u00E2\u008EG\u0097\u0089\u008B\u00D4\u0080\u0093\u00CA\u0090P\u009Cn9\x1C\u00A5\u0093w\u0097\\@\u00E6\u00E6\u00AA\x13\u00FCOH\u00ED\u00B4\x1F\u0094}\u00E2\u00E2H\u00DD\x7F\u0085\u00DD\u00D4\u00DF\x1D\u00CD\u0085\x17\u00EE@EX\u008A\u0081\u00F5\u00FBkM*\x1AR\u00EE\u00D3y\x04\u0084?\u00A8\u00F6\u0094\u00AB\u0092\u00EA\u008A\u009F\u00FA\u009B}C\u00DA\u00CB\u00CE\u0091\u0089]\u008D\u0088\u00EF\u009E.V\u0085y\u00CFv^Fn\u00CA.\u00E1\u0096c\u00C5a\x01\u00F9\u00C5m\x14\u008F\u0080\u00CElPB\u0080j\u0080\x1D\u00FA\u00EE\u008BJ\u00D2\u00F1o\u00DA\x0E\u00C5\x00L\u00EB;\u00B8M\u00AA\x18\x13\u00E5\u009A\u0094^?\u00B7\"\u00F8)w\u00A4\u00D4\x04\u00ED4%\u00D5A\u00E7m\u00B0\u00B977\u00E75lR\u00A5P\u0096\u00A4m\u0080\u00B2\u0091m\u00C0\u0087\u00E1\u00D1w=\u00F1\u00B7\u00EC\u00DDU\u0094\u00EE\u008D^\u00DF\u0092!\x00\u00C0\u008F?x\u00DF\u00DF\u00F9\u009E\u009B\u00B7?,\x12\x161vC\u009F\u009D~\u00BB\u0082\u00FB\x0EW\n\u00F4\x1D\u0086\u0093\nF\u00EA\u00BA\u00BE8\u00EA\u00C9\u00D8\u00B2\u00F8j\u00E3\u00DE\u00A6{\u009F\u00DD\u008E\u00A8{\u00DA\u00E9\u009E]=\u00A9\u00FEJ5)\u00A2\u00EF\u00D24%\x0F\to\u00958\x12%\u00A0O[a\u00BA\x00\u00A8\x0F?\u0086\u00E1\x11\"\u00E6\u00FFp\x11\u008Dt\u00FC\u00B1\u0084!\u00CB\u00B7~\u00D1Bg\u00A8\u00F3b\u0094$\u00A38\x1C\x19\u0097p\x1CE 3u\u00FA5\u0094Y\be:\u00D5\u00E6\u00C6h\u0082\u0090*m\u00BA\u00EE\u00AF\u00F3\u00C2\u00C8\u00B8\x18&\u00F3\u00FA\u0095a-\u0084\u00DD\u0098[o\u00FB\x1C#\u00B1\u00F4\u009F\f\u00A9\u00DBJd+\u0088\u00A9/uj\u00E6\u00EF\u00EDoh\u00BC\u00B4\u00A7\u00F07x\u0095\u0099\u008B\x07\u0086\u00E5\u00B7\u00C5\u009B\u00C0\u009BIUY\x10\u0083\u00C8\u00CA\u009D5\x1B$\u00B1\u00F5\u00AEPmE\u008E\u0096\u00910\b\u00DB\u00E7\x06?\x18\u0082,C\u00A3\u008C\u0082\u00F9\u00EE\u00EB\u009E\u00B6\u0083\u009E6\u00ED\u00BAFo\x1A3q\x05\u00D9\x12\u00E0;\x1E}\u00FB\u00FE\u00F0\u00D9\u00BF\u00F6\u00A1\u00BF\u00F3fh\u00FD[\u00AA\f\x00\u00F0A\x1B/\u00FD\u00F5\u00D7>\u00F9\u00F7\u00FE9\u00BE\u00FA\u00DF\u009F\x0B\u00A3\u008C;\u00F6^\u00C8\u00ECC\u00EE\u00F8\u00B4\u0086 \u0087\x14\u008E9\u00ED\u00A9\u00D2[\u00D9\n\u00A42\u00C0\u00A8:\u008D<\x1E\u00BFm|v]E8C\u00FF^\u00BB@\u00CF\u009F\u00AA\u008B\u008EY\u00FBu6i\u0081\u00A6G\u00FBz\\a\u00B3g\u00BD]\r*\u00DC\u00B6*\x00\x01\u008F\u00CC\"\u0094\x19\u0086\u00CB\x04vI\u00B9i\u00B5A\u00AC\u0087\u00F1m\u00D3\"d\u00CFv\x07z\u00D5\u00E1\u0088;\u00A8\u0084&\u00A1\x13\u009F\u00EB\u00B6lZ\u00E3\u0087G\u00A8o\u00BA#\u00D9\u00BFHk\u00B6$\x06\u009B\u0081\u0086\u00E4\u0096\u008C\u0094f\u00A2\x1E\u00B6\x0B\x04mt\u00FD]\u0084\u0092\u00FB\x1A:\u00FB\u009E\u00E8)'\u00BF!\u00AA8t\x00-6A*R\u009D\u00A3B(\u0080e\\B\u00CE/\u0090\u00E3U\u00FF\u00F4\u009B!\u00FA8\u00C8p\u00C0\u00F6\u00C11\u00AEj@t\u00CE\u00F9\u00BB\u00EE\u00DD\u00ABUk\u008E\u00D3k\u0091s\u00A6\u00E7oy\u00AC\u00E7\u00B4\u00E4\u00B2\u00E8\u00F7\u009A\u00DA\x12N\u00C2\u00D49_\u00E2\u0098\x1Bl\x0E8\u00EB5z\"\x1A\n?fP\u00AArs\u00C6.\u00A4RF\u00F5.V+\u00DC&.\u00EF\u00BF\u00F7\u00F7\u009E\u00F8\u00CF\u009Fx\to\u00E2\u00F5\u00A6\x10\x02\x00\u00FC\u00C8\u0083\u00F7\u00FF\u00CD\u00F7\u00DF<\u0085\b\fVRQW\x11\u00A2C\u00DE\n\u0099\u00ACII\u00F5\u00D9\u00A3\x0E3\x01#\u008D&N\u00FA\u0097~\u00DF#\x1D{\br\u00B7\x13\x14\x17U\u00BF\u00AA\u00BE\u0082\u00F3\u00DF\u00D1\u00EE\u00D9\u00E2#\x16\u00CE\x0E41T\x0B\u00DEyXPu\u0091,@F\u00BFI\u00C5\u009B\u0088\u00AD\u00C7\u00F8\u00FD8\u0080\u009B\x19\u00EFC\u0089m\u00CDr\x1FR\u00D3R\x15\u00C9\u009C\u0087\u0094\u0098k\u00F4\u009FP\u0080\x13\u00D2V\x04\x1Fc\x1E\x1C\u0098\u0097RC\u00E6,(/F2\x19A\x18\u00EB\u00D0Jb\x1F\u00CA\u0083@F\x18\x1E\x07\u008B\u0096\u00A8\u009D\x03\u00B7\" \u00FD\u00F0j\u00CB;\u008C/\x17h\u00CE\u00A5\u00BC-\u00BE\u00BAC\u0085~\u00D2\u00BD\u00E9B\x1D5\u00B7\u00D3\x03a\\\u009A\u00E7\u00A4\u008F\u00CD\u0081\u00F4\\4 \u00B0\x18g\u00B1\x100\u009F\u00D7\u00AC\u00AC\u00C7s\u00BD\u00C9d\u008Ah\u00F8\u0092\fd\u00AA\u00ED\u00E9\u00CB}t}\u00A8\u00A3\u00DE:'\x06\u00D2\u00EA.\u00CC\u00EEy\u0090\x0B\u00F1\x1A\u00E6\u00D7Eg\x1E\u0095\u00CA\fJ\u0096:#k\u00EER\u00ED\u00FCN\u00DAx\u00F5\u0099k\u00DC\u00FF\u00D1\u00F7\u00FC\u00CD7K\u00E7o\n!\x00\u00C0\u008F\u00D9\u00D3\u00BF\u00F1W_\u00FF\u00C4?~a\u00DE\u00FC%\x1BgO\u0082ES^\u00F6\u0085\u00D0\u00C5\x03\x19\u00A4z\u0095\u00E8\u00A1\u00A9\x19D\x0F.\u00C9\u00D2\u0083\u008AT\u0084%#\x19\u00CF\f&\x18R$p\u00F4k\u00FB\u00EB\u00B6\u00E1Pq\x0E2\x02\u00F6\x12\u00E1\x19\u00BF\u00DE$\u0095\u00A4V\x04\u009E\u0085\x14\u0088`\u0098Z\x1C\u00A5n\u00B4\u00DCz\x18\u00C2\x1B\x11\u00DE\u0086\x0B\u00DF74,\u00CE\u00C9uC\x1D\x1A@\u00A9'(\t\u00D8%\u00B2\u00E0\u00B4\u00A4a\x1A\u00D3\u00DA\u00F7\u00F4&L\u00CB\u00FE\u00A9M\u00B5\u008FI\u0097)\u00BF\u0087\x0Bn4\u00A4TFC\u00ED\u00D1\bXz\f\f\u00C1%g\u00DAR\u00A2\u008C]&?9\x18x\u00E4u]RL\u00A1\u0085\u00990\u009D\u00FD\u00E4\u00E7\u0098\u008D\b\u009Bd\u009Em\u00ECzV\u00D3#ZQ\x06[m\u00A7&/P\u009FG]\u00A7<\u008F\u0090\u00FE\u0096\u00EDg9\u00B6Y\u0092\u00BE\u0090\x04\u008A\u00D0i[\u00B0\u00BE\u00DE\u00D2\u00B8\u00A8\u00F9+\u0086S\fA\u00CC\u00A0\u00AFQ\u00A9\u00C9\u00E2\u00C4\u00E2nz~jw\u00B6s$\u0081,\u00C7\x11\u00D6\u00E2cY\u00C0\u00F6\u0081\u00ED\x1F_\u00FF\u00CF\u00DF\u00F6\x1Bx\u0093\u00AF7\u00CD\x10\x00\u00E0?\u00DB\u00DF\u00F7\x13?{\u00F3\u00D5\u00BF\u00F4\u00D5{\x05M\u00E2E\u0097b\u00D6.\u00E8jD\f\u00C8\u00AC%'5\x17\u008A\u00AC\u00C1\u0090\u00F1\u00F0\x1CD\x04$\u00F3\u00A80\u00E5\u009E\x04E\u00E6c\u00AA\u00B0\u00DC_2\u00FEu\u00B7(\u00EF-\t\x00\u0084\u008E7\u00FB\u0083m\u00C4\x02-@\u00BF\u00E3\u00FB\u00AA>\u00A4\u00CB\u00AF?|\u00B6\u00F3\x18\u00C1\x14\x1E\x1C\x01\u0095/\u0088<\x07\u00A3\u00CF_\u00D6\u00F1\u00D4\u00A3\x1B\u00F1az\u00EE\u0087xq`\u009B\u008E\u008B\u00DC\u00A2\x1E\u00A1\u00C088#\u00B3\u00AEs\u00AB\u00FE\u00C8\u0095\u0089\u00C9\u00DD\u009C\u00DCr\u00BE\u00D4\u00CE\u0098m\u0083\x16W%\u00E75:q\u00A2\b\u00E5jJ\u00AD\u0088\u00F1O\u0094:\u00A3\u00E4\u00A0,\x18\u00CB{\x1Cd\u0092\u00C1P\x18\u00AB\u0092\u008C\u00AC\u0092\u00A5\u00AE\u008EZa\x07}\u00FC\x06\u0086\\\u0093\x01\\<\u0098\u00D5v\u00A86eA\u00FB!\u00BF?j\u0099\u00CA})\x0F\u00CC\u0098\u0094\u00FE\u00C9\x04\u009D0\u009D\u00CF]\u008C \u0099G\u00FB{A\u0091d\u00A8\u00CD\u00D8,\u00A6\u00D0\u00ED\n\u00B9\u00BC4g\u00BC\u0097\u00EADD?\u0085\u00BA'\u00B2|\u00FA\x042\x14Y.\x1BeWB\u00A8@\x0B\u0091\u00DE\f\x00\u008F\u00AE\x1E\u00C3\x7F\u00E8\u0099\u009F@\u00EE\u00DC\u00F8\u00AD_gq\u00FAM__p\u00B7\u00FF\u00F1\u00E1\u00BF\u00F8\u008D\u009F\u00BE\u00FF\u00F2\u0087c\u008EE\u00A8\x1D\u008E\u009F\u008Cx\u0092\u0094}#\x14\u00D9\x03\u00BAo\u00F5\rK\u00A2\u00A3\u00CEK/\x02\x11\x01\u00CF\u00A9\u00A8\u00C8\u00AC\u00AF\u008B\u008E\x04\u00EA\u009ChK\x10/\u0082\u008BJ:\u00A0\x11\u00B3\u00A4d\u00D7\x19\u0081UZ\u00A9\u00A8\u0088\fG\u00E5\x1A\u00E4\u00EF\u00ED\u0081\x0E\x07\u009Eq\u00E0-\u0087\u00E3\x01\u0080{0\u00DC\u009F\u00C0\u00B5\x03\u00F7\u008E\u00B0\x15\u00EC\b\u00F7\u00DB\u00EE\u00F1\u00B9\u0091HwJ\u00DC}rvf\x10\u00C66\u0099\x10>\u0083I\u0084W\u00C4*L9\t=\u00DAQ.\u00C38(\u00BD\x13-\x00v8\u00FD\u00F9\u0096\x12iL\u00C7\u0086\x11\u0095\u00A3\x01dL*\u00DDd\u00D7\u00B3\x14\u00C3m\x02c \u00E3\b6\u008Fcz\u008A;\u00DD\u0085\x0EVS\u00E28\x06\u00DB\u00AF\u009D\u009D\u0082\u00D8\u00AFy\u00AD\u00F3\x19mm,Q`\u00A5\u00C68fI\u00FD\u00A5\u00F8\u00AC\u00BE\u00EB^\u00B3\u00EE\u0093L\u0081RX\u00A8\u00A9\u00F6@Q\u00B6(V\u00E2g\x00S\u00E9\u008E\x03r9\u00CA\u00DD\u009B\x06\u008E\u00A3\u00AEW\x1E\u0086\x1D1\u00B7i\u00B3\u00D09\u00D2K\u0099b\x1D\u00C5o\u00BDt2\u00EA@~\u00A8D\u00FB\x05e\u00DD\u00E5\u00FD\u00A2Q8\u00E1\u00EE\u00EB\x1F~\u00F4\u0089'~\u00F6\u00F9?k\u00EF\\\u00F1\u00C87{\u00BDi\x1B\x02\x00\u00BC\u00CB\u00CC\x7Fx\u00FF\u00B6\u00BF\u00F1\u00E4\u00A5\u0092\u0095\x14\x15\u00A8B%\u00A1&4\u00A2dm\x02w\u00C3R\u00CC\u00C4\u008BX\u00A1b\u00A7\u00EDx\u0096a\u00EF\u00E7\u00C9\x0B\u0081\u00D2\u00BFz\u00B0\u0091\u00AE\u00CB<\u0089\u0093\u00CD\u00A0\u00B6O\u00F3|\u00C0\u0081\u00C4\u00BC8\u00B1\"\u00D6\u00E6\u00CA(\u00F4\u00C0U\u0088T\u00EF\u0092\u0086\r\u00EDH?\u00CC\u00C5\x13\u00F7y\x1D\u00C0CC\u00BA\u00F6z\x01\u0095\u00D9\u008E\u00F5\u00D0by\n\u00E0Ul\u00E4\u00A0\x15;P\"\u00ED\x0B\u00C7H\x17\u00E3\"\u00B8\u00B2-E0\x06\u00C4\u00CE(F\u008D+\u00C3\u0096U\u00B8\u00C5\u00E9\u00D9\u00C0\u00E2\x06\u00D4y\u00EE\u00A3\u00DC{i\u00C3P_*\x13\u00D3a\u00E5\u00D9`?\u009Czs\u00B4\u0081\u00C5~\u0090\x1E\u008F\u00E5]\u00E3\u0090\u009A$\u00D5\u00A9\u00FF\u00DD\u00DD\u009A\u00B7\u008A\u00D3\u009C\u00BC\x185'm\u00AE\u0093p\u0091\x02\u00A0G?:\t\u00B5\u00EF@\u009D\u009E%/4V\u00D9\u0095\u00ED=\u00D1\x10C\u00AC\u009D\u0085yt\u00C6##\"6D\x14\u00A2\u00EC\x02\u00F1vlp\u00BF\u0082\u00DFU\x00\u0096\u0086\u00FC\u009Bk\u00C7\u00CDG\u009E\u00FA\x1B\x7F\x10f\x00\u00FC\x01\x11\x02\x00|\u00D9}\u00FBk\x0F\x7F\u00FB\u0093\u00FF\u00EF\u00F5W>t\f@\u0084*&0\u00E8\x06\u009CwH\u00E8\u0098$\u00C1w\u00D9\b\u0090D,\u0084`\u00A7k\u00AB\u009B\u00C1|\x06\u00B4\tK\x1C\u00F7\u0085\u00AF\u009D\u00BC\r\x10\u00E3@F\u00E7\t\u00CA\u00A6\u00DE\u00CA\x18\u0091\u00E4\u00E6\u00FC.\tu\u00F66T<\u0082PC\u00B5\u0095\u00C5R\x1A\u00AC\u00D4b\x1A0\u00BC\u00D5\u0081g'\u00F0\u0084\x03\x0Ff8\u0088\u00EEM\u00E0j\x06L\x1E\b\u00E98< \u00F9\x15\u0083\u00906\u0084D\u00DB&35\u0088\x18\x14\u00F7puXIZ/\x14\u00E1\u00EE\u00D8\u008E\n\u00D0\u00D9fH(\x13b8\x06\u00B6\u00A3\u00A4\u00D98\x1CR\u00E5\u00C6\u00E1\u00CDL\x0B\fL\\90h\x19\u00DF<\u009E\u0086\x01\u00D8|\u0086\u00A9\u00B9\u00F5as`X\u00AC\u008C}VV\u00E2F\u0084`>R\u00C2\u0083c:\u00BFAuG\u0088 \x11\x00b,\u008AR\x14JP\u00E99!\x00\u00A9Q\u00FD\u00F7\u00B4\u00D3\u00B4~voEHr\u00AA;\u00ED\u00B8\u0093\u00AB\u0099PT\u00DA\b\u009A\x1A\u00AAR\x05D]\u0081*\u00EC\u00842<U\u00C9\u00FF\u00BF\u00BDo\u008F\u00BA\u00F4\u00AC\u00EA\u00FB\u00ED\u00E7=\u00E7\u00FB\u00BE\u0099df2\u0099\u00DC\x00\t\u0082@\u00B8#wQ,\u00B1,\u00AC\b\u0088\u00B5\u00A6\x0B\u00A8\u00B4R\u0090.\u00DAJ\u00ADE\u00B0\u00DAbU\u00BCVY\n\u00AC\u00A5b\u00B5\x15X\u008A\u008D-\u00A2(\u0082J\u00B1R*\x17A@0\x01\u008A\x10\b\u00B9\x13&s\u00F9.\u00E7\u00BC\u00CF\u00EE\x1F{\u00FF\u00F6\u00DE\u00EF\u0099Q\u0099\u00CC$\u0099$\u00F3\u00CC\u00FA\u00D6\u00F7\u00CD9\u00EF\u00FD}\u00F6\u00ED\u00B7\x7F{?\u0093\u00F0\u00A3\u00FE\u009F\u009C\t\u0085e\x15\u00C6\u00B1P\u00A7\u00D5\u00BD\u00881\u00BD\x05^\u008B\u00EF|\u00F4\u00E1\u00E3\x15\u00BB\x7F\u00E7^\x0F\u0093\u00FB\x10T\u00F8\u00F2\u00C6\ta\b\x00p@d\u00FC\u00A9\u00C5\u00F5\u00AF|w?\u00F8\u00C6[D\u00A12mJ:u\u00D5Kh %|\x00\x10x\u0081\x00\\oO+-\u00B9\u0080\u0089S!?\x1E\u009F\x00Hg\u00E7X\u00AE\u00C1\u00B4BQR\u00F8G\u00FFC\u00A7\u0096>\u00C3\x07\u00B8\"H+\x10\u00BD-\u00A9\u00E9I9\u00E5\u00A4)\u00E7b,J\u00C5a\u00BC~\u0099\u00E4\u00F8E\u00DC\u00DD\u00A6\u00FB\u00DA\u00FD\u00B2h\u00ADy\u00AEn\u00E9\u00C9UPMz.\u00B1\u00CE\u00EB\u0092\u00B2O(3\x07\u00B9\u00A4+0f\n/\u00C2\x06\u009F\u00D8\u00AAE\x10z}\u00AF\u0080\n\x1B\u00B1\u00F8\u0092!\u009Ao\u00A4\u00FB\u00BB%\x00\u00DA\u00FC\u00D1v\x17l\u00A68\u00A3\x0B3\u00F2\u00B92M\u008A\u00F2}Z\u00D6\x12\u0087\x03\u0093\u00F2\u00EAi\u00F5\u00A6WN\u00D6\u0090A\u00CB\u00B3\u00F1wA\u00F7\u00BAi\u00A6 \u00A3\u0081L(\x043I\u0083\u00F2\u00C6\x11\u009EA\u00D3:\u00E7$CE\x1A\x01\u00E2\x01\u00EEm\u00C4w|/~\u00F3\u0089\x1Bh\u00CC\u009Fc\x7F\u0088\u00E7\u0090\u008BS^jP\u009D)W|\u0089\x03\u0096\u00F3\u008E\u00C5c\u00F1\u00CA\x13U\x06\u00D3\u00B7}\x02\u00E3\x0B\u00BA\x18^\u00B4\u00F9\u00E9\u008F\u00BC}\u00FD\u0096\u0087,\u009B\u00A5\x19\u00DD?\u0080\u00A0\u00D9\u0082\u00A0H\u00D7\u00DF\u0098\u0084\u00C5\u00CA\u00B7\"\u00B4\u00D1)\u0099\\\u0085\u00BA\u00B0j\u00C1\n\u00FC\u00B3\u00D5^\u0087\u0088\u00F0@\u00FC\u0081\x14\u00BC\u00A0\x1B\u00AA\x10\u008A`Uh\u00FD%M\u0084?0\u0080\u00E2:\x16w/\u00F6\x05\u00C2\u00D7\u00CC\x05;}\x7F\x0F\x1B\x02\u00E7\u00E9y\u009E55\x0Fa\u008F*vw\u00C1\x1A\u00CCCX\u00EF6\x01\u00D7F\u00D8\u00DA\u0090\u00DD,\u00E9\u009Ag\n\u0086\x11\u0098+-\u00A4\u00FA\u008APn\u00FD\u00FC\u00F3\x16\u00F7c\x13w\u00E6!K\u00C4\u00CDj\u00C7i%\u00B6m]18\u00D3\u00AE{\u008CKv\u00A68.1\u0083\u00BD\u00B2\x06\u00BB\u009E\u00D65\u00B1\x03\u00A0`\f\u00C9'\x18\u0090\u00D6\u009A\u00D7e\u009EB\u00BE9Z\u00E7Yw\u00E6\u008A\u008Ay0\u00E58\u00D2\u00BB\x0B\u00AF\u00C4\u00B1\x1A\u00EF\u009Fx\u0089\u00DF[S5\u0080U\u00E1\u00CA\u0095\x19\u0090\x04\x1C\x07\u00EF\u00B7@\x0FJ\u00CA\u00BBi\u00E5o>\u00F3\u00C8.-\u00F9~\u0085\u00DAob\u00FDY6~\u008C\u00B5WD\x19\u0083yd\u00A6\u0090c\u009B\u00C0\x10\u00CA>\u00AB\u009F\u00BB\u00B7`J\u00BAC\"^r\u00ED\u00989h\x00\u00C0\u00D1\u0087\u008E\x1F\u00DF\u00FD\x1B\x07\x1E!\x0F;q\u0085p\u00C2\x1E\x02\x00\u00DCS\u00E6\u00E3kw\x0E\u00FE\u00D0\u00FF\x19\u008F^~s\u00AB\x00\u009E\u00CB-\u00B9\x02\u00E5sS\x04\u00C5\u00DA\u00D3k(\x05Q\x1A\u00D9\u0086\n.\u00C2~\u00C7*\u00CA\u00AB\u00CA\u00A0z#\u00A5i+s\u00CAD\u009Bu\u00E5\u0085izY\u0093\u0094\x1C\u00B5\u00B8 4=_\u00A0\u00D2\u008CUE2A\u0092\u00E1J\b\u00F1\u0082\u00EB9\u009B\x02;\u00AA8\u00D2\x15k\x00\u00E6\x0E\u0096Y\u0097e\u00EF]\u00E0\u00E7\u00E9n!\u00BA\u00FA\x1D\u00AAF\u00AE=\u00D2gL\u00CDi\u00C6\u00D7\u0083O(\u00C6\u00CESo\u00C2~:\u0080\u00ACe\u00E0\u00F5i(\u00CC\b\x7F\u00FC\u00F3.\x06~u!\u00C5Y\u00CB\u00DB\u00A1\x153o\u00A7\u00BB{\u00DF\u00F9\x19\u00CA\u00F9a\u00E0'\x1F\u00CF\u00A4E\x1C\u00DC;p7\x7F\u00D4$\x13\u00B1AK\u00EC\u00D8\u00D3\u0083\u00A9\u00DE\u0082yq\u00DE8\u00A5\u00A3x\x13\x02\u00AEX=IwvL<\u0085\u00CE\u00E7\u00A7\u00E4\x14\x14\u00B7\u009Es\u0089\u0083\u00DFQ\u0081\u00AC\u0086\x0F\u00FE\\\u00DD9,D'\u00C99\u00C1\u00FD15\x1C\u00AA9\x1F'\u00DE\u0082\x02\x1AM[\u00A9\u00A9\x04\u00C0\u00C2\x1D\x13\u00C1\u00CE\u00DA\x02x\u00FC\u00EC\u0087n\u008D2\u00C8\u00B7y+\u00C6-\u00AA\u00F2\u00DC\u009DO\u00BC\u00F7\u00F7\u00D6\u00B6\x1E\u0097\u0082\u00EF\u00F1:\u00D7l\u008C\x07\u00E8\u0082\u00DD\u00DC\u00A6(\u00C3\u0085\u00B2H+\u0095D`\t5T\u00A8\u00DD\u0099\u00EDxZ\u0095E\u0080\u0087vK\u00C7\u00B8g=_^6\u00D0\u00F0\u0085T\u0090/+&KW\u00D0E\u00D3N\u00E4\x1D`<g\u00FB\u00DB\x04\u00E9\u00A3\u009D\u0093\u0096yBs-\u00EE)]JU`C;\u00CE\u00E9\u0082\u00B3 \u00D8\u00D5\u0081uu\x1CA\x15k\u00A3+\u008Anw9Wz\x02\u00863\x04\u00B2\u00AE\u00F6\x7FNh\u00C6\u00D7\u009C\u00D0\u00D2\u00BD1\t\u00F9\x06\u00AE\x00fK\u00BB\u00DE(\x1E\x1A\u0081\u0099s\u00A7\r\bM7wX\u00BA%\u0096\\Lf\u00EEnx\x13s\u00D1\u0087\u009E\u00DE@\x13\x04\u0086\u00D0\u0080(^b\u00E6A\u00A0\u0098\u008D\u00E5\u00AD\u00BA\u00C0\u00F2\u00FEV\u00BD\u0089yX\u00F0\u00E4S\u00D0\x1B\u00AAx\x020\u00C5\x11f\u008E;\u00B0n\u0086a\x15\u00D4\u00EE5\u00B1\x03Stl:\x03\x0F\x13\u00E8\u00E5\u00CD\u00AA\x07\u00C2y\u00A3H\f@\u0091\u00C0\u00B1\u0083\u0089\u00B6,^z\r\u00AB\u009E\x00\u009Fy(\x12b6,\u00AF.JH\u008A'\u0097\u00D8U\tk\u00BB?tGL\x15\x1D\x07\x1F\u00B9\u00F5\u00FEs~k\u00DF\x13\u00E4\u00FE'\x06&r\u00DC*\x0F\x01\x00\u00F6\u008A\u00E8\x1B\u00B7o|\u00F9\u0087v\u00AE{\u00E75su*\u0081e\f\"\u00D4\u0081\u00C0HLH|@\x05\u00D3\u00E5\u00D3\u0080\u00C4\x13*F@\u00F2\u0092\u008FP\u00BC5dhHI\u00CD\u00E6\u009C\u00B1\u00EE_<\u00B8bE\u0080\u00D0\u00A6\u00E15\x10h\x04s\u00EC\u00C4\x04\u00FC\u00C5\u00FAY \bB\u008A\t]sk\u00CD^\u00FE\u0092\u00D5\u0099\u00DD\u00F7GN\x0E\u0085\u009Dk\u00D4\u0086m(\u00D6\u00BBy\x07\u00B3\u00EE\x14\u00E3n\u00B1v\x02j\u00B6^\x03'\u00D2\u00E8B`\u00C8=2\x06.\x7F\u00F3\u00BA\u00B3S\u00F3\u00D4\u0083ag\u00E5\u00D1\x05\b=\x17\u0098%\u00D0H\u00CB\u00D8\x1C\u00C3\u0080p\u00AD\x05\u00BF\u00D7\x15\u008F\u0090\x1E\t\x04\u00B1\u00B8\u008C\u00DDj\t\u00F0\u00BA=_\x12\u0091\u00F8.hY\u0089]\u00D0]\x17\u00B5y\u009Ex@z\x1B\u00DD\x15\u00DF\u0088\x14T\u00A1\u00DB\u00DE\u00E9aK(\x05\u00BB&\u00C7g\u00A8@\u00B9\u00AF&\u0081\u0089\u00EF\u009F\u00CA\u00A6\u00FB\u00FDFj\x12\u00F6\u00BC\u00A4(\x03\x1E\u00C3\u009E{\u00CBgM%BY\u00A8\u009F\u0097\u00BF9?\u00E8\u0081PaLZ\u00E1\u00D1\u00B0Q\x10(\u00EA\u008D\u00A1\u00F4\x004\u00E0\u00E8\u00EE\x05\u0086\u00AF\u00C7\u00CBo\u00AD2\x00\u00EF\u00F1d\u00C6e\u009B\u009F\u00F9\u00DD7\u00AF\x1Dz\u00C62\u00AC\x7FI\x15\u00D2\u00D2\u00D76d%\u00930\u00C5\x0B8u\n\u00E9\u00C8\u00A5\u00D0X\u00C8l\u00A1\u00B6\u009AE\x00\u00B2\u0097\x1C\x02M\u009F<h>\\\x00\\\u00D04<\u008A\u00F0\"\u00F8}\u00BA\u00E15\u0093\u00C0\x14\u0093L44\u0095\x032^\u00E4dA\u00F1\f&\u00B9f\x13\u00F85(\u00CE\u00E9\u00C0Y*\u00D8\u00E8\u008A\u00F5\u00AEX\u0083`\u00DE\x05kjX\u0082hf\x10fj\u0096tN\u00A1W\u00B3\u00A0D\u00C8E\u00BD\x0E\u00C2\x05\u00BB\u008D\u0088\u009C\u00BD\u0091\u009A\u00E8!\u00F8z\u00C7=\x17Y\u00CD<>-\x1C\u0080\u00D1\u00B3\f\u009A\u00A8\u008C\u00C00\x10Q\u00F3\x10\u00CC30\u00A0\u0091*bp\x014k\u00EFX\u0083\u00FA[\u00F5{h\u00F4P\u0090\u0082>\u00A3\u0087\u00D0\u00E3\u00ED\u009B\x07\u00E4\u00CF\u0095\u00DB\u00E7=\u00E5s\u0080oKk\u00CF\u00E3\x0Eu\u00DF>\u00DD\u00DE\u00E9^\u00CF\x00\x00 \x00IDAT\u009F\u009C\u0084\x00\x18\u00C19\u00A2Q\u0092NrS\u00DD?\u0095\x00\u009C\u009EN+\u00C3\u00F0\u0092\u00F3`E!\u00F0\u00EFR\u00C1\x1C\u00DC\x07-\x1C\u0086\u0092\u00AAF1.\x18\u00CD\u00DBY\x05Y}\u00D2\u00A2Cq\u00F81\u0087\u00DE\u00BA\u00EF}\u00FB\u009F\u0089\u0093\x18'\u00C4C8\u00DE\u00F8Gk\x17\u00BE\u00F4\u00BE\u00CB\u00B5E\u00AE\u009E\u00E3\u0082\u00DA\u00DC\u00F5\u00AF\u0099\u0082P\x06\u00B9P\u00EA\u00DF\u00DC\u0087\u00D1\u00D8\u008DT\x06S%P\u008E\u00C9\u00C53\u00F8\x10'\x0F\x14\u00A1\u00A9\u00834T\u00E3\u00C2\u00F2\u00BD\u00D22N4\u00BA+\x17\x02I\u00DD\u00CC\x0FIK\x00\u00F2\u009E' Vz\x17S\x1C\u0081q \u00B0\u00E8\u008A\u00EDn\u00F5\r\u00CBnU\u008D\x0B5\u008EYt4\u00F2Sv\u00D5\u00B85\u00B6u\u00CF\u00D2h.\u00F6Z\u00F2\u00EF\u00AC'\x00\u00B9\n\u00AC3\x00\u00D8M\u00A9\u00E6\u00F5\u00AD{\u0091:\x7F@\u00A3\u00CEbY\u00AE\u0081\u00CF\u0084\x19\u00CA\u00B1\x1CgT\u00A0\u00C3R\u00CD\u00C6\u00AB\x11_\t\u00C0+(\x15\u00D3\u009F>\u00BD\u0087z\u00AF\u00BC\u00CE\u00E8\x1EU\x7F\u00C6\u00E9\u00F7<V\u00E5I\u00F0\u00F9\u00F5\u00E3\u009D+\u00EA/4\u00CE]\u00AF\u00A9\u00FE\u009Ep\x14\u00FA\u00CA\u00F5i\nu\u00E0\x06uN\u00B9A\u00E0\n\u00D9\u00F5\u00DE#4\u00AD\u00FBW\u00A3\u00B5b`\u00C0PZs\u00FE\x00\u00F5xv\u0096\u00ED\x03\u008B\u00C5\u00C67o\u00BC\u00F4$D\x19\u0094\u00B4\u0093\x1A\u00CF\x1Ev]\u00F9\u00D4q\u00EFk7\x16\u00D6\u009AL\u009Ada\u0091\n\u00A6e\u00CB\u00ECe \u00F9\u00FF\u00F2S3\u00DE6\u00DC\u008B\b\u00CC`JY&\x01\u00A8>\u00ECI\u0098@+0\u0099\u0090\u009E\u009ErA\x11>tz\x14\x14\u00F8\u00D1[\u008AGx\u0080p\x1Dc\u0081\u0095\u00A2\u00E9'/\x18\u0098Z\x06?\u008FY'\u00EFu\u00A8\u0082E\u00B7~\t#\n\u00C1\u0087\u0093\u0096\n\u00CA\u00BD\u0094\u00DA+1\n\u0086z\u00AE\u0094\\\u00E3L+\f\u0092\u0089\u00B0\u0090t\x13-\u00E1W~\u0082\u00E8\u00A4t\u00EB\u00CD\u0085\u00ED\u00FEy\u00F6&pr\u00CE\u0098\u0082be\u00D8\be\u00ECd;?&\tS\u0095p\u0084\x00=\u00B34\u00DA\x15\u009Bf\u008F\u0088\u00C9J\u00D5\x14\u00FA\u009E\x02?!v\x01HR\u0090N\u00AF\u00ADk(\u00CFT\x06\u009A\u008A\u0096\u00C2>\x02\x18]\u00D1)&\n\u00A1\u00D7s\u00B9qQ\u00E5\u00CA\x14\u00F9\u00EE9\u00C7\"\u00E4\\\t{\x10j\u00C24\u00CBj\u00B3\x15\x14\x0F\u00B3*\u008C8\x07\u0087\u0094\x10B\x04\u00CBG._\u00BB\u00FE\u009Fv]y\"\u00B2{\u00BCq\u00D2!\x03\x00|Hu\u00DF\u00BF\u00D8\u00FA\u00EC\u0095\u00EF__^h\x12C:3\u008B\u008E\u008A\u00DEQS\x1C\x13&!\u009B\u0099\u00CA\u00AA~\u00E2\u00A2+\u00A9 \u00C8\x17G\b5L`+\u00D0B\u00CE\u0080\u00A7\u00C7\u00A6\u00F1\u00B3_\u009F\x0B9\x00LR\u008AT\x12\u00AE(\u00A84\u00E2<NJQ`\u0092\x1A\u0092z\x0E\u0086\x1D\u00D5\u009DT\u00EE\u008F\u0088o\x07\u00ED\u00D8\u00A7\rg+\u00B0\u00BB\u009B\u00DB\u00BB\u00A6FL2r\u0092Ze\u00BB\u0083\u008C\x02\u00A35\u00B7Q\u0093\u00CA\u00ACL\u00A1I(@*\u00A8A\u00E1\u00EE\u00AFZ\b\x00\u00C7\t\u00E85\u0095<y\x0BE\u0098\u008A\u00ABy\u00F8@\u0095-\u00F0\u00B0\x04\u00A6\u00BEg0\x07P\u00B4\u00D0\u00AA\u00D5B[\u00BA\u00EC\u00E6\u00C2\u00DB\u00C2,\x06N\u0096\x18^\x13\u00C4\u008A\u00B2\u00EF\u00CE7.Q\u00CF@ u\u00F57\x14\u00C1\x15\u0098\u00D1\x00\u00F0\u00D8\x05Le(E\u00F7?0\x1A\u00C0(\u00DB*\x18\u00C6\fC\u00E0\u00F7He_\u00C3\u0096\u00D6\u0093\u00E2M\u00CC%:a\u008F\u0089A\u0098\u00C6*\x1Eg7U\u0080Q \u00DD\u00975\u00E8bD'*\u00FE\x12\u008E\u00847\u00CB\u00FD\u00F9\u009Bb\u00C49\x0F\u00E0\u00E8}\x0E_\u00B7\u00FB\u00A7v_\"\u0097\r\x07\u008F+\u00A0'0N\u00DAC\x00\u0080G\u0089\x1C|z;\u00FBe\u00FB\u0096|\t9\u0085\x12?p\u0090P\u00ACDzZ\u00BA,\u00DE\u00BB\u0080\u00A3x\x01!\u00FC\u00CD\x18\u008A<\u009E?d{!R\u00C2\x02{\u0088\u008D\u0093\u0080Z;\b!\u0080\u00E5\u00E9\u008F\u00E3\u00DA\u00F7\u009Cp\u00D5\u00F2s\x02\u00B4\u00E8e\u0097aH\x02\u0080~\u00E5.d,&\u00AAu\u00FCV7!\u00A1\u00FC\u0097*\u00D8T\x0B\x03v\u00BA\u00FD^\u00AA7[U\u0096\x1C\x0B\u0096]\u00AD5\u00FB\u00E8n\u00B3\u00B2\x11*i\u00C1i\u00D1\u00AA+l\u00EE\u00BD\u00AFD\rZ\u00C5\\@%\u00D6R\x1Ck\u00B92\u00BC)\u00AAL\u00AD\u00A3{\x11<\u0087*\u00DD\u00FD\u00F4X\u0096\f3\u00E8Eh^\x0B\u008F\u00BBpO\u00C7<0\u00C5rDt\u0093\u008A\u00B5\x1B\u00FD\u009A\u0096\u009D\u00E1TV\u008AF\u00EB\u00FA\u00D1\x1B\u00C3\u008E\x1A%\u00DA\u00CB\u00DE1\u00F6\x11}\u00EC\x16V@'tk^\u00EF\u0092\u00D7L\u00CF\u00C8\u00BF[\u00F2\u009E\u00B0\x12\u00D2\u00C0\u00BD\x0E\u00D5\u00A0k/\u00E1+Oi\u00E9\u00FE\u00A4\u00D5S,\u00B1~\u00CC\u00A7t\u00FDWC\u0086jT2T\u00C0\u00B1\u00A1\b\u0095\u0085{:\u008B\u00D9\x02\u00CB'\u00F6\u0097\u009D\ne@\u00C9;%\u00E3FUy\u00E1\u00E65\u00EF\u00FC\u00DD\u00F5\u00EDK;\u00BCu\u00D3J\u0083\x12\u00B7q\u00A8\u00C2^C\x04\u0083M\u00ECs\u009D\u0084\x0E\u008E\x15\u00F8\u00FF\x02\u0094\u00D1\u00D4\u00AE\u00F9\u00B0\u00FCyF\ff\u00BF\u0089\u00FEWaO\u00B7\u0098\x1A\x17H '\u0081\u00C3\u00E9q\u00CA\u00B1\x1D\u0081\u008E\u0090\u00A5W\u00AF\x00\u0088\u0082\u0096\u00F2\u00B2\u00FB\x04\u00F5W\u00CC;\f\\\u00EC\u0096\u0082\\S{Bk\u00DD\x00\u00C49L\u00B9\u00CC\x14\u0098\u00B9\x15\x0B\u00F2O'\u00F8\u0095)8\x16.\rE1\u0091hD\u008F!\u00AC\u009E\u0093~\u00C8\u00AB\u009F\x14;u?\x16\u0098J\u00B4{\u00ADA\x1ES\u0089\r~\x1D\x0E\u00D4\u00F2\x1A-\u00EF\u00EF\u00C0\u00A4\u00A7kE\u00C5\u0080H\x07k\u009B+\u00CC$Z\u00B99\u00F0l\u008B\u00C4\u00FD\x12\u00A8,\u00DBQ\u00A9\u00C7\u00B6Z\u008A\u009D\u00DC\u00A1\x1E\u008D\x02^{\x1D4\u0094\u00F3\u00D4\u00E7\u0081L\u00DBFS\u0099\u00EE\u00E7.\u00DB\x13\x0F2\x0FF\u00D33\u00E9E\u00E8;J\u00E1\x12&\u0085N\u00D5\u00E2OR\u008D\u0095\u00AE\\\u008F\u00E5\u0099\u0099\u009C\u0084\u0082\u00EE\u00FF6\x1Fy\u00F4]{~\x7F\u00EF\u00DF\u0097\x0Bo}f\u00A1\u008E[\u009Dv\\\x1D\u00E7\u0089\u00E8ol\x1Dy\u00F1\x15\u008B\x1B\u00FF\u00E2\x13k\u00C3:S\u0088\u00B6\u00B0ju\u00FB\x07\x00\u0080h.#\u00AF0\u00D5@g\u00D1\u00A7\u008AoO\x1C\u00A2\n:\u0085\u008E\x05E\u00F9P\u00D9\u0094\u00B4\u0096\u009BN\u00E20\u0086\x07\u00FER\x02W`\x16\u0081\u00AC\u00C3\u00AE\u0088\u00BAz\u0086'\u00AA\u00EE\x06Z\u00B6\u0081<\u0086\x04+5\u00D1`\u009F\u00AC$\u0093\u00992\x00\u00A6\u00EE\u009F`\x1C\x15G\x15X\u00EB\x14\u009C\u00A4\u00DB\u0092\u009CC\x04\u009A\u00CDE+\u00C9\u0088\x1D\u0098\u0082\u00F8\x12\x13S\x03l\x1D\u00CB\u00F7\u00CD\u00D3f\u00DA\u0081\u00A6\rc'o?\u008F\u00CB\u00A0|B\u00BD\u00F5\u00A0\u00D5h\u00C8\u00F9\\\x05VF\u00DD\u00BA\u00BD*\u0092\u0092\u00C2\u00EAy\u0098\x12\n\u009D\u008F\u00D6\u00FF\u00DF\u0095\u00E9L\x04-\u00BB\u00BE\u00E6\u00A8u\u00F00mB\u00C2\u00F2\u00FB\r\u00BAs\u0080\u00A8\x19\x12\u00A47h;\r\u00DE\x7F\u0093\u00D7\u00CC\u0095\u00A78?\u009A\x1B\u0081\u00BC\x07z\u00BD|\u0087I\u00B5S\u009FO\u009C\u0083q\x1C\u00DE;\u00FF^\u00F1\x0624-\u00C6\u00C1o\u0098i\u00E1\u00C8Z\u00F9|V\u0097\u00F7 G\t\u00B0\u00D8?n\u008F\u00DF,/>U\u00CA\x008E!\x03\u00C7s6\u00CE\u00BA\u00E2Y\u00D8\u00FBc\x1BK\x00\u008C\u0093\u00A4\u00F6_\u00B40\u00A2a@\u0093\u00A1\u0084\t\u0099u\u0098b\x06\u00E9a0\u00BE\u0095N\u00A2IZ\u00B5\u00DA\u00BB\u00A0E\u00A6#'9=\x01\u00EE\u0093\x15\u008D^f\u00EA\u00FB\u00D3\u00D2X|\u00D8\u00C0.:A&\x19\x052r-\u0086V\u00E2K\u0099Z\u00A5n\u0084\x17\u00B3\u00C6\x0E\u00A8\u00D1\u00B2\u00F07\u00EC\u00DA\x15\u0082-(\u00B6\u0094\x19\x07kz\u00BADv?\u00A2\x0B;]\u00E6\x1D\u0093,\x00\x01?\x02rK\u00B5\u0086\u00A9\x0B\u0094\u00EDK(\u00A0\u00B1\u009F$J\u00EF\u00F7\u00C9NL\x04\u00F9\u00CC\u00CDv\u00D7\x1D\u00D6\u00CBa\x02\u00DA\u00B9\x10N\u00D7\u009C\u00C8\u00AAN.\u00C2R\u00AF\u0093\u008CG-?]5\u00DC\u00FC\u00E8\u0084\u00E4 \u00AB}\u00EE l\x00\u00AA\x1Aa\u0084e!,|X\u00F6\x1E\u008DX\u00A7\u009D\u00A6\u00B2'\u00E5\u00B2#\u00C0\u00CC\u009A\u00E5\u00B0\u00BF\u00F3\u00D8\u00B9N&\u00AF7\u00DF\u00A7u\u00D4f\x18\"Xj\u0086Y\x15\u00E8\u00A6\u00FD\x02\x10^J0h\x1DxL%\u00E2Y3\x0F\x19\u00B8\u0092Y\u00E0\f~\u00E0\u008E\x11;\u008F\u00DE\u00FA\u00B1\u00FD?\u00BA\u00F7\u008AS$\u00BE6'O\u00E5\u00C1\x00\u00E0\u00AFT\u00E7/\u00D9\u00BE\u00E9\u00FD\u00EF\u009C/\x1E9\n[\u00B4W6\u00E1qx\x04\u00A5\x1E\u00C1:\u00EFL\u00AD;5ih~j\u00D4\x0Et\u00A4\u00A6\u00D5\x00\u00FDP,T\u00D9\u00DE\x7F\u00F7\u0089\x16w\u008D\x1CV\u00D4\u00DF\x1E\u00E9\u00B1(\u00C7u\u00E5a\u0096\u00CD&G\u00E4\u00AF\u00FD\u00FA\u008C\u0080\u00A38\u00A6\u00F6\u00C1'\u00C9j\u00ECh\x16@\u00B1\u00A1\u0082}#\u00B0\u00A1\u0082\r\u00F5>\t\u00DD~7\u00B5pa\u00EE\u00AE\u00EC\u008C.\u00AA[\u00C9\u00F9\u00D2\u009FfO\u00E0\u008B!\u0083\u00A8s\u00F2\u00B9\u00BD\u00BB\u00B2\u00D5\u00CB\u00A0G\x01\x15\fK\u008D\u00EB\u0095\u00B1\u00D4\x0F !\u00DE\x01F\u00B9f\u009F\x06\u0081_\x1B$\u00F8\x06\u00AB\u00F5\x0B\u00B6\x1F\u00C2Z[\x1F\u00C9\fI\u0092\u00DA\u00EC3B\x11\u00E7&\u00DD\x19J\u009EC\u0086\r\u0080fX\u00C1\u00D0G\u0093[ \u009D\u00E0\u00A6i.\u00D6J@\x05k\u00ACr\u00EDy\u00CD\u00E4.0\x1Ce\u00BDC\u00E5j\u00B4\u008Aa\u00F1\u0099\u00FB\u00F3\x1C\u00C8\u00ED\u00E0\u00F5\u00F5\u00E2u\u00A9=\u00D3I\u00DDC\u0084\x12\u00F6\u00BD\u008E9\u00DF'\u009E-\x10\u00F3\x11\u00D2\u00B1y\u00C9\u0091\x0F\u00EF\u00FE\u00CF{\x1E'\u00DF,\u008B\u00BFM\x1EOt\u009C\u00B2\u0090\u0081\u00E3\u00C1\"\u008B\u00FF\u00B2s\u00F4\u00F9W.\x0F\u00BE\u00F7\u00AA9\u00E6!\u00F8\u008A\u00B2b\u0092\u00BB\x7F@\u00FC_\u00948B*\u008Ax\x00\u00F1\u00920\x11\u00EC\x10*d,\t\u008F5k\x05c\u00C5\x02&\u00DDp\u00F8\x12\"\x04IA\x0E\"\x13?sO T\u00952\u008C\u0098^\x13\u00DB{GM<\u00EC\u00DC\u00E1\u00A9\u00F8i\u0098\u00BD\x10\u00FF~\u0084Yu\u0082T\u0083\u00DAa\u0097\x14\u00E2\u009ETa\u008C\u00D3x\u009Bno^O\u00D2\u0099\x19\u00AAD\x15`\u00B9\u00D6\u00DAX$Z\u0096\u00F1Z{y\u00FE\u00AA\x1E\x1AH\u0084\x04\u0093\u00D0\x05\u00D99it\u00E5A\u00A4^a\x169\\\u00D1nX\u00C3\u00E8\u00D7\x16\u00F5\x05\u00BE\x7F,\u00CE\x02\x0F\x05\u0090\u00EF^|Nt\u0098\u00C5\u009E9[\u009FF\u0082\u008A@\u00CA\u00BB\u00E1\u00EF\u00DE\u00F33\u00DE\u00D7\x18\u00F7\u0087l\x13\u00E7.:\u00B3.\u009D\u00DFu*\u00DD\x14V>'\x1A\x18q\u00EF\u008FF\u0088\u0082\u00DFz\u00EEW\rD\u0086\x0B\x1AaB8\u00FF+\u00CA \u00E6\x0E\x14[\u00E7\x1E]\u00C8S\u00DB\u00F3O\u00B52\x00Nq\u00C8\u00C0\u00F1\u00C2\u00B5\u00DD\x1F\u00FA\u0096\u00BE\u00EB\u0095k\u009D \u00A2\u00AD\u00B7\u00D0&\u00DEA\u00F2\x0B\u00AC\u00FD\x1A`@d\n\u00AE\x1C\u00EFg\u00CC\u00BFc\x02\u00BB&\x0E\x16\x19y\u00E3\u00AE$X\x0F_\u00B5\u00BC\u00F6\u00EE8\x02\u00BFg\u0098\u0080|\x11.(\x15\u00C0\"\u00FA|<r\u0093x\u00BC\u0099EG99\u00E9\u0081D\u00BF\u00C3:1F`\x1C\x15[\u00AA\u0081\u00ACGSVE!\t\u00E9\u00D4\x15W\u00C4\x12p\u00C7\u0086\x0E\u00C5\x05F\n\u0082\x03\u00FC6\x1F\u00B9=VHP\u009D\u00C74\u00D7\u00DE\u0090~\u00C5r\u00EC\u0091\u00E9\u00C0\b\u008CK\u00B8\u00EB\u00CF\u0090C3\x1Cpa:\u00F6\u0087\u00CDUK8R\u00CE_\u00FF\u00D6\bA\u009CX5\u0096\u00B0\u0084\u00C6\u00A0\u00FCp\t:\u0086CyO\u00AE\u00A0;\u0082W\u00C1%\u00E1j\x16\u0084Y\x18.\u00CB\u00C6F\u00B0I\u00C6\u00B2\u00D0e\x1Ar\u00E51T\u00F3\u00BE\u00EB\u00B3\x185\u00C3\x12\u00BE\x07\u00E5\x01\x148^F\u0082#\u008C\x15L\x19\u008C\u00B2\u00C0\u00D1\u00C7\x1Cz\u00E5\u00EE\u009F;\u00FB\u00CB\u00EE\u0093x\"\u00E3\u0094\u0087\f\x1C\x1FS\u009D\u00BDt\u00EB\u0096w\u00BF}\u00AD=A\u00A5Y\u00BE\x1A4\u00BC\u00B5\u00A3\x11\u0087c\u00D4\u009A\u00B9\u00DC\u00E8\x17Y\u00B4i\u00F0\u00CF\u00FDAR\u00E3\u00D6\u009A\x04`\u00DA\u00BB +\u00CD\x00\u00C0;\u00DE\u00B8\u00E57\u00FE:{\x05\x00\u00D1\u00F7\u00A0x\x0Bm\u00B2?\u00D2DN\u00BC\x04f)r\x7F\u00D5\u00A95\u00A1\u0092c\u0098\u00A0Tf<?\x04\u00FB:\u008C\u00CA\u00EC\u00A1\u00C3z\u00F7\u00B6j\u00DD\\t\x16\u00FCX\u008B2\rD\x7F6V\x1E\u0082b\u00D6\u00B3\u008AO\u00D4B\u008E\u00D6\u00DDj\u00BA\x0B>_\u00DA\u00FDR\u00A1\u00B6\x0E\u00B4\u00A5\u0086%&\u008D\u0099\u00DC\x03\x16[\u00D1\u009D\u009F\u00A9`\u0090\u0092\u00F9@\u00F2\x02\u0086\u00F2w4x\u0081_3\u00B3\x11\u00B4\u00BA\u009A\u00D9\u0083\b\x1DT\u0093\u009E\f\u00CD,\u008A\u00B6\u00B0\u00A2k\u00A3=K\x16R!0\u00A0\u00F4\u0098\u00E2\u00FF=\u00C9a\u00E8\x02\u0095\u00CC\u00D0\u00D8sS\x10\u009C\x1E\u00BA\u0084\u00EB\x0F\x14O(\u008E\u0085r\u00ACr\u00BE\u008E\u00C825\x05\u00DA\u0092\u00F3/\u0097\u0096\u009B4\u00A8!\u0088\u00DDK\x18\u00E1\u008A\u0085\x18B\u00E5\x1Btt\x1Cy\u00C8\u00E1\u00F7\u00EE\u00F9\u00A5\u00BDO\u0092\u00AF\u0095\u00E5\t\u0088\u00E3\u0097=Ny\u00C8\u00C0\u00F1P\u0091\u00E5\x1B\u00FA\u00E2y\u009FYn~\u00F0\u00CA\u00B9\u009E\u009D\u00CEv\u00A5*#?#xR\u0084\x7F\"\u00EC>y\u00BA:\u00D3\u008B\u009AT\u00B2\x12\u00CE\u00F6\u00F1\u00E3\u00D6*\u00B4\x0E\u0098\u0092\u00D0xA\x14\u00C2\u00EE\u00BF\x03\x04*iC\u00BAp\u0091)p\x173\u00B2\x18n\r\u00A8\fX\u008D\x06\u0094}9\u00C9c;qE\u00E3\u00E7u\u009FX}\u00E2o\u00BA\u00E0\x0Fn\u0099\x07\x17\u00D8@\u00C4{*(\u00F1,\b\u0095^\u0084\t]\u0082\u00DA\x1B\n\u00B1kL\u00DAT\u00AEN\u00CEr\u00E5A\x0B\x16\u009F\u00F93\u00ECJw\u00D5\u00AC\u00B0\x02V\u00B8\u00EA\u00F7\u00DCk\x00\u00D83t\b\f\x07)\u00F8\u00D1\u0097B\\A!\u0089`\u0082L5*\u00A4\u0084,F\u0081\u00B6\x10\u00C2\u00F1\x1Ca\u00F6$[\u00A13\x05\u00D8\u00E9\u00F9i\u00A58O\u00E7\t\u00C3\x01zk\u00DC\u00C7\x04\u00DD\u00F8\x06@n\u00CBP\u0086\u00EB<D\u00F8\u00EA\u00CF\u00BD\u00C7v\u0099\u0091\u00EA\u00E1\x1D\u0092\u0091\u00C8\u00FBp/\u00C4\u00B1\x14z\u008D\u009D\u00CFbr\u009D\u00AE,\x04\u00D8\u00BC`\u00E7p\u00FB\u00B6\u00D9\u00F3n+e\x00\u00DCF!\x03\u00C7\u00F3\u00DA\u00FC\u0093\u00FFP\u00DBw\u00EF]v\u00A86t\u00E7 d\u00C5\u00A2)\x07f\x00\b\u00BCU\u00D2\u0091\u00BDD\u00CD\x17\u00A0\x12\x02\r\u00D0\r/\u00F1\u00BA\x02Q@\u00E2\u009E@-@\u00AA\u00AE\u00BA\u00F6\x16\x02$t\u00F5\u00FD\u00A7\u00E6\u00E4\x03{\u0088\u00FD`\u00EB\x10\x04XG7S\u00F2\u00FA\u0098\u00B9(\u00FB\u00D52\u00EC\u00F0S\u00C1\u00FB\x15`\x14\u00EC\u00A8`\u00A7{\u00D8\u00E0!DE\u00C6\x17=\u00DD\u00EF$\x05\u00C1;9\u00BBP\u00BB\u00EBonrG\u00AC\x7F\u00D03\u00E41\u0097:q\u0096\u008Et\u008F{\u00D9\u0096n\u00EF\u00B2\u00AB\u00AD)\u00E1J\u00C3B\x17\u008D\u00CCE\u00D4\x1Dhn\u00C3\u00DB\f\u00C5\u00A1\u00B9\r3\b\u00B9\u008C\u009CN~/\u00BBb\u00A1\x1A\u0099\u0083\\\r;\u00D7\u00A5X\u00D6c)\u008E\u00C9\u0098L\u00B2\x03\f\u0085\u00F8\u00CC\u00EA\u00F5\u00F6\u00BCft\t\"W\r)\u00F8\x7F\x1A\u0081\u00B1\u00DCk\u00BE\u008FZ\u008B\"\u00E55K\t\x192\x1C\u0089\u00F7\u00E1\u00D3 C\u00CCcA\u00C5\u00ED\u00F5m\u00E0\u00EF-\u00BE\u00FB\u00EC\x1F>\u00EB\u0093\u00A7L@\u008F3n\u00B3\u0090\u00A1\u008E\u00E7\u00EE\x1C~\u00C3o\r\u00F2\x1D\x0BY\x07 \x13\u008A@\u00E4\u00A7)<@\u00B8O\u00B5\u00F5y\x05\x05iU\u00A8\u00E5\u00CD\x05v\u00F7\u00BF\u00A2\u00B6.p\u00E6v\u00B5\u00CCR\u00C4\x04(\x00\u00A2z>\u009CV\u00A9\u00E7\u00DFD\u00E0#\u00DB\u00E0\u0096(\x1A\u009A\x14\u00AB\x1B\u00C0\x10\x15\u0089j\u00B8\u00B3\u00DA}\u00A5g\u00B0\\\u009Ai,\u00C0L\u009EY\u00B15U\u009C=\x02\x1B\n\u00EB\u00AA\u00D4\u00D3\u00BD\u009DuC\u00F4\x07\x18]\u00D9:+%uwp\x0F\u00A3uX\x7FD\u00BA\u00C1c>\u00C7\u00EC`\u00ACAUV\u009F\u00D9m\x14\f\u008E\u00A5p-D\u00D1\u00CC,\u00CC\x15IM\u0086F\x06\u0082\u00FD\x14\u008D\u00ACna\u00C1\u008C\u00E7\u0081\u00B9\u00E4\u00E1\u00C2{\x16imi/7\u00C3\x04\u00C1L\u00D3\u00927d\u0086 i\u00C2\x12\f\u00D4\x19\u00AD(\x18\u008E\u00AC\x10\u008B:\u00C3\u0081\u00E9\u00F9\u00E9\u00C50\u00A5<\u00F4\u009CO\u00B1\u0096Ex\\\u00C9\u00E7\x10d\x17%\u0086\u00B4\u00ADO)\u00CF|\x07@\u0086\x12\u00B5B2B\u00B7\u009E-\u00F3\u00F8\u008Cj\u0088R\u00A9\u00CB\u00A3(\x0E\x7F\u00ED\u00E17\u009E\u00F3\u00EE\u00BD\u00CF;!\u00C1\u00BB\x15\u00E36\x0B\x19\u00EA\u00F8W\u00F3\u00B3^\u00FC\u00D9\u00A3G\x1E\u00FB\u009E\u00F5\u00FE \x1Df\u00E1~\u00CAD \u00FD\x01\x14\u0081\u008A%\u00D1\u00FDe\u00A8\u00C9}\u0080v\u00DD_\u00BC\u00C2\u00E22z\x17&l\x1D\x19&4\x10\u00F5\u00B6\u00EF\u008B;\u00C8\u00F3\x15mL\u00AB\u0096D\u0093\u0095\u00EB\u00F4c\u00F0\u00DA\x18J\u00A4G\u00A0yl^\x7F\u00B7\u00C9l\nM\u008A\u00D2h\x06r\u0096s,\x14\u00D8D\u00C7L\x1B\u0096\u009C\u0098>\u0081:\u00CC\u00FAL\x14O\u00F9;p\nZ\x1E\u008F_\u00B53\u00BE6\u00EB\u00D8 \u00C17\u00E8\u00BCV\u00FE\u00BF\x1C\u0087\u00E4,q%\u00BC\x14\u00AF\u00C3\x00B0\u00FDQ\x068I\u00AF\u008EY\u0099\x16\u008A\x02\t\u00AA\u00C1\u00EEk\u00E6\x19'\u00C0\u00DE\u00E7RS\u00F0\u00C5-.\u00DB\u00A5Y\u00C8 \x11>VRQ5\x0E\x04\x7F\u00C5\u00CF\u00A3\u00FE\u00BE\x18\u00C2\u0091u)\u009D\u00DEN*\u0081t\u00D5\u00B3n\u0085\u0099\u0086\u00C8\u00C8h\u00F1|4\u0085\u009D^%\u00C3\x07Z\u00FFZc\u00D1\x03[r\x03\x03\u00F8j\u00E0\x00$C&\u009B\u00E8@oKl\u00DE\x7F\u00F3\u008A}\u00FFr\u00CF\u008B\u00F1\u00EE[#}'6n\x17\u0085\u00F0u\"\u0087\x7Fe\u00B1s\u00D9\u00F5\u00CB\u00F1\u00CF\u00FEZfg\u008D\u00E4\x19\u00C4\x0BP\u00B0\u00F5\u0098\x14\u00CD\u00C8\u0087\x1E3\u00A6hb0\u0096\u00F4\u0097\x17}\b\b\u00EE\u0085\u00DB\u00E5\x0F\u009F/'\x00I\u00A4\u00A7@\u0081\x02\u0092J\x1A\u00E7\u00D7\x10\n\u00F8$\u0099\u0080\u008BeB&\b\u0084\u00D8?\u00D9\x7F~\x1BJ\u00EFG\u00E2>\u00AA\u00A2\u00A1\x17\u00B4\u00A3\u0082-L\u00EB\u00FE[U\x1C\u00DA]\u00C1(\u00E0\u008D9\x06\u00BF\u009F\u00A5\u00D2\u009B\u0090P6\u00E1\u00C6\x17w\u0094q,\u00C3%\u0082\u00AA|\u008E=\u00C22o\u0094\u0082d\u00E9Q \x15\t\x1A\u00F2s\n.i\u00C2\u00E6r'\u00AD\u0099\x19\u0082\u00DE\u0081\u00D11\u00A0\u008A\x1B\u0090?\x10\u0082\u0085\x14n\nce\x05N\x18\u0081\u00E4\u0086\u00F0\u00F9#\u00BDB\n}\x02\u00C79\x07\u00EA1L\u00A1I\u0080\u00B044\u00AD\\;\u0085\u009Fn\x7F\u00E0AZK\u00E0\u00D3\u009B\u0088g\u00DE\u0099X\u00D7\u00C8@\u0091UY\u00E7\u00BB\u00DD\u00ABb\u00FB\u00DC\u00C5\u0091\u00E5S\x16\u0097\u00C9s\u00E5\u00F0\u00DF,a\u00A7n\u00DC.!\x03\u00C7\x0Fnm?\u00E7u\u00D2\x7F\u00FD\u00C6\u00F9FX\u00B5\u00C0\f\\\u00F8d\u00B4K\u009A(\u0083\u00D5\x1F`j\x195_\\Xh\x07\x07M\u00D8[\x1E\x0FSl\x00e\x7F\u0081B\u00DDm\u00A7\u00F5\bBIy\u00A1q}\u00E58i\u00A1\u008BBb&\u00A2O\u00CF3Qvq\x1F\u00EA\x12F\x0Bh\u00C4\u0099\u00B3\x15\u00D8\u00A5\u008A\u008D\u00D1\u009B\u00AC\u00AA-\f;S\u0089\u00D0 \u00C2\u00841\u00D1\u00FA\u00E6U\u008E\u008D\u00D5t>\u00F9\x06'1\x11\u009C\u00D4n\u00A1E\x00\u008C\u00DA\u00CC\u009A\u0095n@<\u00AE\u00887\u0080\u00D5\u00CC:\b\u009C(\x05\u00ADkrg}\x054\u00DB\u00B1\u00FBs\u008A\u0090E\u0081Ah\u00B1\x11\u00A1C\u00A0\u00FFE\u00A0'\u00D5\u008E\u00E5\u00F8\u00F1\u00B9\u0083y<6\u00CA\u00FE\f%\u00F8^\u00E9\u00FD\u00CDz\u00BE\x076\u009A\u0099Tb\u008Ei,\u009A{}\fE\x18:@\u00E9=tW\x12-\u00CE3x\u0096LF\u0086oTh\x06(G\u0095\u00AAf\u00D8C\x1EK\u0083b\u00B9k\u0081\u009D\u00A7\x1F}\u00EE\u00BE\u00DF<\u00F77n\u00BD\u00D4\u009D\u00D8\u00B8]\x15\x02\x00<\x7F\u00FB\u00C8\u00CF\u00FE:\u00D6\u00BEw\u00C4,d\u0086\x16i\u00E2~\x13\u00A1\x05Bp&\u00CB\u0083\x15aLP\x06\u0091t'\u00BAkB\u00DC\u008A@j\u00E0\x11t\x0B\u00AD-\u0098\u009F\u00D3\u0089\u00FA6\x11<\u00EE\x0F\r\u00EE\u00A9BZ\u0098\u00E3\b|]\u00E3\u0081\x16\u00825\u00FF\u00C7x:\x1E\u009F*\u0089\x02\x1DY2\u00EB\x13\u00DE\u00D6oP[\u00C3A\u00815\u00C7\x00\u00E6H\u00C1\x1F\u00D4\u00D2r\u00C3\b\u00B0\x0BsS\u00EF\u00BAT\u0094&\u00D4R\u008D\u0099\u00A5\u00F0\u00F3,M!\u00D4\u00C5C\u0086\u0091\x1E\u0083F\u00B8bBo1|\u0093d\x1E\u00CE\u00BA\u00E1\n\r\u00885\x17\x06%k1k4\x04H\\\u0081\u00CA\x01S\u00C1W\u00E4\u00CAUA`\u00D7\u00F4\b\u00A2;SG4\u00A6\u00AD\x05R\u00A1H4\u0085\u00BBi.e\x17)Cn\u00E7\u00F3mV\u00B8+\u00C1:,\u00EFp\u00D2]\u00C9\u009F\u00B5\"=\x05\u00D1\x1E\u00CF\u009E\u00F8R%\u0083\u00D5\u00B4%\rY\u00AClU\u0094W\u00CC\u00F96b\u00F3\u00D2\u00A3\u00AF\u00DA\u00FFG{\u00FF\u00DD\t\t\u00D8I\u008E\u00DB%d\u00A8\u00E3%k\u00BB_v\u00DD\u00D1\u00AD\u0087\u00BD}\u00C07J\u00B7\u00D3'\x1BP\x01\u00C6\u00D7!p\u0098\u00B8\u0086\x15\u00B5N\u00E5\x01D6!\x18a\u00C7\u00D2\u0098\u00A3\x1E=\u008E\u00EFB^\u00D2C\u00D9\tI\u00D3\u00F2\u00C3<\x03U\u0098\u00C0\n\u00DD\u00C5\u008C\u00FB'\u00E9\u00A5r\u008DUq\u00F0\u00B0qo\u00DC?\u00E8\u00AA\\\u00C6\u00DB\u008E?*\u00B0\u00A5\u00E6-4\u00A4\x0B-=Kn-\u00A4\x10g\u00C9\u00E9\x04\u008Cb\u00E8P'!3\x05\u00E1\u00CAr\u00E1\x11\u00AF\u00924\u00CCAb\u00DD\u00C4\u00C0\x12\u00EC\u00AA\x02=wq0\u00D7\u00B6\u00E7k`\u00EB{\x03N1q\u00DF\u009B8k\u00D1\u00DFE\u008D\u00FF\x13W\x02\x14\x12\u00E4\u00A9\u00DA\u00E0&R\u00BB\f\u00954\u00D7\u0086\u00ACJ/\x04]3L\u00E0\x1C\u00C1X\u00D6\u008EPs\u00F7!EI\u00F2Zy\u00FF\u00FE\u009B\u0085i\u008A\u00A2\u00DC\u008B\u00B0\x0F\u00DA\u00B28\u00AB\\3\x15}4\u0084\u00F5w\u00D3\u00D4l\x17\u00D9\u0098\x13\u0082\u00BF(\u00B6\x1F\u00BE\u00F3\u008Es^\u00B5\u00E7ex\u00C4\u00DF)R\u00A7t\u00DC\u00EE\n\u00E1Q\"\u00E3\u00DBT\u009F}\u00F3\u00E1\u00CD\u00FF\u00FB\u0081\u00D6.\x01$\x1E\x12 \u00FE\u00F0s\u00A5\u0087hP\u00C2\x17\u00EFnX\u00C4\u00DD\x10D\x1FEmeR\u00C81\x02\x1A\u00AC\u00C1\u00F0,\u00F2\u00E50\u00A5\u00A9\u00F5E\u00FB66\u00D15C\x04\u009E\u00DA5<\u00CA\u00FE\u00D3x\u00B6\u00A4<y\u00FD\x1EVT:sN\u009E\x04\u00BAx\x1D\u008B\u00B1cP\u00C1\\\r\x0FX\u00F85\u00AF\u00F1\u00FE+8V\u00EE1Ro\u009A\u00CDGxL\u00F2\nH\u00A9%\u00B8%\u00CE\u00D8\u00E4\u00C4fZ\u008D(x\u008F\u00DF\u00EA\u009C\x01\u0085\u008A\u00E3\x0B\u00DA-\u00CF\u00E3\n,dA\u00DD\x13So\u00E7\u00EE\u00CF\u00A6Y\u0080\x16B\u00AF\u00AE\x11\u00D8<\u0095\u00D9\x19>\x0B\u0086\n\u00CB\u009Ea\u0081\u00A5\x05{\u009C\u0093\u0095\u00A2y\u00BF%\u00C3\u00E3/\u008D^\b\u00A7E\u00BC\u00BF\u00FA\x1E\u00FC\u00DE\u00C7\u00E2\u00E1q\x15(f\u00B4\u0080\u00F4`b>h\u00C1\x18\x14\u00A1\u009C[7\u00E6\u00A7\u0091\u00E0\u00FC\x19z\u00A6F\u00CBo\x00\u00E8}\u00C4\u00E2+\x0F_\u00B9\u00EFE\u00BB\u009F-\u008F\u00B8u\u00AD\u00D4Of\u00DC\u00EE\n\x01\x00\u009E&r\u00F3\u00AB\x17\u00DB\u00CF8tt\u00FB\u00CF>\u00D66\x0E\u00F0%\u0085\u00E0\u00A2Z\u00F6\u00D2\u0085\u0086\x13$\u00B6\u00D5\u00B0\u00C4\u00B4x\u00B5 )\u00ADr\x11\u00C0\x12f\u00C4q'\x1A_CYh9G\u0086\x19+\u00D6\u00C8\x15\x05_\u00F6$\x05\x19\u00D7\u00AFay\u00C8w\u00AF\x13PBy \t4\x11\x12\t\u0096\u00A3b\u00E1\x13)]\u00DE\u00AC\u00C3\u00E7\u00FA\x0B\u00A1\u00D8\u00FA\u00D4%>\u00E6\x1E\u00A9\u0098\u00A2\x17\u0080\x04:\x1F\x18\u0088\x13\u0093\b4Z\u008D\u0082#\u00EE*\u00DE\u00EC\u00C7\u0098\u008A\u00BD\x03\u00A1\u00F0\nV0bZ\u008A\u00DEt\u00F5=\u00DA\u00E7,~\u00A2\u00D5\u00B6\u00F7;}\u00DEI\u00FCq\u0090\u00D1\u00FF\u008E\u008CMy\u00E7\u00E4<4'-Qqg\u00EF\x0BW\u0088@d<\u0096\u009A \x1FT\x03\u0093H\x0F\u0086\x041;\u0099\u00FAs\x1F\u00E8\u0089N\u00DE\u00A9\u00960\u00C1\u008D\x12\x14u\u00DE\u00F1\u00B8\u00EE\u00A0\u00D8\u00B9\u00A4cy\u00AF\u00AD\u009B\u00E4\u0099\u00B3g\f/^\u00BB\u00F9\u00C4%\u00EB\u00E4\u00C7\x1D\u00A2\x10\x00\u00E0%\u00F3\u00F5O\u00FD\u00A7\u00AD\u009Do=\u00BC\u00B9\u00FC\u00C3\u00AB\u0086\u00D9F\x15\u009E\u00AC\t\u0097I\x18\u00C0\u0087m\u0093\u008FT\u00E3d~U%\u00C1c\x01\u00B0\t\u00E1\u009A=\x15\u0086\u00BB\u00C8\x13\u00C4\u00B9f\b4\u00CEy\u00BC\u00E2$(_6{(\u00F8\u00A9\x03\u0084\u00AC\u0093D&\u00C4\u00A6\u008ADW`r\u00F2\u00D3\u00F3X]\u009B)\x04\u00B5\u00DC\u00FF\u008E\x0Bt\u00E3*K\u00CA\"\u00A8\u00E3\x1C\u0097n/\x05h\u00AC\u00CA\u0082J\u00A0\u00D6kHxC\u00D1\u00ECe4\u00C1\u00E3\u00E3\u00A5@\u00AA\"V\u00C3c\u00A8\u00C7\u00EF\u00CC\u00BF\u00CB\f\u0082\u00F8kc\u00F8Q\u00F1\u00A1d$\u00A6\x17\x12\u0082\x03D\u00E8U?\u00D7r\x1E\x14%BA\u00E5\u00FD\u00A8\x7F\u00CF\u00D0#\u00C2.Me\u00AC\u00D0\u00C8\x14X\u00EC\u00EF}%}\u00DE\r\u00AE4l.\u00E5<\x0BP\u00B1\bx\u00ADUi\u00E5\u00BD\u00B7\be\u00F3\x19\u00D9\u0083H\x0Fa{\u00EF\u00E6\u00D6\u00DAS\u0096\u00DF\u00BA\u00FF\u00E7\u00CF\u00F9\u00D4\u0097#C\u00B7\u00C5\u00B8\u00DDA\u00C5\u00D5\u00F1\u00FD\u0087\u00B6.\u00FB\u00E5\u00A5\u00BC\u00E9\u00A0\u00CCm\u009D\u00D1\u00D1\\\u00C9I\x1F\u0082x\u00F1\u009A\x02\u00DD;Zw\u00A7\u00AD\u0082|\u00A5\u0096`\u00D5\u00AA\x0B\u00DC\u009A\u0085\u00D0\u0090R\u00AA\u00A1\x1CZ)~\u00A1\u00D5;f\u00B9-N\x06W2\u00ADX%\u009D\x1C\u00FF\u00D8\u00BF'\u00BF;\u008E\u00F1(2\u00BB\u0091\u00F1\u00A8\u00AA-\u00CD\u00BE\u00A6\u00C0n\x15\u00CC\u00D5\u0097\x7F\x1B\u00B9X\u008B\u00F74\u00EC$)e1W\x05\u00C2*:.\u008A\u00E0\u00DA\u00B3i\u008A\u00A8\u0081\u0094\u00EA\u00CAbX\u00A6\u0095c91\x17ba[\\\x02\u0085\\\u00C8e\x10\u0099\u00D46\u0088f\u00BBvZ\u00E5\u0086\\\u008A\u008E\u00E0\x1AC\x02\u00DBOJ\u00A9\u00F4\nP\u00E8\u008AAx\u00DD\u00FCL\u00E9A\u00D1\u00DBI\u00F4>j\x19\u00C0X\u00BE\u0086\u008A\x1A\u0099\u008D\n(\u00D6mf|\x0F\u00DD\u00B2;Tj\u00CC\u00D8X&\u00C6\u0095\u00DF\u0098\x00&\x17\u0096\u00D5r\u008D\u00F5>\x04\u0096e\u0081*\x16g\u00ED\u00F4\u00E1\x1F,\u009E}\u00D1\u00E5{.?I\u0091:\u00A9q\u0087+\x04\x00x\u00E1\u0097\u00B6\u00BF\u00FB\u00F2e{\u00F5!\f\u00E9\t\u00C0\u0080.s\u00B3\u00BD\u00E0\u0086BJ\u00A1\u00EC\x00\u00AAu\u00F6mk'\u00A5t\u00913\u00F4\u0098\u0084\x02L\r\u00ADz%\u008AH1\u00D6\u00F4&\u00B1\u0081\x10\u00F4\u00C2YXm\u00B0\x1Ay\u00FD*\u00F4+\u00C7Ze9\u00C66=\u00F3\u00DA4Om\u00EC\u00D8\u00E8\u0082]\x00\u00D6\u00BB`}\u00CC\u0095\u00A2C!t\x16>\u00D5\u00F0\x02\u0099\u0092\x1CY\u0091\u0089\u00F81\u00A5\u0090?P@GE[d\u00A3R\u00AE\u00CD\x10\u00A4$\u0098\u00A0\u00CF\u00D0r\u00B2\u00C3W\u008Bv\u0090\u00CEX\u0089\u00DE\x10\u0096\n\u00C1\u00B7#\x0BQ\u00B4d\x1E\u00E0\x19\x12\u0094^\x04(\b\u00BF\u0094\x15\u00AE\u00B9?\u00AC\x1E\u0080\u00AC\u00C2X\x03\u0092\x1E\x0F\x18\x16\u00A5r\x10?\x16\u0095\n\u00C0\u00E7u,\u0087\u0080d.\u00BE\u00F3\x19\u008B\u00AB\u00D4\u00FB4\u0094U\u00B7\u00C9n\u00E4\u00DFdM\u0082\u00D7\x00\u00DEg^[\u0083\u00A0\u00AF\u00ED\x00\u0097\x1E}\u00C9\u00BD\u00DE\u00B6\u00FF5\u00A7B\u009ENf\u009C\x16\n\x01\x00^t\u00CB\u00E6\u008F\u00BC\u00E1\u00A8\u00FC\u00C7\x1D\u0099\x03hnm]h]\u00E3G\u00E5\x17\x1F\u00B43\u00C9\u00C2\u00E5W$\u00E8X\x05?\u00D2i\u009A\x02\x16\u00F1&\x17T\u00B1s\x19kM#\u00ED\x18 b(!)\u00D7\x04\x18\u0093\u00AD\x1C\u00D7'\u0098)\u00A6\u00964l*\x11fS\u00FC\u00D8t\u008B\u00E9E\u00E4\u00F2]~\x7F\x00\u00D8[AF[\u00EAm\u0097\n6\u00C4R\u0090\u00EBN\u0085\u00AD\u009E\x02\u00C3\x03\u00AB\u0086\u0094\u00E8\u00B3h\u00FC\x02\x13\u009A\u00A1TG\u00D2#hK$\u00FBpt\x0FA\u0081X\x17\x11\u00DE=\u00D9\u0085w\u00A6\u00E6\x11\u0090\x1A\x1C\u00A9G\u0094&&\u00C8\u00CA\u00C7\x14bL<\u0084\u00B0\u00FA\u00FC\u00BC\u00E7\u00B6L\u00F9\u00F2\u00BBJC\u00B6\u00FD\u00F3\\\u00D0\u00E9\u00F1\u00AB+?I7\u00F6\u0082\u00E8\u008F+\u00DE\x06\u0089CE\u00B0M\u00C8\u00ED\u009D5\u008F\u0093\x04l\u009E\u0092\u00FD\x17\u00E3<\u009DJ\u00C8\x19\u009E\u00C8P\u00C9\u00B2\b\x12\u00F7\u00A0\u00C3\b\u00BDt\u00F3G/~\u00C7\u00BEW\u009C\x021:\u00E9q\u0087a\b\u00AB\u00E3\u00C7\u00F7l\u00BC\u00E2\u00D0\u00CE\u00E1}o\u00DEi/YHKk\t\x14a\u00AB(~\u0092\u008D\"\u00C5\u00E4\u00FFW\u00D4\u00CF+O@\u0082\u00F1\x16e\u00BF!\u00F4\x068\x11\u0095\u00AE\u00E0cZ\u008C\u00FC\u00DC\u0080.\x05J\u0096\u0084\n\u00C2\u00BC\u0085\u00CCC\x13S\u00C8\u00D0A\u00F2:QB\u0083h\u00B2\u0099%\u00AFZ\u00D8\u0089\u00B6\x00\n\u00B0\u00ADe;\u00AFu0\u00DE\u008B\x1D18\u00FE%nm^*\u00CC~\u008A\x1D)X\u00E2iO\u00A3\u0082k2\u00F4 N\u00DE\u00E9\x01\u00C4\x01\x1E\x1B\u00FB3dzp\x1E\u008AQ!\u00AE_\u0089\u0098\x11$n\u00AE\u0088#{\x00\u00A0\u00C9\u00B4\u0084=>\u00E7\u00ABG\u0089\u00FF\u0081\u00D8\u00D6\u0096Z\u0093\u00C9<!\x01\u0096\u008B\u00C8\u008E\u00E5\u00DD\x05\u00B0\u00D8\u00ED\u0099\x1A\u00CC'\u0091\u0089`\u00DF\u00C9\u00CA\u0094\u00ED\u00A1\u0098\u00E1\u0098\x05\u0095t-\u00A5\u00F6K\u0098xZ\u00CC\u008C\x15\u00E5\u0094\u00CE\u00A6\u009F[\u00D1\u0087\x1D\u00B4'\u00ED\u00BC\u00FA>\u00AF\u00DF\u00F7\n\\\u00F4\u00E5H\u00C9m?N\x1B\u0085p\u009E\b>\u00AD\u00FA=;7n\u009D\u00F5;\u00DB\u00ED\x05#Z\bRX]\n\u00BC\u00CF\u008C\u0089;\u00DEsB1\u00EE>&\u00B3\u0080\u00F4\x1A\u0098R\u00C4X?\u0087\u0083K\u00C7Q2=\x15\r4\x17\x04\u00A9^G\u00E0\x18\u009A.y\x02\u0096\u00B9\x7F%)\u00D5\u00ED\u00ECo\x07HyM\u00BC\u00EF\x0E`4%\u00B4tr\x14\u00BB.\u008F\u008E\u00EC\t\x10\u0098K\u00F3\u0090c\u00E8Rp\r\x16\x0E\u0089O|\u0086\x04\u00F4V$B\"[\u008CE\x03\u00EB\u00B0\u0094\u00A2\u00ED\u00CF&\u00ABK8\x1E\u00E0\u00BC\u0081P\u00A6\u00C8\u00F6e$\x18(\x15\u0096\u00AA\x0B\u0097\x1Dz\x06\n^\n\x0F\u0095\x11\u0090\u00EF\u008E\u00E0!\u008Fk\u00AE\u00BD)N\u00AB\u00F0\u00B40 C1\r\u0081\x1CF\u00D8\\(\u00C7Su\u00E2TyG\u00CD\u00EB8\u00F8^\u009A\x1B\n\x05\"$\u00B1\x05]\u00EDb\u0082\u00A7\x10\u00FB\u00C3\u00B1$g\"\u00A24^u\u00D0U\x01H\x13`Xb\u00FE\u00D8\u00E5\u00AF\u00DC\u00FB\u00F5\u00FB\u00BEG.:m\x1C\u00F5\u00D3G!\x00\u00C0\u00FDD\u00F4\x13\u00AA/\u00C2\u00F5\u009B\u00B3\u00B7\u00EC\u00AC\u00FD\u00B3Q\u0087\u0089P\u00860u\u009F0\x13eP8\x07\x00&H>\u0090\u0093\u008A\u00E9\u00BD\u00C2O\u00E0\u00F7S \u00CF\u00AD\x050\u00C9\x04hy\u00C1\x14\u0094p\u00FD;\u00A2b1\u00EA\x17\u00A8m\"\u00FCI\u00A6\u00A3\u00E1\x04\u00D3\u00FB`\u00B8`\u00BB\u0099\u00B0NR\u0095]\u00C2\u009A-4\u009B\u0090p1\x17\u00E6\u00BCSY\u00B2\u00CE\u00C3\u00EEw\u00E6\u00A5\u00C49y\x19#'\u0088\u00DB=\u00AC!\u00EE\u00C24\x1A\u00DB\u00A7\u00C5\u00F4us\u00DEDaEGt\r\x10\u00D9\x18\u00EA\u00C8 \u0091\x05W\u0081\u00E8\u00BD\x1D-:L\u00F3=#\u00AD\u00BC\u00BA\u00F0\u00C7\u00F9\x19\u00EA\u00F8{k\u00AE\u00EC\u0098\u008D\u0088\u00E5\u00E74\u0081F\u00B6@\u00B3y\u0090\\\x0BhR\u00AD\u00BB\u00A6W\x11s\x00\u00A9\u00B4\r_\u00EA!\u00D8\u00AD\x18+\u00DE{\x16|\u00D1\u008B\u00F2g\x03x\u0093 {\x18k\u008F\u00DA\u00FE\u00B5{\u00FF\u00CC\u00DE\x17\u00C9W\u00C4\f=-\u00C6i\u00A5\x10\x00\u00E0\u0081\"\u00FDJ\u00D5\x17,\u00AF;\u0082?\u00D8\u00DA\u00F8g\u008B>L,\u00FCd\u00B1\u00CB\u0089\x15\u00972\u00F9\u00D3\u00BD\u009B\u00E0\x0B+J\u00A3\u00BA\u00AA5\u00E7\u009C_f\u0098\u0090\u00C7\u00D1\u00DC\u00AE\u00B8\u00E4\u00D5KY\u00BD\u00B6\u00C95\x04\u00FB\u00D2\u00FB'\x14\u0092R\u00E0\x14\u00A1\u0090|?\u00BA\u00FBE\u00B8G\x05\u00B6\u00DD\x1BI\u00A5S\x14\x1A-\u00BB[|z\x19\u00F4\u0080jX\u00D3\u00BBD\u00F6\u0081\u009E\u0085\u00B8\u00E2\x19\x01_,\u00D6n7\n|\u00F8l@\\6\u009F\u0097\x02\x18]pjHe>\u00BD\u00DD?\u008B\u009CF ,wM\u00E3\u00C5\u00A3.\u009Fu \u0084\u00D1X\u009A\u00C5\u0093\u00A2\x07\u00E6\u00F7\u00DD\u00F8\x1DX\u0081\u00E9\u00D6\u009A\u009EB=n}\x7F\u00F1\u00DE40\x1C\u00E2\x0E\u00E9\u00B1\u009AR\u0089\u00CAN\u00BF\u00F6\u00DE\u00F9\u009D\u008D\x0EWr>UZ\x17,gK\u00CC\x1E{\u00F4\u00D7\u00BE\u00EAU\u00FB^ _\u0093\x1C\u00D0\u00D3e\u009Cv\n\x01\x00.\x11\x19\u00FFJ\u00F5\u009F\u00CF\u00AE9\u00B2|\u00EB\u00D1\u008D\x17,\x1C\u009C\u009B\u00F4\u009E+\x13(x\x0B\u008A\u00A8E\u0088\u00859B\u00D0r\u00FF*\u00A0\f=\x18&\x103\u00E0[\u00D4\u0095s\u00C5Lu+\x1C` \u0090@ \x05\u00CEc\u00D5\u0089\u00F5\u00E7D\u009Bx\f\u0088I\x18\x1Dr\x14e\u00D5\u00E8\u00B4fp\u00D0\u00B3wk\u00FB\u00CD%\u00CB\u0088\u0092s\u009DG\u00A6\x1C\u0087\u0091\x16\u00DA\u00CEC\u00F6\x1D\u00A0\u008E5H\u00C6\u00D8\u008APR\u00B4\u0088\x00\u00A2\u009E\u00BFAc\x01Y*h+k\u00EE\u00FE\x7Fs\u0095\x15F)\x1E;\u0082\u0081G\u00EC\u00C6\x18zL\u00ED\u009A\u008E`\u00980*\u00CA3\u00F6\u00FB\x06\u009FM\u00E8\u00E8t\u00C3Kz\x11\u00C0D\u00A0\u00B9\u009Dm\u00A6\u00A9$\u00CB\\!+\u0096\u00FBV\x12\\cM\f\x10\rZ9\u0087\u00D8\u0099\u00B9\u00BB\u00C2\u0093\u00F2n#3\x05\u0080\u00AB86X\u00EB4\u009Dob\u00FE\u0098\u009D_\u00B9\u00E4g\u00F6\u00BD\u00E8tT\x06\u00C0i\u00AA\x10\x00\u00E0\u00C1\"\u00FDj\u00D5\u00EF\u00DA\u00F5\u0085\u00C3G\u00DErd\u00FD%Gd\x0E\x00\u00C1\u00AD\u009FZQ\u00BE\u00C8\u00ACy\x0F\u00A1\fSC\u00F4\x1C9\u00E1\u00A0E ]1\u0084\u00A0\u00A2\b\t\u00D2}t7\x1E\u00C0D\u0090\u00A3n\u0081\u00D7\u00E4\u00E7\u00B1\u00D3\u0088#\u00D3\u00F99S\u0092\u00AB\u0093{r^*\u00BB:\u00D1\u00FD~\u00F9=\u00BB\x15-YX\x13}(\u00AD\u00E0i\u008Cs\u00E5\u00BD\x18*\u00EF\u00E7Z\u00DA\u00BD\u00F7\u00A2\x18\u00E0\x1EB\\\u0087c\x17\u00BC\u0084\u00C8\x0E\u0080:\u00C3\x1A\u00AA\u00F0\u00B6'\u00E9XI\u00AF\u00AB\u00C3\u0094V,\u00D9\u00A3EX\u0091\u00F7\x1Cy\x7F R\u0085\u00A3k\x03k\u00A3.q\x1Ef\x0EB\u00A1\u00F8>ld\u00CA\u00FD\u00ADn\u0081\u00CA\u009F\u0082n7\u00C0\u00BA\x02\u008A\u00B2({*d\u00D1\x14i\u00DCCxY\x1A\u00A1\x0F\u00FB)\u0088\u00DA\u00C9D\u00E9=\u00D9\u009DvU\u00B4\u00D9\x0Ef\u008F\u00DFy\u00F5%\u00BF\u00B4\u00EF{\u00E4!\u00A7W\u0098P\u00C7i\u00AB\x10\x00\u00E0^\"z\u0093\u00EA\u00BF\u0099}a<\u00F8\u00DB\x07\x17\u00FF\u00F1\x16\u0099E\u00E3O\x00\x13W\u00DE\u00F4mZh s\u00EA=P}M\u00ABW'\u00AD\u00BA\x00(\u00AB\x19\x01\u0086\x06\u00D5\u009B\u00E0\x04\u00A5`\u00AE\u00B6U\u00CB\u00F0\u00A5\u00DC\x043\x1B]b\u00D2\u00F3\u00DCU\x19To$Zz\u00D5T\u00A5\x0B\u00F3\x04XuA\u00D9!\u00FB\u00D0\u00D3}v\x1C\u0089u\x10\u009B\u00DF\b\u00C9G\u00A3zO\u0088\u00D5\u00F5\x19\u00E2Z\x10a\x06\u00E3o\u00ED\x02\x11\u008D\u009A\x06>n\"\u00FBl\u00B5\x1E\u0082\u00C1\u00EF\u00B9m}vq\u00DF\u00E6UPY\x11w\u00A0+\u00CFc\u00D9\u00BB%(g\u0099\x10\b\u00A2U\u00BA\u0096sq\u00DB\u00C6k.\u00F3\u0084\u00CF\u0087\u00E7'\u008E\u00A0\u00E5\u00BC\n\x03!\u00C7\u009E\u00A9\u00C4j \u00B8O\u009C\u00CB\u0081\u00CC\x16\u00D7\u009F|\x0B^\u0094\u00ACw\fO<\u00F4\u00A3\x0F\u00FA\u008D\u00F3^!\x17\u009E>\x00\u00E2\u00F1\u00C6i\u00AD\x10\x00\u00E0\u0080\u00CD\u00B8W<\u00EF\u00BA\u009Box\u00DBM\x1B?\u00F7%]o\x14\u00F0\u009CX\u00EAVS\u00FF\u00F5_]\x00\x00\x17\u00F9IDAT\u00F2\u00ED\u00BAPL\u00B6\u00C3\u00CA\u00FF\u00EB$r!\u00AD-\u00D4\u00E8Y(_.\u00B2\u00ECZ'B\u0094\x05F5\u00AC\b\u00F7\u009F\x16\u008F\x13k%\u00F4\u0099\u00AC\x05A\x0B\u00AF\x1A\u0093p\x12\u00C6\x14e@\u0080t\u00A9\u00B6X,\u00AD\u00F9\x1ASe\u00BE\u00AD5\x01\x15\u00B4\u0091\u00F8@GG\x0BO\u00C0\u00D6\u0082t\u008B\u00D7\u00BD\u00A0\u00CC\x19\x7Fl_\u00AE\u00DD\u00B2\t|<K8\u00F1\u0086R\u00EE\u00D8\u0081\t\u00B1\u0086pwL=\x05*\u00E5P\u00E4R\x14\u009D\x1F\u008A\u00AF\u0083\\\u0083\u00AEi\u00BD\u00B5\u00D3\x13\u00B0\u00FBi\u00E5\x12\u0082e\u00E8!\u00D5*]\x19\u00AE\b\t\u00C4\u00F6\u00E3.\u008Ab\u00BD\x17\u00D9\x1Eo\u00A6\u00C8\x0ERT\u00A2H\u00EF\u0084J\u0084\u00AB\u008A\fPp\u00E1AQ@\u00F6l\u00F6\u008D\u00AF\u00DD\u00FC\u009E\u0087\u00BF\u00ED\u00FC\u00D7\u00E0\u00C2\u00BFs\u00BA\u00DF\u00E1\u00E3\u00F4VW+\u00E3\u00E5Wo^\u00F6\u00EB7\u00EB\u00EB??\u00AEo\u0090\u0087\u00C0:\u00FE\x10p\u00C6\u0084@\u0096'\u00BB\u00B0\x05\u009E\x10\x02\u00CA\u009C\u00B8\x1FC*\u00E2_\u008E\x0B\u00A40\u00AAZ&\u00A1\u00A3\u009C\x13)\u00A8\u00DCF\u008B\u00DB]\u00B6\u00D58\u00AE\u00FA$N\u00A5\u00C1\u00B5\b\x00\u00BF\u00DE\u00BA\u00BCx\u00D9_\u00D8~<\u00BC\n\u008Bk\u00D7\u00BAb\u00AD\x1B\u008B1\u00DA\u00B3w`>&+p\bwW0_$\u00F9\u0086\u00CC\u00CA\u00B6D(\x06\x02\u0092\u00CD;\u008C\n\x043\u00B6\u00F9\x12o\r\u008FB\u00F2Q\u00EF\u00B9\b\u00F6D\u00D0d\x1F\x164?[\u00B2#Rs\x14\u00B2\fG$HIl\x04c\u00C0\u00A0\u00C4\x020\u00B6\u00F2R\u0092\u0094jk4R\u0087\u00E9\u00F2\u00B3\f;\u00FB$:\u0089\u00ABg\u00F8G\u00A5\u00D4\x1C\u0097\u0099\u00B0\x1By\u00AC\u00CEtd\u0092\u00A6\u0082<\u00C5s\u00B9\u00F2k\u00FB\u008El\u009D}\u00E9\u0091\x7F\u00FA\u00F07_x\u0087\u00D2\u0091Od\u00DC\u00A9\x14\x02\x00\u00BC\u00FC\u00DACOz\u00F3\r\u00ED\u00B7?\u00B5\u00D88\u00A0*e\u00E9+Mp/\u00C8A\u009A\u009E\u0082\u00BFD\x19i\u00C9\u00B5\u00E0\x05\u008E\x0BHZy\u0089NCi\u00D9\x05fU\u00A8\\\b\x0B\u00A5\u00AB?U\"\u0093~\x02.\u00E8:\u00F2$\u0098(\rZ\u00E1\u00C0;|RO\u00C3\x04E\u00AC\x10\f\u00B7\u00E6\u00B1\u00F8l\u00AE\u00DD\u00B0\u00E1\na\u00D6\u0081\u008D\u00A2\f\u00B8\x04\x1C\\1\u00CC\u0096\u00C5\u00AA2L\u00F0&+V<\u00C5\u00CF\u00F8l\x053\u00B8K,y>*\u0084\x01N\u00A1\u00F6YE\u0081d5#k!\x06\u0099\njU\b\u00F3\u009E\x7F\u00F3\u00F3`'\u0082M]\u00CD\x06\u00AF\u0095\u00DE\x0EA\u009D\u00EE^c\x11J$\u00EF\u008F\u00D4kT\u0085@\u00D4\u00B3\u00F3<\u00A9$\u00EB\u00B2r\u00F0k\u00E5\u00B3\f\x05\u0081\fw\u00E2Z\x05\x18/<t\u00D3\u00DE\u00A7\u00F6o}\u00F4\u00AF\u009Ds;tB<u\u00E3N\u00A7\x10\x00\u00E0g\x0Fn\u00DD\u00FFM\u009F[\u00BE\u00F5\u00C3G6.Y(\u00EB\x1F\u00B2\u00A6\u009Fn\\6(Y\u0089\x05\u00B5\x14'\x15R\u008E\u00B9\u00B9\u00DE\u00D8c\u00C5\u00BB\b`\u00B1\u00A7'\u00C0\u00C5U4\u0094L9\x17\u00BD\u0082\u0091\x15\u0085\x00S\u00A3\x00\u00F7\u0097\u00B2~\u00C4T\u00A1d\u00E7\u00E9\u009C\u00A0\u00DA\x11\u008D\f\u00ED\u00BC\\\u00ECEC\u00F14\x00\u00BB\u009C\u00BD8/\u00B5\x0E\f\t\u00B8V\u00E1\u00AC\x1B\u00A5\u0099\u00DC~\x02am\u00F4\x02\u00A8\u00D2pE\u00DCCh\x10/^\u00CA8\u0099\x1E\x02=\u0083\u0099c\r& \x12kLL\u00FE\u008F$\x185)\u0082\u00DF\u00FF&\u0085\u00A0Q<%\u00B0f$\x02\x07\x1F{\u00CF\u0085Z:=\x05\x0B\x1F\u00AB\x05\u00E7\u00FD\u00C7\u00FD\u00C2\x00J6X\u0081j\u00D4\u0081\u00E4\u00FA\f\x14|\u008D9c\u00CA\u00AF\x15E5U\b\x02\u00C5p\u00F1\u0091+/x\u0086<\u00E3\u00C1\u00AF9\u00FB\x0E\u00ABZ\u00BC\u00B5\u00E3N\u00A9\x10\x00\u00E0\x7F\x1E\u00D5\u00FD\u00BF\u00FC\u0099\u00AD7\u00BD\u00F3\u00E0\u00F0\u008D\x0B\x1D\u008C_\x00)18B\u00D0B@\u0081@\u00C4\u00A8\x104\u008A\u00A3\x14\u0088\x14\u00D2\u00B4\u00DB\u00D2$\u00CC\u0088\x10\u00C0YkhSP\u0090\u00C5R\u00BE\u009Dj\x0F\u0082O\u00C6\u00AA\u00D9\u00DC\u0094\u00EEzz\x19\u0092\u00D7Lo\u00A5x\x10R\u0094\x18F6YEx:\x02`\u00BD[\u00CD\u00C3Z\x07\u00E6]\u00AC\u00B7\"h\x15]\u00E8\u008B\x17@!\u0081\u00FF\x7F\u00E8~,\u00B6v\x1B\u00CD\u008D\u00B6\u00B6h^; \u00C5\u00A2\x02\u0098Ac}o\x13Pq\u00E1e\x1D\u0083F\u00ABv\u00B6M\u009B\x15\u00E1\u009Fx\bj!\u00C9P>\x1FT\u00DDKH\u00EBl!G\u009B\u00B4Q\u00A7\x07\u0093L\u00C3\u00A9\u00E0\u00D6\u00B6h\u00ACFl\u00E59\u00B3\u00FE\"i\u00CC\u00A6\x10\"\u00E4\x00\\\x1D kF,\x7F\u0082&K\u00AC=\u00EC\u00C8;\x1E\u00F8\u009D\u00EB\u00CF\u00BE\u00E8\u00DF\u00EE\u00BEC\u00FA\x19\u009C\u00EC\u00B8\u00D3*\x04\x00\u00F8\u00A0\u00EA\u00F0\u0093\u009F\u00D9\u00FA\u00E9\u00B7]/\u00DF{x\u00B1\x06@&\u00D6VV\u0084+R\u0088.\u00D0\u0093\u00BC\u00B1\x0B\u00AA\x05\u00F2\u00E4\x17\x14\u00B0/\x14\nR\x00\u00A9H\nEZ\u0099\u00FB\u00EA\x05\x1FP\u00B2#\u00BDwB\u00D7\u0089\u0092\u00A9\u00FC\u00F9\u00D5\u00AEM\x01,v\x05z\x07\u00D7\u0097Hfa\u00D6\u00E5\u00F3x\u00B3nK\u00BB\u00CD}\u0082ot\n\x0F\u00AD\u00AA\u00F5\x10\x14\x05\u00DAR}\u00CD\x066\u00F5\u0090P\b\u00F5Y\x0EK\u00B3\u00FE\x112\u00C0\u00AB\x14Qp\x04\n\u009C\u00A4`\u00B1z\u00B1\u00A9\u00C6\u00DA\x0E\u00EC\u00930\x1F33\u00C1T\u00E4\u00DC\x15j\u0093\x04\u00FF\u00A2h\u008Ba_Q$3L\u00DDx*\x11\n+\u00F7\u009F\x14\x1F\u00D5\u00FFs\u00BB\u00A2d&\u00E9\u00CC\u00AE\u00A1\x042{P\u00CF\u00E5+J\u00ED\u00DA\u00C6\u00FE\u00AF9\u00FC\u00AA'\u00FE\u00E4y/\u0093\u00C7\u00DF\u00FE\u009D\u008EN\u00D5\u00B8S+\x04\u008E\u0097|\u00F6\u00D0s\u00DE\u00FA\u0085\u00D9/\x7Ff{\u00FD,\u00A2\u00DA\x13\u00E6\x1B\u0095\x000\t\x19\u00A2G>\x15\u0087\x7F\x1Fi\u00B0\u00A8<DZ\u00F7\x1A\x1E\u00F0<\u00DC/\u00BC\u0087\u00E2\u00F2W\u0090\x10\x05/\u00F0N\u00C7\u00F6]6x\t\u00E5\u00C5\u00E3D\u00C1\x13\u00CF'\u00A9\u0094\u00E850\u00B5\x19\u00F8\u0083\t\u00F7Z7\u00A5\u0090\u00EBCf'\u00A0\u00A1x\x033\u00F6Sw\u00AF\u0083\u00DFE\u00C8\u00E3\n\u00A3)0\x0F\x0F\u00C1\u009B\u008DR\u00F8\x1D\x17\u0098\u008F\u00A6\x10R\x19\u00F0\u00EF\u00EE\u00DEE\u00BA\u00F2\u00F3\u00DE\u00AD\u00C3\x12\x12p\u009Cw@\x1D\u0094\u009C\x05\u00DF\u00C3Vz\u00E6~\u0083\x16.\u0083\u00DF\x17y\"\x14~\u00AE\u00E3\x00\u00AC(\x04\u00CD{\u0089\u009E\tE\u0099\u00B0d\u00D9\u00C2FSb\x00\u0095\u0096\x1F\u00B3\u00A7\u00A7\u00D2\u00DA\x12\u00B3\u00FD[G.x\u00F2\u00F6w=\u00F6\x7F\u009C\x7F\u00BBuG\u00BE\u00AD\u00C6]B!\x00\u00C0\u00CF}q\u00EBa\u00AF\u00FF\u00D4x\u00F9\u0087\u008F\u00CC\x1F\u00A4:\u009F\u00BA\u00EF\u00A3N\u00AC\u00BDW\n\u0098\u00D0BV\u00B2\x11\x1A\u00827\x11N*\x14\x12\u008E\u00FC'\u0094Fx%\bkO\f \x04\x0B\x00\x17x\u00E5JI\u0093\u00C2\"*\u0084\x10\u00F8\f%\u00C2\x0BXN;N\x13\u00DC4\u00AF\u00A7\u009Brq/\u00A7u\u00C1\u00C6\u0098\u008A\u0081V\u0096\x15\u008D\u00CD=\u0089!\u00C2(S&\u00C3h)=fHH\u00B42\u00CC@\"S\x10\u0099\x04\u00CD\u0086)\u00D9\u00A2}U! \u009A\u009Ed\u00F6@#\u0086\u00E763\u00CF16\u00D5\u00E8\u0093`\u00F8\u0082\u00E4\u00F1\u00AA\x10\u00C3\u00DB\u00A5\u00A3X|5\u00EF\u00AC\u0082\u0082\x15\u00A7\b\u0085\u0080T\n$/\u00F1\u00FA\u00BB+\x0E\u00B6\u0095\x17\u0098\u00A2\u00E3\u00FB!\u00C8\u00B9v\u00FF\u0083W\u00DC\u00F7i\u00F3\u00CB\x1E\u00FA\u00EA=\x7FyJ&\u00F2\x1D<\u00EE2\n\x01\x00\u00FE\u00F7B\u00CF\u00FE\u00D9\u008F\x1D\u00FA\u0085w\u00DD\u00B4\u00F1\x1D\u00B7\u00F4\x19\x02\u00C4\x1B\x11\u0084&3\u00CA\u00DE!\u00A9\x03\u0082\u0096\u008C\u00C6b\u00E1\u0083W\u0080\"p\u00C4\x05P0\n\n\u00AB\x0Bo\u0086\tU\x19\u00F8\x0E\u00C5s@\u00F7\u00B5!\u00A5M\x04\u009CJ,\u00D6i\u00A7\x07SHJ5L\u0088\u00A2\u009E^\u00F7\u00F1\u00FDF`\u00CDC\u0087y7\u00EB\u00CD\u00CC@\b\x14ADNtv\u00FC\u00F1g&.\x18\u00FC{\u0086bM\u0091B^\u00B3\r\x12\x16\x1E\u00C7\u0082\u0089U8\u0091x\x02\u00E3yz\x1B\u0083+-\u00EE\u00DF\u00CAv\u0091*\u00D5\u00F4*\u0080\u00A2\x10x\x1E\x7F\x16\u0091\u00EA<\u00C6C \x00Y\x15\t\x1C\\Ne\u00C4\u00B0\u0088^\x01T\u00D1\u00D6vp\u00EEW\x1F}\u00E3W\u00BFt\u00FF\u008B\x0F|\u00FB\u00ED\u00B3\u0088\u00CA\u00ED1\u00EER\n\u0081\u00E3\u00A5\u009F<\u00FA\u009Do\u00F9<^\u00F3\u00FF\u00B67\u00CE\u00A6\x15\u00AF\u00BD\x01\u00D2\u00B5\u00B6\u00EDW\u00DBj\u00C7\u00DFE\u00A0\u0093c\u00E0\x0F\u008D\u009E\x02)\u00C7E\u00A1P\u0091T\u0097~\u008A\x17\u00F8u\u008C@\u00E0\x1E\u00FD\u00D8\u00F3S\thm\x1D?vpm\u00888\u00D7\u0088HY\u0092\x12\r\u00CF>\u00C8h\u00AE73\x0E\u00F3\u009Em\u00C0\x18O\u00CF\u0096\u009Aq\u00F4\u00D2-\u00F1X\x04\u008A<\x04ZL5\u00F7\u0099\u00D8\u00C1\f+\u00DE\x00hm\u00D5+\u00FC\u009C\x0BQ\x05\u00DB\u00EE|B\u0083\u00E6o\n\u00FD\x04\x13@\u00F9\u00BF&\x1F\u00C1\u00C2\x03{\u00DC5\x14 \u00EE\u00C0\u0090\u00AEr\x1F\b$\u009A\"\u00C8\f\u00CB\u00F1\u00D2\u0088@*\u00B2A\x15\u00DA:\u00DA\u00B9\u009B\u0087\u00EF\u00F1\u00A4\u00ED\u00EF~\u00F2\u00FF<\u00EF\u00BF\u009D\u00E4T=\u00ED\u00C6]R!\x00\u00C0/_\u00B7|\u00C0\u00AF\u00FF\u00F5\u00D6\x1B\u00DE}\u00E3\u00DA\x13F\u009D\u0085\u00B55,\u00C1-\u00A9\u00F3\x0F\u0092\u00FC\u00A3\u0089'\u00ACX\u00F8\u008A\x1B\u00D4\u00B4bd\b\u0082;\u0090\u00DB\u008A+\u0092\x001\u0091\u008A\u0089\x1EB\u00ACVCE\u0080<N*\x1D*\n\u008D\u00EB\u00E65t\x0F-\u00B2\u0083S+\u00DC\x07\u00C3*\u00B8(\u00EC\u009AZ\x1F\u00C6A\x0B\u00B8\u00E6\x18BcX0\u00A6\u00B2`\x11\x0FF\u00CD\u00AEKZ\u00C3\x02c\u00E6\u00B1=Z\b\x0E3\x10\u00DD\u00B1\x05\u0098[\u009F\x19\b\u00EE\u009F\u0096:\x17l\u00F1\x15\u00A9\\\u00A9\u00D6~\u008B\u00E1! \x15\x02\u00F1\x10\u0085\tw\u00AC\u00D0\u00A4\u00C0|\u0094\u0088\u00F7\x1B\u00D2\x13\x10\u00CD>\x05\u00D5[R\u0092\u00AE\u0090\u00A1\x03x\u00CD\x00\x1A\u00B6\u00B0\u00EBA\u00B7\u00BC\u00F7\x01\u00DF6<\u00EF\x11?z\u00DEm\u00BA\n\u00F3\x1D5\u00EE\u00B2\n\x01\x00nP\u009D}\u00DF\u00C7\x0F\u00FF\u00C0;\u00AEn\u00FF\u00E1\u00BA\u00CD\u00B59tf2\u00E7\x02\u00CE\u00BC\u00BE\x1CO\u00A0};\u00A0\u0084\t\u009E^\u00A40\x06\u00BF\u00A0\u00B8\u00AC\u00BD\u0097\u00E3\u00AD\n4\u00A6\x1E@\u00BA\u00FAT2=\u00F0\u0087)x\u00A8\x01v\u00C2\u00BD\u008A\x00,\u00A9\f\bL\u00B2\u00D6\u00A3S!e\x0F\u00C59\x14\u00EBKKCJ\u0097X1\u009A\u00B8\u0082t\u00B16jc\n\u00B4:S\u0091\u00D7\u00CD\\\u00BD\u0088uIb\u00CFDZ\u00FF\u009AV\u00AC`\u00E3\u00CC\u00D3\u0096)\\\u00CE\u008B\u0080L\x04\x1E\u00F0%\u00EBz\x11H\u00CD\u0098\x7F\u00E8\u0092<\x06\u00F7\u00A8\"\u00E4P\u00A3`\u00DBwb\u0085P\u00BA\x12\u00A6(\u008F\u00B9\x12&(\x00\u0099z\"\u00D6\u00EE\f\x10\u008C\u0098\u00ED\u00DBY\u00EC\x7F\u00C2\u00D1W>\u00FDG\x0E\u00FC\u00B8<N\u0096'=9O\u00D3q\u0097V\b\x1C?\u00F5\u00D9\u00A3\u008Fz\u00CBU\u00FD\u00BF~\u00E0\u00C6\u00B5G\u00F6>\u00CF\u00EE\u00C8$\u00F90\u00D5\x17\u00C2\u00AA\u00A8\u008B\u00AE\u00AC2\x11\u0089\x01\u00D4\u00DC\u00FF\u0094\x15\u00A9\u00A1\x10Hf\u008A,Fa\u00D7\u0099\x05\u00F7\u00CF\u0095\x1C\u00FA\u00E45\u00D0\u00C3\u00A0\u00F5'M\u00B9\u0086\x14\u00E4!\x18\u00960\u00CD@\u00ACfI\u0086n\na\u00DE\u00E9\x19 \u0080\u00B6\x16\u00D4e\t\u00E5\x10k\x1BF\x16B-\u0095)m\u0082\x11Tl\u0080L\u00C4\u00CAQ\u00E0\u00B6\u00C1+\u00A8\u00FB\x00\x13\u00AB\u00CE\u00EF\u00AAg@\x16\"\x15B+\u00E7k\u00FE\x1E\u00B2\u0083sV\x1E\u0092;0\u00A10k\u009EG\u00FC\u00B8\x11>\u0094\u0085g\x07\u00D8\x1F3Yb\u00EF\x03\u00B6>|\u00CF\u00A7.\u009F\u00FF\u00A4\u009F?\u00F7C\u00A7|r\u009Ef\u00E3n\u00A1\x10\x00\u00E0}\u00AA\u00F3\u00D7\u00FE\u00F9\u00C1\u00EF\u00FF\u0093k\u00D7\x7F\u00F0\u00AA\u00A3\u00EB\u00EBY\u009C$S\u008F \\w\x14\u00C1C\u00C4\u00E9\u00AB}\x15\x01W\x14\x10T\u00A6a\x05\"Y\u00E84\u00E14\x14A\u0095n=\x04\u00C2\u00D2\x17\u00A1\u00D61\u00AB\x14\u00B9\u00EC\\\x1E\u0087\u00A9KR\u0098\u00CB=\u00B8\u00D0O\u00C0\u00CF\u00AE\u0098\u008F&\u00E8\u00A46\x1BkQ\u00A39h[z7\u0083n\u00EB@\x06\x0E\u00E2\u00CAf\u00EE\u00AE\u00BF\u00C8T!DCUMjr\u0082\u008A\u0096Q \u00A5\u0098.9=\u0089\u00B9[gvB\u00AA\x1EF\u00C4\u00F5<NG\u00F4P\x18\x14Q\u00EE=\u00F8s\u009C\x00\u0091\u00FE\u00FEV\u00BD\u0081\u00BA\u009E$\u0090\u008A\u00878\x03`D\u00AE\u00E1\u00C0\u00C1\u00ED{>Z\x7F\u00EC\u00E9?p\u00EEO\x0E\x7FO\x16'5\x01\u00EF$\u00E3n\u00A3\x108~\u00ED\u00BA#\x0Fz\u00FD\u00C7\x17\u00BF\u00F0\u00DE\u00EBw]\u00BA=\u00CE0\u00F6\x16a\u00C4\u00B4W\x02\x02\u00B4\u00E3:\u0082(\u0082\x01wc\u00ED\u00CF\u00A9e\x060\u00C9XT\x1E\u00C3jQT4Q\u00ED\u00A4!\u0097\x10\u00C3\u00BD\t\u00BA\u00B9q-%L\u00806\u00AF\u00E7\u00C8\u00FDB\u00D9uW\"]\u0081nB>\u0090{\u00D0\u00D3\n\u00CF:0\u008C\u009EI\u00A0@\u008DV\u00EB\x10)Wz\b\u00A3\x1CCH2k\u00EF\u0099\x05\u00CB\u00DB\u0080]\u0099i\u00A5\u00C5\u00D3\u0088\x03$)\u00CB\u0098\u00A6\u00FA\x02\u00F4\u00C3\u00B1\u00C0b\u00F3d\u00B1-\x02+\u00A1\x1C\u00E8m\u00CDz\x12\u0099\u00C0\u00EBQ@\u00A4\u00B6s/\u00FC\x03\x14O\x01E\u00B9\u00A9B\u00E6Gq\u00EEC\u0097\u00EF\u00BA\u00E4i\u00FD\u00C5\u008F\u00F9\u00F1s\u00AF8\x15\u00F3\u00EE\u00CE2\u00EEv\n\x01\x00\u00BE\u00A8*?\u00F1\u00B1#\u00CF\u00FB\u0083\u00BFn?\u00FD\u00F1\u009B\u00D7.\u00EC:\u0084\u0090O*\x1C\u00DD\n\u009B[_\u00C0>n\u00AB@\x10\u00A1h\u00991\r\x07\"\u009E\u00D7\x12>\u0084\u0087a\u008Af\u00B5\u00A4\u009A\u00CDM'\u00A5\u00B9\u00A0\u00C7\u00D1#$\u0091\u00DE&\u00DEDz\x02\u00C80#>\u0097\b#\b\u00C4\u00CD\u00C7$\u00E3\u00CC\u00D8\x15i\x04\x00\u009D(\x04*\x1Cx\x18\x11\u0085L\u00A8\x1EBw\u00901\u0089C\u0095\u00AF\x00\u00FF\u009Bt\u00E5\u008A\x03$\u00BBP\u00A7t\u00E5n\u00DD\u00A1b\u0089w0\u00F4(\u00ACAw\u00EF\u00E8\u00F5\u00A4\u0090'\u00EE@B\u0091\u00F8\u00B5\x05\u00B7\x01\u00F6\x0E\x1B\x18\u00E6t\u00EC\u00BE\u00F7\u00E6u_\u00F1\u00B5\u00CB\u0097=\u00FD\u00D5\u00E7\u00BCA\u00CE\u00E7Y\u00EF>\u00E3n\u00A9\x108\u00FEd[\u00F7\u00FD\u00E2\x07\x0E\u00FF\u00D0\u00BB>/\u00FF\u00FA\u00BA\u00C3\u00BB\u00E7Q\u00D3O\u00CB\u00CAJ\u00CAb\u00E9\x05\u00C8\u00AC\x00$\x1B\u0088v+t\u008A\u00B4\u00A2\x0Ba\u00E57\u00B0Y)\u00AD\u00ADhK\u00A0\u0090\u00FB\u008C+a\t*\u0086\u00D1\u00CB\u00B1\u00E4\u00B8\u00C0c\u00D0\u00B5\u00EB\u00825\x04\x05\u00A9\u00A4\\A\u0091\u0097\u00C0\u00D4]\u00EB\u00C0\u00B0T\u00A0[\u00FD\u00C5|l\x19~\u00F85\u00B6\u009E\u00A1A-}\x1E\\\x00\t0r\u00C5\u00A6Y\u00B0\n\u00CDk\u0098\u00BB\u00CB\x1Fk5(\u00A6\u0098\u0080\u00D7\u00944X\u009AT\\\u00F1\u00D6\u00E5\u00E4#EI\x0F\x04\u00CC\u009A\u00E8\u00E4\u00FC\u00C2\u00CC\x0E\u008F/\u0080h\x0B\u00CA\u00B1\u00A83%\u00A5cc\u00FF\u00F6\u00E2\x1E\x0F\u00DF~\u00ED\u00D7\u00BFp\u00DF\x0F\u00DF\u00FB\u00B9\u00B3\u0083\u00A7|\u00B2\u00DDI\u00C6\u00DDZ!p\u00BC\u00F6\u00FA\u00EDK~\u00EFC;?\u00F3\u009Ekf\u00CF8\u00B2\u00B3\u00EE\x0B\u0082f\u009DCm'\u00C6N\u00C9\u00C7\u00C4\u00F3>q3\u00AD\u0088\u00E47L\u00C2\x07\u00AE\x07\u00E9\u00DD\u0097+n\u00A1\u00F0\u0096f\u00E9Q\x00\b,\u00C1x\x06\r\u00AC\u00C1\u0098tm\u00A6w\u00C0\u009E\u0092\u00A5\u00ACz\u00EAAx\x1B\u00B1\u00D1\u00AC*\x19\u008B\\\u00E8\u00A5-5\u0084kXz\u00B1\u00D7\u0098@j\u00AC\f%iy#\u00DD\b\u00B7\u00F2\u00C5\u00A5O\x0F\u00C1\u00DA\u00A4\u0093Dd\u00C0\u00A1\x06\u00907\x14\u0085@\u00AB\x1E\u0085N\u00C8\u00F0\u0081J \u0084\\\u00A7\u00DBP\u00B9\u00F9z\u00CF\u00B1\u00DA\u0093(\n\u00A5ZC\u00F1\f\u00BB\x0E\u00E3\u00A2\u0087\u00E2\u00AD_\u00FD\u008C\u00E1\u00A5\u008F}\u00C5YW\u009E\u00D2\u0089u'\x1Cg\x14B\x19?\u00F1\u00C9\u00A3\u00DF\u00F0\u00FBW\u00F4\u009F\u00FA\u00E0\u00D5\u00F3\u00C7m\u00F6\x19b\u00E5\u00A4\x11`S\u0093\x00\u00FD\\\u0080k\u00A7\u00E4\f\x0F\u00B2%x\u0084\x0F\u0091\u0095(\u00E1\x00\u00BB\x13\u0091\u00BE\\\u00B3\x18\u00A1h\u00E0a\x02\u00CF;\u00F5X\u00D8\u00BA\u00D8\u00CE\u00A9%\u009C\u00E01\u00BB\x0B\u00B4/Q\u00C7\u00E6.%Dh=\u00B3\x00\u00ACoh]\u00D1\u0096\x12\u00CA\u008C\u0095\u008F\u008D\n\u00C1\u00C3\x03\"\u00F2\x0348\x04\x04\u00FD,#\u0091\x02[C\u0086Ua\u00AE\u00DF\u00D1k \x1FaU!\u0084W\x01\u00842\u00A1sOO`\u0082K\u00F0oq\u008C\x00\x00f[\u00B8\u00F0\u0081[\u00EF\u00BF\u00FFS\u00F1\u00F2o|\u00D5\u00B9\u00FF\u00EB6\u009ARw\u00BAqF!\u00AC\u008Ck\x16*\u00BF\u00F0\u0097\u009B\u00FF\u00E8\u00ED\u009F\u00DA\u00FE\u00E1\u008F\\\u00BB\u00EB!\u00DB}\u00EE\x02\u00ECe\u00D2\u0085\u00B5\x18\u00AE?\x00\u00AE\t\u00D9\u00BADCNV\u00DB\x05\u0093\x10\u00E9Ap)\u00F6\u009A\x05\u00A8\u00A0\u00A3N\u0094H*\u0099)\u0093q\x1A\x02\u00C0\u00C3\x04\u0092\u0089\u00A8p\u00F2s\x01\nP\u00A8T\b\u009AJ\u0080$&\x19\u0093\u00E5\u0088\x0EH,\u00EBV\u00D2\u0088@\x10\u0091\x06e\u0097$\t\u0081\x1C:\u00A2\u00DF\x01\u00BA\u0085\x10s\u0095\u00E8\u00C6\x1E\x0B\u00BA\x02\u0098\u00ABN\u00AD=Jz\u00B1\u00F3\u00F8\x12a\x14\x0B\u00AB*\u00C7@\u0080Ia\x15y\x10\u00E6U\x18(9\u00C76\x0E<x\u00E7\u00E3\u00F7y\u00E2\u00F8C\u00FF\u00F0\u00A7\u00F7\u00FF\x0F\u00D9\x7F\u00F7\u00C3\t\u00FE\u00B6qF!\u00FC\r\u00E3\u00F3\u00AA\u00C3\u00AB>p\u00CB\u00B3\u00DF\u00F3\u00A9\u00F6\x1F>t\u00ED\u00ECA;}\x1D\u00D10\u0095`!\u00A6 \u00A1\u0096\u00DF\u00ABl\u00C6\u00E43\u00ACd$\u00A8\x1C\u008E\u00F1\ntE\u00F10l\u00D1\u00F8;\u00EB+\u00E8\x150\u0084\u00D0\u00C0\x13t\u00B5\u00D4ztO\u00C3\x15\x12\u00AF\u00DFV\u0086\u00F6\u0085Y\u00F9\u00DD\u0098+\x18K\u00C1!fj\u00EC\u00C4\x106a\u0083\x14Zo\u00EF\u009D\x10\x02\u00C9\u00E6\"\u00CE\u0081\u00F0g\u00CC0\x03\u0092\u008D\\(\u00D8\u0095\u00C7P3\x0E\u0099\u0086,m\u00DA\x14\u0096fDvs\u008A\u00F0\u0081\ni\u00D8\u00C4E\u0097l^\u00F1\u0095\u008F\u00D7W~\u00DB\x0F\x1Ex\u0093|\u00D5\u009D\u00B7D\u00F9\u00B6\x1Cg\x14\u00C2\u00DF1nP\x1D~\u00E6\u00CF\x0F}\u00FB\u00FF\u00FE\u0084\u00FE\u00FB\u00BF\u00B8z\u00E3\u0091[\u00E3\x1C\u00D1\u0099\u00B9g#US\x04:\u00C1\x10\b\u0088u-K\u00A6\x05\rZ\x0B~0\r\x13&MO\"\u00A5Y\u00D6J(\u00E7\u00AAaB\x0B\x0ECn\x1B\u00DC\u0088\u00DE}?\u00C9\u00DA\x0E*\u0095\u00D1\u00B6\x1F\u00BA@F5\u00D7\u00DD\u008B\u009B\x06 J\u00A0\u00A1@s%1\u00D7\u00E4#\b\u008C\x16m\u0096=-t\u00F6IP\u00F7\b$\u00B0\u008A\u00E0\x00\u00F8\u00CF\u00BC\n\u00BB \x17\u008E\u0091\u00A2\x10\u0090^\u0085\u00BAWR\u00B9\x0E\x02\t\x16\u00A5\u00A5\x1C;\u00E6\u00F3M\u009C\u00F3\u00A0\u00C5\u0087\u00EF\u00F7\u0084\u009D\u009F\u00F8'?v\u00C1o\u00C9yg\x14\u00C1\u00DF6\u00CE(\u0084/s\u00DC\u00A4*\u00BF\u00F8\u0091[\u00BE\u00E9\u008F>\u008E\u00EF\u00FB\u00F0\u00E7\u00E7\u00DFpp{\u00CD\u00AC\u00EF8K\x10\u00B0\x02\u0089,o\x06\u009CX$\u00D30A1\u00E5\x19\u00D0\u00C3\u0088B\u00A5\u00C2\u0094t\u00A1]]T%HC\x05\x1F\b2\u0093V\u00A6c\u00CF~\x10\u00A3D\u00E5'\u0097\u0088\u00AB\u00EBA\u00A2K\u00B4P\u0093\u00DEm\u00F9s\u00E7h\u0088Z(1\u00C0:1\u0091\u00C8\x13\x1E\u0082\x0B4-4\u0097\u008D\u00E7\u008A\u00CA\u0086\x13h\bpM\x1F2Kaq\u00BEd\u00FA\u0091\u00C7*\n#AE-\u00D8\u0080g\x19\x00\u00B4\x06\u00CCv\x1F\u00C2=/\u00D9\u00FE_\x0F\u00FFz\u00FC\u00E7g\u00BE\u00EC\u0082?\u0090\u008B\u00CE\u0084\x06_\u00CE8\u00A3\x10n\u00C5x\u00DD\u00A7\u00B7\x1Eu\u00F9\u00FB\x0F\u00BF\u00E4\u0093\u00D7\u00AC=\u00FBs7\u00ED\u00DE\x18\u00D1\f\u00D5\x1E%\u0080H\u0096CG\u00DD\u00C3\u0098\x169\u0081\u00C8\u009A\u00A5pE\x10\u00DC\u0085Z\u00E1X>\u00AF\u00A0\u00A2f/\u00C5\x00\x1DGWD\u00DD\u0081E\u00ED\b\u00A6%$\u00AE#\u0088OU\u00C1x3\x16\u00E9ITj\u00DEg1\x14\u00D1h\u0085E\u00F3\x1A\u00A3\u00A3T<V\u00AB\x0ED\x01\u00D3\u00E0\u0084%\u00F6<\u009C\u00D4\x17\u00C0B\x00\u00B3\u00FE2\u00A15\x1B&P\u008B\u00A0\u00A4(\tE\u0093\x0E\u00A0y\u00B8\u00D0\u00B1\u00FF\u0082\u00A3[\u00E7\u00DDw\u00E7MO|\u00D6\u00AEW\u00FF\u00FD\u0097\u00EF\u00BE\u00CBS\u008DO\u00F58\u00A3\x10Nb\u00BC\u00E7\u0090\u009E\u00FF\u00BA?\u00BD\u00E5\u009F\u00FF\u00E5\u00D5x\u00D1\u00C7>7\u00BB\u00DF\u00D6\u00F6\x06 \u00CD\u0090} \u00847]t\u00F5\u00EAD\u0084\x070\u00A9U`\x16\u00C1\u00853j&jj\u00D2\u00C1\u00CB\u00BA\u00D2S\u00E0\x02+!\u0087Q\u0097uJ`\u00A2\u0097r\x1C\u0085@\u009C@\u00C7\u00EE]\u0093\u00DA\x04?\x10\x05\u00DA\u00C8\u00B6\u00E7\x12\x1D\u0096\u00A3\x7F\x01d\n\u00E4)\u00D0\u009A\u0096\u00BE\u008A\x12\u00D6~V\u0094\x070\r5\u00C87\b<\x00\u00EC\u00A7\u00E8\u00CA\u00C23\x17\u00B3\x0EH\x1B1\f\x0B\u00DC\u00E3\u0092\u00FE\u00E9\x0B\u00EEw\u00E4u\u00DF\u00FC\u00C2\u00F3\x7F\u00F5\u00C1\u00CFl7\u00DC>3\u00E0\u00AE7\u00CE(\u0084S0nPm\u00BF\u00FA\u00C1\u00AD\u00A7\u00FC\u00D1G7_p\u00E5\u00B5\u00C3\u00B3\u00AE\u00BEq\u00D7F\u00979d\u00EC\u00D0\u009E\u00E5\u00C8\u00E6\x01$m6\x00H\u00EF\u00F8\u00B3\u00DA\u0082\u00AD\x15\u00C1\r\u008F\u00A2\u0084\t\x13\u009EAaE\u00B2{R\x1B\u00C5\u00D6.\u00EC\x19&P\u00C0'@\u00A8\u00EF\u009B\n\u00C1\x0B\u009DF\u00C9\u00BF\u00BB@tD\x1B\u00CD\u00E1\u00B7\u00B4\u00A2U;\x1A\x01)\x05\u00BAIV5\x0E\u00A2\u0091%\u00A8\u00B5\fMR\u00A1\x10,\u0094\u00A6%4(U\u008D\x00\x04=k%\u009Ab\u00AE#\u00F6\u00DEck\u00EB\u00C2\u008B\u00FB[\x1E\u00F1u\u00F2+\u0097}\u00EF\u00BE?\u0096{\u00B0\u00A6\u00F4\u00CC\u00B8\u00B5\u00E3\u008CB8\u00C5\u00E3\u00A3\u00DB\u00BA\u00FFu\u00EF8\u00F4\u008F?x\u00D5\u00F8\x1D\u009F\u00B9v\u00F6u_\u00B8e]0\x0E%\u00BB\u00E0\u008F\u00FC\x18\x001]y\u00F5X=\x0B\u00A4\u00DC\u009B\x00\u0080\u00B1\u00B4U\u00EB2\u00B5\u00F8\u009E\u0081`wf\u00E9\r\u00DD\u00B9\x13Qe\u00E9\x05KUy\u00C4Z\x15\u00A3\u00A5!\u0089u\u0084\u0097\u00C2f)\u00DD\u00BEg\u00E5!\x15B\u0083Z\u00B3S\u0086\x02\u0092\u00C2L\u009As\u00E5\x05\x10+`\u00B6\x02\u00D2]\t\u00B4l\u00AC\u008A\u00C4 \u00C4=\u0084&\u0082=\u00FB\u008E\u00E8=\u00BEj\u00FC?\u00F7{X{\u00E37}\u00E7\u00DE\u00FF\u00FE\u00C0K\u00E5N\u00D9\u00DD\u00F8t\x1Dg\x14\u00C2m8\u00DEv\u0093^|\u00F9;o\u00BC\u00EC\x13\u009F\u00DB}\u00D9g\u00AE\u00E9\u008F\u00BF\u00E1K\x1B\u00B2h\u0080\u00F6Y\u00A4\x13\u00938d\x19\x00x#\u0092\x1A&\u00E4\u0092\u00F4Z\u00D2\u0089\u0098x\x05LSF\x1B\u00F9\u00B1\u00B4V+\x00c\u00F5\x0Ejed\u00FDa\u00F6\u00A3\u0091\u00E30j\\#y\x0B@\x12\u0092\x06\u00F1\u00DF\x10\u00D4\u00F6\u00EB\u0081/\x1400\u00BD\b\x0F%JS\x12\x02\u008F\u00CC.4\x05\u00B4m\u00E3\u009C\u00FDK\u00BD\u00E7}v\u00DEw\u00AF\u008B\u00FB\u00E5O\u00BB\u00EC\u00C0\u00E5\u008F~\u008E\\u\u00DB\u00BF\u00BD\u00BB\u00E78\u00A3\x10n\u00A7\u00F1\u00A7\u00D7\u00EAW\u00BC\u00FEO\u00BF\u00F8\u00AC+>7|\u00CBu7\u00CC\u009E\u00FC\u00E9\u00EB\u00DB\u00BA\u00F6\r\u00F4>B\u00FAP\\\u00FF$\x16\u00B1\u00D1\u00CA$\u00ADY]\u00FF\x122\u00B0\u0085Z\x1Bk\u00AAq\u00CAy\u0098\u0084!\x05C\u00A0\x17\u0090\u00C5U\u00E4!\u00A4\x12!\u0086 E!4'\x18\u00AD\u00B9R\b\u008C@\x10\x1D\u008BY\u00B7\x10\u009C\x02$.@\u00C6c\u0093\x1E\x15\u0088\u0096\u00A5\u00D8\u00C2E_\u00B1\u00D8>\u00FF\u00C2\u00FE'\x17\u00DF\u00B7\u00FF\u00CE3\u009F\u00B7\u00E7-\u008Fx\u00FA\u00DA\u00E7o\u00CF\u00F7uw\x1Dg\x14\u00C2\x1D0>\u00BE\u00D0\u00B3\x7F\u00F3O7\u009F\u00F2\u00BE\x0Fo~\u00E3\u00F57\u00F7\u00A7^u\u00ED\u00EE\x07\u00DC|x\u008E\u00DEg\u00C1\u0084\u00AC\u009C\u0083\u00EA\x1D`d\x1A\u00D3>\u00EF$*\u00D5\x02&\x0F\x13j\x0B\u00B7\u00C8\x12\x14\u00E5\x10\u00D8\u00C3q?K\u00E5\x12e\u00D1\x1E\u00CAp\u00DA\x18\u00E3P\u00B1\x06\u00F1\u00DA\u0086\x04\n[\u00CFjH\u0092\u0093\u00A2\u00AB\u0092\u00A470\x03 \u00B2\u0085\u00B3\u00F6\u00EE\u00E0\u009E\u00F7\\~\u00F2\u00FC\u00F3\u00C7?|\u00F0c\u00E7\u00EFx\u00CE\u00F3\u00CF\u00F9\u00E3\x03\x0F\u00B9\u00EB4/\u00BD\u00B3\u008C3\n\u00E14\x18\x1F\u00B8Q/~\u00FD\x1F|\u00F1\u00D2+\u00AF\u009A?\u00F9\u00FA\u0083\u00FDI_\u00B8\x01\x0F\u00B8\u00F1Kk\u0082\u00E5\x06\u00FA\u00D8\x01VE\u00BA\u0092hZ\u00D8\u0087U\u00E0'!@\u0082\u008E\u00D19\tn\u00FD\u00C9+\b\u00D0R\u00DD\x13\u00D1LK\u008E\u0088B\u00AB\u00C8Bxf@\u00FD\x070\u00D7\x7F\x069\u0086\x1D\u00C8\u008E\u00CC\x19\x06X\u008ApP\u00C5 K\u009Cs\u00EE\u00B6^x\u00E1\u00E2\u0093\u00FB\x0F,\u00DF}\u00DF\u00FB\x0F\x7F\u00F2-\u00CF=\u00FF]\u008Fy\u00CA\u0099P\u00E0\u008E\x1Eg\x14\u00C2i8>pT\u00CF{\u00F3\u00DB\u008F|\u00CDG>q\u00E4q7\u00DC8\x7F\u00EC\u00E6Qy\u00F4\u00E7\u00AF_\u00BB\u00E8\u00E6\u0083\u0082\u00D6\u00D7c\t\u00B7\u00DE-o?\u00EAh\u00DE\u00C08K*uu\u00F9)\u00C4\u00A55[\u00A65\u00E1\u0095\u0094\x1E^,\u00CB\u00BET$c\u00F6\x16`\u00898\u00E0J\x02\u008A\u00D6\x14M\u009B\t|o\u0096Y\x000H\u00C7\\\x17\u00D8\u00BBg\u00C4\x05\x17m_{\u00F6Y\u00F3\x0F\x1E\u00B8\u00E0\u00E0\x07\x1E\u00F2\u0088s\u00DE\u00FF\u00DC\x7Fz\u00F6\u009F]\u00FCP\u00B9\u00F1\u00F6\x7F\u00BAg\u00C6\u00DF6\u00CE(\u0084;\u00C9\u00F8\u00C4!\u00BD\u00F0w\u00FE\u00E8\u00E6\u0087\u00BF\u00E7\u00A3\u00FA\u00B0\u009B\u00BE\u00D8\x1E|\u00F0\u00E8\u00F8\u00A0qs\u00FD\x01_:\u0084\u008B\u00AE\u00F9\u00E2R\u0096\u00DB\u00EB\u00C0\u00B8\x11K\u00C8G\u00C6\u0080)\u00BD\x0Et_\x1C\u00D6\u00BAC\x19zo\x1C\x05\u008D\x05`\u00C4S\u00A3p\u00CFA<,\x19\u00E0\u00D4kXH\u00A2\u009EZ\x1C\u00A0\x18t\u0089\u00F9p\x14\u00E7\u009E\u00DFt\u00FF\u00DE\u00E1\u00DA=\u00B3\u00ADO\u009E\u00BDG\u00AF\u00D8\x7F`\u00FC\u00ABG>\u00BA\u00FF\u00E5\u00B7?\u00E7\u00A2\u008F\u00DE\u00EF\u00C1r\u00DD\x1D\u00F8\u00F8\u00CE\u008C/s\u009CQ\bw\u00F2q\u00D5\u00A8g\u00BD\u00FFS\u00F8\u00CA\u00F7\u00BD\u00EB\u00E6\u00FB\\\u00FD\u00B9\u00E5\u00C5\u009F\u00BFe\u00F3^\u0087\x0F\u00EE\u00B9\u00C7\u00F6\u0091\u00D9E}G\u00CE_.\x16\x07\x16\u0090s\u0097\u00DB\u00B3\u00BD[Gt\u00D8\u00DC\u009Ec\u00B15\u00C3r{\u0080.\x15:6\u00E8\u00C2\u00B3\x1A\u00EA\x1D\u008A\u00A0\u0098\r#\u00D6\u00D0\u00B1\u00BE\u00B6\u00C4\u00AE\u008D>\u00CEf\u008B[f\u00D0/\x0Em\u00FD\u00A6a\u00BE\u00BCa>\u00C7\u00B5{\u00F6}\u00F1\u009A\u008B\u00F6\u00AE_}\u00EF\u008B\u00CF\u00BA\u00EA\u00D2'\u009F\u00F3\u00D9\u00C7=\x11\u009F\u00B9\u00F0^r\u00E4\u008E~&g\u00C6\u00AD\x1F\u00FF\x1F\x00\u00F3\u00AA\r=e\u0082\u0081\x00\x00\x00\x00IEND\u00AEB`\u0082" ;
    this.slash = "/"
    var targetFolder = new Folder(Folder.userData.fullName +this.slash+ "Aescripts"+this.slash+"colorPicker");
    !targetFolder.exists && targetFolder.create();

    this.settingFile = new File(targetFolder.fullName + this.slash + "colorPicker.xml");
    if(!this.settingFile.exists){
            this.settingFile.open("w");
            this.settingFile.write("<setting></setting>");
            this.settingFile.close();
    }

    this.haveSetting = function(name){
            this.settingFile.open("r");
            var content = this.settingFile.read();
            this.settingFile.close();
            return content.toString().indexOf("<"+name+">") !=-1;
        }

    this.getSetting = function(name){
            this.settingFile.open("r");
            var xml= new XML( this.settingFile.read() );
            this.settingFile.close();
            return xml[name].toString();
        }

    this.getSettingAsBool = function(name){
            var result = this.getSetting(name);
            return  result == "true" ? true:false;
        }

    this.saveSetting = function(name,value){
            this.settingFile.open("r");
            var xml= new XML( this.settingFile.read() );
            this.settingFile.close();
            var isOk = true;
            try{
                xml[name] = value.toString();
            }catch(err){
                isOk = false;
            }
            this.settingFile.open("w");
            this.settingFile.write(xml);
            this.settingFile.close();
            return isOk;
        }

}
    $.global.colorPicker = colorPicker;
    return colorPicker;
})();
// ==================== |-----------------| ====================
// ==================== | DuTranslatorLib | ====================
// ==================== |-----------------| ====================

/*
DuTranslatorLib
Translator Framework Library
Copyright (c) 2017,2018 Nicolas Dufresne, Rainbox Productions
https://rainboxprod.coop

_Contributors:_
Nicolas Dufresne - Lead developer

This file is part of DuAEF.

DuAEF is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

DuAEF is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
 * Creates a new string translation.
 * @class
 * @classdesc An translation for a string.
 * @param {string} source - The source string
 * @param {string} [translation=''] - The translated string
 * @param {string} [comment=''] - A comment to explain what needs to be explained
 * @param {string} [context=''] - The context where the string is used
 * @param {int} [contextId=0] - A unique id for the couple source/context
 * @property {string} source - The source string
 * @property {string} translation - The translated string
 * @property {string} comment - A comment to explain what needs to be explained
 * @property {string} context - The context where the string is used
 * @property {int} contextId - A unique id for the couple source/context
 */
function Translation(source,translation,comment,context,contextId)
{
	if (typeof translation === 'undefined') translation = '';
	if (typeof comment === 'undefined') comment = '';
	if (typeof context === 'undefined') context = '';
	if (typeof contextId === 'undefined') contextId = 0;
	this.source = source;
	this.translation = translation;
	this.comment = comment;
	this.context = context;
	this.contextId = contextId;
}

/**
 * The Javascript translator part of the Dutranslator Framework<br />
 * see {@link https://github.com/Rainbox-dev/Dutranslator}
 * @namespace
 * @memberof DuAEF
 */
DuAEF.Dutranslator = {};

/**
 * The current language id (fr, en, ..)
 * @memberof DuAEF.Dutranslator
 */
DuAEF.Dutranslator.current = '';

/**
 * The current language name
 * @memberof DuAEF.Dutranslator
 */
DuAEF.Dutranslator.currentName = '';

/**
 * A map containing available languages.
 * There is a language name and a file name for each language id.
 * languages["fr_FR"] ["name"] is "Francais" for example.
 *
 * Will be filled when executing Dutranslator.getAvailable().
 *
 * @memberof DuAEF.Dutranslator
 */
DuAEF.Dutranslator.languages = {};

/**
 * The translated strings  of the current language
 *
 * An array of compounds containing the source, the translation and the context
 *
 * @memberof DuAEF.Dutranslator
 */
DuAEF.Dutranslator.localizedStrings = [];

/**
 * Some Settings for the translator
 * @namespace
 * @memberof DuAEF.Dutranslator
 */
DuAEF.Dutranslator.Settings = {}

/**
 * The folder containing the translation files
 * @memberof DuAEF.Dutranslator.Settings
 * @type {string}
 * @default "thisScriptFile/file/path/"
 *
 */
DuAEF.Dutranslator.Settings.folder = File($.fileName).path + "/";

/**
 * The prefix in the translation filenames
 * @memberof DuAEF.Dutranslator.Settings
 * @type {string}
 * @default "thisScriptFileName_"
 */
DuAEF.Dutranslator.Settings.prefix = File($.fileName).name.substring(0,File($.fileName).name.lastIndexOf('.')) + "_";

/**
 * The suffix (including file extension) in the translation filenames
 * @memberof DuAEF.Dutranslator.Settings
 * @type {string}
 * @default ".json"
 */
DuAEF.Dutranslator.Settings.suffix = ".json";

/**
 * The application name (root of the json translations)
 * @memberof DuAEF.Dutranslator.Settings
 * @type {string}
 * @default "duaef"
 */
DuAEF.Dutranslator.Settings.name = "duaef";

/**
 * The original languageId
 * @memberof DuAEF.Dutranslator.Settings
 */
DuAEF.Dutranslator.Settings.originalLanguageId = "en";

/**
 * The original language name
 * @memberof DuAEF.Dutranslator.Settings
 */
DuAEF.Dutranslator.Settings.originalLanguageName = "English";

/**
 * Load the list of available languages
 *
 * If the language id and or the language name can't be found in the file, the file name will be used
 * to determine the language id and the name will be set as the id.
 *
 * @return A success code
 * 0	Success
 * 1	One of the file haven't been correctly opened
 */
DuAEF.Dutranslator.getAvailable = function ()
{
	DuAEF.Dutranslator.languages = {};
	DuAEF.Dutranslator.languages[DuAEF.Dutranslator.Settings.originalLanguageId] = {
		"name": DuAEF.Dutranslator.Settings.originalLanguageName,
		"file": undefined
	};


	var folder = new Folder(DuAEF.Dutranslator.Settings.folder);

	languageFiles = folder.getFiles(DuAEF.Dutranslator.Settings.prefix + '*' + DuAEF.Dutranslator.Settings.suffix);

	for (var i = 0 ; i < languageFiles.length ; i++)
	{
		  var fileName = languageFiles[i].name;
		  var langId = langName = "";

		  var file = new File(folder.absoluteURI + "/" + fileName);
		  if(!file.open("r")) return 1; // Unable to open the file

		  while(langName == "" || langId == "" && !file.eof )
		  {
			  var line = file.readln();
			  var indexName = line.lastIndexOf("languageName");
			  var indexId = line.lastIndexOf("languageId");

			  var index;
			  if(indexName != -1 && langName == "") index = indexName;
			  else if(indexId != -1 && langId == "") index = indexId;
			  else continue;
			  line = line.substring(index, line.length);
			  line = line.substring(line.indexOf("\"") + 1, line.length);
			  line = line.substring(line.indexOf("\"") + 1, line.length);
			  line = line.substring(0, line.indexOf("\""));
			   if(indexName != -1 && langName == "") langName = line ;
			  else if(indexId != -1 && langId == "") langId = line ;
			  else continue;
		  }

		  file.close();


		  if(langId == "") langId = fileName.replace(DuAEF.Dutranslator.Settings.prefix, "").replace(DuAEF.Dutranslator.Settings.suffix, "");
		  if(langName == "") langName = langId;

		  DuAEF.Dutranslator.languages[langId] = {
			  "name": langName,
			  "file":  DuAEF.Dutranslator.Settings.folder + "/" + fileName
		  };

	}

}

/**
  * Returns the pretty name of a given language
  * @param {string} langId - The id of the request language
 */
DuAEF.Dutranslator.getPrettyName = function(langId)
{
	if(!DuAEF.Dutranslator.languages[langId]) return 1;
	return DuAEF.Dutranslator.languages[langId]["name"];
}

/**
  * Returns the language id of a given language name
  * @param {string} prettyName - The pretty name of the request language
 */
DuAEF.Dutranslator.getLanguageId = function(prettyName)
{
	for(var langId in DuAEF.Dutranslator.languages)
	{
		if(DuAEF.Dutranslator.languages[langId]["name"] == prettyName) return langId;
	}
	return 1;
}

/**
  * Returns a list containing pretty names of all languages
  * @param {string} langId - The id of the request language
 */
DuAEF.Dutranslator.getPrettyNames = function()
{
	var res = [];
	for(var langId in DuAEF.Dutranslator.languages)
	{
		res[res.length] = DuAEF.Dutranslator.languages[langId]["name"];
	}

	res.sort ();
	return res;
}

/**
 * Set the current language
 * @param {string} languageId - The id of the language to set
 * @return success code
 * 0	Everything went ok
 * 1	The file linked to the given id can't be opened
 * 2	The json content doesn't match a translation file
 */
DuAEF.Dutranslator.setLanguage = function (languageId)
{

	for (var langId in DuAEF.Dutranslator.languages)
	{
		if (langId == languageId)
		{
			DuAEF.Dutranslator.current = languageId;
			DuAEF.Dutranslator.currentName = DuAEF.Dutranslator.getPrettyName(languageId);

			if(languageId == DuAEF.Dutranslator.Settings.originalLanguageId) return 0;  // Default language, no translation


			var fPath = DuAEF.Dutranslator.languages[langId]["file"];
			var file = new File(fPath);

			var jsonData = DuAEF.DuJS.Fs.parseJSON(file);

			if(!jsonData[DuAEF.Dutranslator.Settings.name] ||
				jsonData[DuAEF.Dutranslator.Settings.name].length != 2 ||
				!jsonData[DuAEF.Dutranslator.Settings.name][1]["translations"]) return 2; // Wrong json format

			var translations = jsonData[DuAEF.Dutranslator.Settings.name][1]["translations"];
			DuAEF.Dutranslator.localizedStrings = translations;

			return 0;

		}
	}
}

/**
 * Set the current language with a given pretty name
 * @param {string} languageName - The pretty name of the language to set
 * @return success code
 * 0	Everything went ok
 * -1   Can't find any language with the given pretty name
 * >0  Call to setLanguage(languageId) failed
 */
DuAEF.Dutranslator.setPrettyLanguage = function (languageName)
{

	var langId = DuAEF.Dutranslator.getLanguageId(languageName);
	if(langId == 1) return -1;

	return DuAEF.Dutranslator.setLanguage(langId);
}

/**
 * Creates a file for translation with the given base strings.
 * @memberof DuAEF.Dutranslator
 * @param {Translation[]|strings} [translations=DuAEF.Dutranslator.localizedStrings] - The translations or source strings to be included in the translation file.
 * @param {File|string} file - The file or URI
 * @param {string} [appName="dutranslator"] - A name for the app using this translation file.
 * @param {string} [version="0.0"] - A version (as a string) for this translation file or app.
 * @param {string} [languageId=DuAEF.Dutranslator.current] - A version (as a string) for this translation file or app.
 * @param {string} [languageName=DuAEF.Dutranslator.currentName] - A version (as a string) for this translation file or app.
 */
DuAEF.Dutranslator.generateTranslationFile = function (file,translations,appName,version,languageId,languageName)
{
	if (!(file instanceof File)) file = new File(file);
	if (typeof translations === 'undefined') translations = DuAEF.Dutranslator.localizedStrings;
	if (typeof appName === 'undefined') appName = 'dutranslator';
	else appName = appName.toLowerCase();
	if (typeof version === 'undefined') version = '0.0';
	if (typeof languageId === 'undefined') languageId = DuAEF.Dutranslator.current;
	if (typeof languageName === 'undefined') languageName = DuAEF.Dutranslator.currentName;
	if (!translations.length) return;

	if (typeof translations[0] === 'string') translations = DuAEF.Dutranslator.generateTranslations(translations);

	var data = {};
	data[appName] = [];
	var metaData = {};
	metaData.languageId = languageId;
	metaData.languageName = languageName;
	metaData.version = version;
	data[appName].push(metaData);
	var translationsObject = {};
	translationsObject.translations = translations;
	data[appName].push(translationsObject);

	DuAEF.DuJS.Fs.saveJSON(data,file);
}

/**
 * Converts an Array of strings to an Array of empty translations
 * @memberof DuAEF.Dutranslator
 * @param {string[]} strings - The base strings to convert.
 * @return {Translation[]} The empty translations
 */
DuAEF.Dutranslator.generateTranslations = function (strings)
{
	DuAEF.DuJS.Array.removeDuplicates(strings);
	var translations = [];
	for (var i = 0, num = strings.length; i < num ; i++)
	{
		translations.push(new Translation(strings[i]));
	}
	return translations;
}

/**
 * Translate a given string based on the current seted language<br />
 * see {@link DuAEF.Dutranslator} for more details about the translation framework.
 * @function
 * @param {string} str - 		The text to be translated
 * @param {int} or {string} context - 	Can be an integer or a string which is related to contextId or context in a translation file
 * @param {string[]} args -	Args to format into the translated string, default is []<br />
 * For example, when calling tr("Welcome {#}", -1, "Paul"), the output will be "Welcome Paul"<br />
 * If too many args are given, there are ignored<br />
 * If not enough args are given, the {#} are replaced with ?
 * @return {string} The translated text or s if nothing is set or available
 */
function tr(str, context, args)
{
	var useContextId = true;
	if (DuAEF.DuJS.typeof(str) != 'string')
	{
		DuAEF.Debug.throwTypeError( str, "str", "String", "DuTranslator::tr()");
		return str;
	}
	if (typeof context === 'string' || context instanceof String) useContextId = false;
	if (typeof context === 'undefined') context = -1;
	else if (context < 0) context = -1;
	if (typeof args === 'undefined') args = [];
	if (typeof args === 'string' || args instanceof String) args = [args];

	var languageNumber = -1;
	var res = str;

	function getTranslationId( stri, noCapsNorSpaces )
	{
		noCapsNorSpaces = def (noCapsNorSpaces, false);

		for (var i = 0 ; i < DuAEF.Dutranslator.localizedStrings.length ; i++)
		{
			var localizedString = DuAEF.Dutranslator.localizedStrings[i];
			var testString = localizedString["source"];
			if (noCapsNorSpaces) testString = testString.replace(/[\s\n\r]+/g,'');
			if( testString == stri)
			{
				if (useContextId && context > -1)
				{
					if (localizedString["contextId"] == context)
					{
						return i;
					}
				}
				else if(!useContextId)
				{
					if (localizedString["context"] == context)
					{
						return i;
					}
				}
				else {
					return i;
				}
			}
		}

		return -1;
	}

	if (DuAEF.Dutranslator.current != DuAEF.Dutranslator.Settings.originalLanguageId)
	{
		var stringNumber = getTranslationId( str )
		
		if (stringNumber > -1) res = DuAEF.Dutranslator.localizedStrings[stringNumber]["translation"];
		if (!res) res = str;
		if (res == "") res = str;
	}

	while(res.indexOf("{#}") !== -1)
	{
		if(args.length < 1)
		{ // If no more args, replace with ?
			res = res.replace("{#}", "?"); // Will replace the first occurence
		}
		else
		{
			var arg = args.shift(); // Take the first arg and remove it
			res = res.replace("{#}", arg);
		}
	}

	return res;
}
// ==================== |------------| ====================
// ==================== | DuDebugLib | ====================
// ==================== |------------| ====================

/*
	DuDebugLib
  Library to with tools for debugging
	Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
	https://rainboxprod.coop

	_Contributors:_
		Nicolas Dufresne - Lead developer

	This file is part of DuAEF.

	DuAEF is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	DuAEF is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/


/**
* Tools for debugging
* @namespace
* @memberof DuAEF
*/
DuAEF.Debug = {};

/**
 * Set this attribute to a DebugLog you have created to automatically add some debug infos to the log (like catched errors).
 * @type {DebugLog|null}
 */
DuAEF.Debug.DebugLog = null;

/**
 * The log levels
 * @enum {int}
 * @readonly
 */
DuAEF.Debug.LogLevel =
{
	VERBOSE: 0,
	DEBUG: 1,
	WARNING: 2,
	CRITICAL: 3,
	FATAL: 4,
	NO_DEBUG: 5
}

/**
 * Logs a message to DuAEF.Debug.DebugLog if it has been set.
 * @param {string} message - The message to log
 * @param {DuAEF.Debug.LogLevel} [level=DuAEF.Debug.LogLevel.DEBUG] - The level of the message
 */
DuAEF.Debug.log = function (message,level)
{
	if ( DuAEF.Debug.DebugLog != null ) DuAEF.Debug.DebugLog.log( message,level );
}

/**
 * This methods shows an alert with an error thrown if DuAEF.debug is set to true, and logs it in DuAEF.Debug.DebugLog if it has been set.
 * @param {Error|string} error - An error thrown and catched
 */
DuAEF.Debug.error = function (error)
{
	var errorString = 'An error has occured in file\n' + error.fileName + '\nat line ' + error.line + '\n\n' + error.description;
	DuAEF.Debug.log( errorString, DuAEF.Debug.LogLevel.WARNING );
	if ( DuAEF.debug )
	{
		alert( errorString );
	}
}

/**
 * Runs a method/script safely, i.e. enclosed in a try...catch, and logs any error thrown.<br />
 * arguments can be added after the first parameter, they will be passed to the callback.<br />
 * The callback is enclosed in a function to make sure it does not create global variables.
 * @param {function|string} callback - The method to run, or a script as a string
 */
DuAEF.Debug.safeRun = function (callback)
{
	if (typeof callback === 'undefined') throw "Error: DuAEF.Debug.safeRun(callback): Invalid parameter: callback cannot be undefined";
	if (callback == '') throw "Error: DuAEF.Debug.safeRun(callback): Invalid parameter: callback cannot be an empty string";
	var call = callback;
	if (DuAEF.DuJS.typeof(callback) != 'string')
	{
		var args = [];
		for (var i = 1, num = arguments.length; i < num; i++)
		{
			args.push(arguments[i]);
		}
		var params = args.join(',');
		var call = 'callback(' + params + ');'
	}
	
	try
	{
		(function(){
			eval(call);
		})();
	}
	catch ( error )
	{
		DuAEF.Debug.error(error);
	}
}

/**
 * Inspects a javascript object and outputs all of its attributes
 * @param {object} obj - The object to inspect.
 * @param {boolean} [ownProperties=true] - Wether to inspect only the own properties of the object.
 * @return {string} The report. 
 */
DuAEF.Debug.inspect = function(obj, ownProperties)
{
	ownProperties = def(ownProperties, true, false);

	var report = "";
	for (var key in obj)
	{
		if (ownProperties && !obj.hasOwnProperty(key)) continue;
		report += key + " | type: " + typeof(obj[key]) + " | value: " + obj[key].toString() + "\n";
	}
	return report;
}

/**
 * Alerts a nice TypeError description, if {@link DuAEF.debug} is true.<br />
 * Note that it does not actually throws an error.
 * @param {any} variable The failing argument
 * @param {string} varName The failing argument name
 * @param {string} varType The expected type
 * @param {string} [functionName] The name or description of the function throwing the error.
 * @return {string} The (multiline) description for the error
 */
DuAEF.Debug.throwTypeError = function (variable, varName, varType, functionName)
{
	if (!DuAEF.debug) return;
	functionName = def (functionName, '');
	if (typeof functionName === 'Function') {
		functionName = func.toString().split('\n')[0];
	}

	var e = 'TypeError:\n';
	if (functionName != '') e += "in function " + functionName + "\n";
	e += "\n" + varName + " should be of the type " + varType + "\n";
	e += "but it is of the type " + DuAEF.DuJS.typeof(variable);
	if (typeof variable !== 'undefined') try { e += "and has value: " + variable.toString(); } catch(e) {};
	alert(e);
}


/**
 * Constructs a new debug logger
 * @class DebugLog
 * @classdesc A logger for debugging purposes: writes debug messages to a file, with date and type
 * @param	{string|File} pathOrFile - The log file.
 * @param	{boolean} [clear=true] - Whether to clear the previous log file before starting
 * @param	{DuAEF.Debug.LogLevel}	[logLevel=DuAEF.Debug.LogLevel.DEBUG] -  The log level.
 * @param	{boolean}	[enabled=DuAEF.debug] -  true to enable the log and start recording
 * @property {DuAEF.Debug.LogLevel} level - The log level.
 * @property {File}	file - The log file.
 * @property {boolean}	running - true if the timer is running, false if it is stopped.
 */
function DebugLog(pathOrFile,clear,logLevel,enabled)
{
	if (!(pathOrFile instanceof File)) this.file = new File(pathOrFile);
	else this.file = pathOrFile;
	this.file.encoding = 'UTF-8';

	if (logLevel == undefined) logLevel = DuAEF.Debug.LogLevel.DEBUG;
	this.level = logLevel;

	if (enabled == undefined) enabled = DuAEF.debug;
	this.enabled = enabled;

	if (clear == undefined) clear = true;
	var openOption = 'a';
	if (clear || !this.file.exists) openOption = 'w';
	if (this.level <= DuAEF.Debug.LogLevel.DEBUG && DuAEF.DuAE.App.hasFilesAndNetworkAccess)
	{
		if (this.file.open(openOption))
		{
			var currentDate = new Date();
			this.file.writeln('[' + currentDate.toString() + '] == Debugger started. ==');
			this.file.close();
		}
	}

	this.elapsed = 0;
	this.running = false;

	this.log( "\n=========== NEW LOG =============\n=================================" , DuAEF.Debug.LogLevel.NO_DEBUG);
}

/**
* Logs a message
* @param {string} message - The message to log
* @param {DuAEF.Debug.LogLevel} [level=DuAEF.Debug.LogLevel.DEBUG] - The level of the message
*/
DebugLog.prototype.log = function (message,level)
{
	if (typeof level === 'undefined') level = DuAEF.Debug.LogLevel.DEBUG;

	if (!this.enabled) return;
	if (level < this.level) return;
	if (!DuAEF.DuAE.App.hasFilesAndNetworkAccess) return;

	if (!this.file.open('a')) return;

	if (level == undefined) level = DuAEF.Debug.DEBUG;

	var currentDate = new Date();
	var levelString = " || Debug info || ";
	if (level == DuAEF.Debug.LogLevel.WARNING) levelString = " || Warning || ";
	else if (level == DuAEF.Debug.LogLevel.CRITICAL) levelString = " || Critical || ";
	else if (level == DuAEF.Debug.LogLevel.FATAL) levelString = " || Fatal || ";
	this.file.writeln('[' + currentDate.toString() + ']' + levelString + message );
	this.file.close();
}

/**
* Starts the debugger timer.
* @param {string} [message] - A message to display in the log
* @param {DuAEF.Debug.LogLevel} [level=DuAEF.Debug.LogLevel.VERBOSE] - The level of the message
*/
DebugLog.prototype.startTimer = function(message, level)
{
	if (typeof level === 'undefined') level = DuAEF.Debug.LogLevel.VERBOSE;

	if (!this.enabled) return;

	if (message == undefined) message = '';

	if (level >= this.level && DuAEF.DuAE.App.hasFilesAndNetworkAccess)
	{
		if (this.file.open('a'))
		{
			var currentDate = new Date();
			this.file.writeln('[' + currentDate.toString() + '] == Timer started. == ' + message);
			this.file.close();
		}
	}

	if (!this.running) this.elapsed = 0;
	this.running = true;
	$.hiresTimer;
}

/**
* Stops the debugger timer.
* @param {string} [message] - A message to display in the log
* @param {DuAEF.Debug.LogLevel} [level=DuAEF.Debug.LogLevel.DEBUG] - The level of the message
*/
DebugLog.prototype.stopTimer = function(message, level)
{
	if (typeof level === 'undefined') level = DuAEF.Debug.LogLevel.DEBUG;
	if (!this.enabled) return;
	if (!this.running) return;

	this.elapsed += Math.round($.hiresTimer/1000);

	if (typeof message === 'undefined') message = '';

	if (level >= this.level && DuAEF.DuAE.App.hasFilesAndNetworkAccess)
	{
		if (this.file.open('a'))
		{
			var currentDate = new Date();
			this.file.writeln('[' + currentDate.toString() + '] == Timer stopped == Time elapsed | ' + this.elapsed + 'ms | == ' + message);
			this.file.close();
		}
	}

	this.elapsed = 0;
	this.running = false;
	$.hiresTimer;
}

/**
* Checks the time elapsed since the timer has started<br />
* If the timer is not running, it will be started.
* @param {string} message - A message to display in the log
* @param {DuAEF.Debug.LogLevel} [level=DuAEF.Debug.LogLevel.DEBUG] - The level of the message
* @return {int} The time elapsed in milliseconds
*/
DebugLog.prototype.checkTimer = function(message, level)
{
	if (typeof level === 'undefined') level = DuAEF.Debug.LogLevel.DEBUG;
	if (!this.running) this.startTimer();
	this.elapsed += Math.round($.hiresTimer/1000);

	if (!this.enabled) return -1;

	if (level >= this.level && DuAEF.DuAE.App.hasFilesAndNetworkAccess)
	{
		if (this.file.open('a'))
		{
			if (message == undefined) message = '';

			var currentDate = new Date();
			this.file.writeln('[' + currentDate.toString() + '] == Time elapsed | ' + this.elapsed + 'ms | == ' + message);
			this.file.close();
		}
	}

	return this.elapsed;
}
// ==================== |-------------| ====================
// ==================== | DuAECoreLib | ====================
// ==================== |-------------| ====================

/**
	* Constructs a new KeySpatialProperty
	* @class KeySpatialProperties
	* @classdesc Spatial properties of a {@linkcode KeyFrame}.
	* @property {float[]|null}	  [inTangent=null]     - The incoming spatial tangent
	* @property {float[]|null}    [outTangent=null]            -  The outgoing spatial tangent
	* @property {boolean}      [_continuous=true]         - true if the specified keyframe has spatial continuity
	* @property {boolean}	[_autoBezier=false]			- true if the specified keyframe has temporal auto-Bezier interpolation
	* @property {boolean}	[_roving=false]	- true if the specified keyframe is roving
*/
function KeySpatialProperties (){
	this.inTangent = null;
	this.outTangent = null;
	this._continuous = true;
	this._autoBezier = false;
	this._roving = false;
}

/**
	 Constructs a new KeyFrame
	* @class KeyFrame
	* @classdesc Properties of an After Effects Keyframe, as returned by {@linkcode DuAEF.DuAE.Property.getKeyFrames} or {@linkcode DuAEF.DuAE.Property.getKeyFrameAtIndex} or {@linkcode DuAEF.DuAE.Property.getKeyFrameAtTime}.
	* @property {float}	  _time     - The keyframe time
	* @property {null|folat[]|float|MarkerValue|int|Shape|TextDocument}    value  -  The keyframe value
	* @property {KeyframeInterpolationType}   _inInterpolationType  - The incoming temporal interpolation type
	* @property {KeyframeInterpolationType}	_outInterpolationType		- The outgoing temporal interpolation type
	* @property {boolean}	_spatial	- true if this keyframe has a spatial value
	* @property {KeySpatialProperties}	spatialProperties	- the spatial properties {@linkcode KeySpatialProperties} of this keyframe
	* @property {KeyframeEase[]}	inEase	- The incoming temporal ease. The number of objects in the Array depends on the value type
	* @property {KeyframeEase[]}	outEase	- The outgoing temporal ease. The number of objects in the Array depends on the value type
	* @property {boolean}	_continuous	- true if the keyframe has temporal continuity
	* @property {boolean}	_autoBezier	- true if the keyframe has temporal auto-Bezier interpolation
	* @property {int}		_index	- The index of the keyFrame. Warning: not updated when another key frame is added on the property some time before this key._time!
*/
function KeyFrame(){
	this._time = 0;
	this.value = null;
	this._inInterpolationType = KeyframeInterpolationType.LINEAR;
	this._outInterpolationType = KeyframeInterpolationType.LINEAR;
	this._spatial = false;
	this.spatialProperties = new KeySpatialProperties();
	this.inEase = null;
	this.outEase = null;
	this._continuous = false;
	this._autoBezier = false;
	this._index = 0;
}

/**
	* Constructs a new animation
	* @class PropertyAnim
	* @classdesc Describes the animation of an After Effects property
	* @property {string}	  [_name=""]     - The property name
	* @property {string}    [_matchName=""]  - The property matchName
	* @property {KeyFrame[]}   [keys=[]]  - The keyframes of the animation
	* @property {null|float[]|float|MarkerValue|int|Shape|TextDocument}	[startValue=null]		- The value at the beginning of the animation
	* @property {string}	[expression=""]		- The expression on the property, if any.
	* @property {string}   [type="anim"]  - Read Only.
	* @property {float}   startTime  - Read Only. The starting time of the animation.
	* @property {float}   endTime  - Read Only. The ending time of the animation.
*/
function PropertyAnim()
{
	this._name = "";
	this._matchName = "";
	this.keys = [];
	this.startValue = null;
	this.type = "anim";
	this.expression = "";
	this.dimensions = 0;
	this.startTime = null;
	this.endTime = null;
}

/**
	* Constructs a new group animation
	* @class PropertyGroupAnim
	* @classdesc Contains all PropertyAnim from an After Effects PropertyGroup
	* @property {string}	  [_name=""]     - The property name
	* @property {string}    [_matchName=""]  - The property matchName
	* @property {PropertyAnim[]|PropertyGroupAnim[]}   [anims=[]]  - The animations in the group
	* @property {string}   [type="group"]  - Read Only.
	* @property {float}   startTime  - Read Only. The starting time of the animation.
	* @property {float}   endTime  - Read Only. The ending time of the animation.
*/
function PropertyGroupAnim()
{
	this._name = "";
	this._matchName = "";
	this.anims = [];
	this.type = "group";
	this.startTime = null;
	this.endTile = null;
}

/**
	* Constructs a new layer animation
	* @class LayerAnim
	* @classdesc Contains all PropertyGroupAnim from an After Effects Layer
	* @property {string}	  [_name=""]     - The property name
	* @property {int}    [_index=""]  - The index of the layer
	* @property {PropertyGroupAnim[]} [anims=[]] - All the animations of the layer
	* @property {float} [firstKeyFrameTime=0] - The time of the first keyframe
	* @property {string}   [type="layer"]  - Read Only.
	* @property {float}   startTime  - Read Only. The starting time of the animation.
	* @property {float}   endTime  - Read Only. The ending time of the animation.
*/
function LayerAnim()
{
	this._name = "";
	this._index = 0;
	this.anims = [];
	this.type = 'layer';
	this.startTime = null;
	this.endTile = null;
}

/**
	* Constructs a new PropertyInfo
	* @example
	* var propInfo = new PropertyInfo(property);
	* layer("ADBE effect parade").addProperty("ADBE layer control"); //now the property object is broken
	* property = propInfo.getProperty(); // You can retrieve the property like this, fixed if it's an effect
	* @class PropertyInfo
	* @classdesc Get some handy informations about a property<br />
	* This class is able to "fix" effects properties which have been broken by
	* the addition of another effect on the same layer, as long as the class has been
	* instanciated before the effect has been broken.
	* @param {PropertyBase|PropertyInfo} property - The property. If a PropertyInfo is provided, the constructor returns it (it does not make a copy).<br />
	* This makes it easy to avoid type checking, as you can always pass any property or PropertyInfo to the constructor to be sure to handle a PropertyInfo, without any impact on performance.<br />
	* @example
	* myFunction (prop) //This function can be passed either a property or a PropertyInfo
	* {
	* propInfo = new PropertyInfo(prop);
	* prop = propInfo.getProperty();
	* }
	* @property {int} index - The propertyIndex
	* @property {boolean} isEffect - true if this is an effect (sub)property
	* @property {boolean} riggable  - true if this prop can be rigged (it's a value which can set expressions)
	* @property {Layer} layer - The layer containing the property
	* @property {int} dimensions - The number of dimensions, 0 if this is not a dimensionnal value (text, shape...)
	* @property {string} name - The name of the property
	* @property {string} matchName - The matchName of the property
	* @property {PropertyGroup|null} effect - The effect containing the property
	* @property {boolean} editable - true if the value of the property can be changed
	* @property {boolean} numerical - true if the value is a number or an array of numbers
	* @property {boolean} isPercent - true if the unit is a percentage
	* @property {boolean} isAngle - true if the unit is a degree
	* @property {boolean} isPixels - true if the unit is a pixel
	* @property {int} numKeys - the number of keyframes on the property
	* @property {bool} group - true if the property is a PropertyGroup
	* @property {string} unitsText - the name of the unit (localized)
	* @property {string} unit - the abbreviated unit, as displayed in the UI (localized)
	* @property {string} expression - the expression in the property
*/
function PropertyInfo(property)
{
	if (property instanceof PropertyInfo) return property;
	
	var expressionEnabled = property.expressionEnabled;
	if (property.propertyType == PropertyType.PROPERTY)
	{
		this.numKeys = property.numKeys;
		this.group = false;
	}
	else
	{
		this.group = true;
		this.numKeys = 0;
	}
	this.property = property;
	this.name = property.name;
	this.matchName = property.matchName;
	this.index = property.propertyIndex;
	this.parentIndices  = [this.index];
	this.isEffect = property.isEffect;
	this.effect = null;
	if (!this.isEffect)
	{
		var parentProp = property;
		while (parentProp.parentProperty)
		{
			parentProp = parentProp.parentProperty;
			this.isEffect = parentProp.isEffect;
			this.parentIndices.unshift(parentProp.propertyIndex);
			if (this.isEffect) this.effect = parentProp;
			if (this.isEffect) break;
		}
	}
	else this.effect = property;

	this.riggable = DuAEF.DuAE.Property.isRiggable(property);
	this.numerical = DuAEF.DuAE.Property.isNumerical(property);
	this.editable = DuAEF.DuAE.Property.isEditable(property);
	this.layer = DuAEF.DuAE.Property.getLayer(property);
	this.comp = this.layer.containingComp;
	this.dimensions = DuAEF.DuAE.Property.getDimensions(property);
	this.unitsText = property.unitsText;
	this.isPercent = this.unitsText == localize("$$$/AE/TLW/GraphEditor/PercentSource=percent");
	this.isAngle = this.unitsText == localize("$$$/AE/TLW/GraphEditor/DegreesSource=degrees");
	this.isPixels = this.unitsText == localize("$$$/AE/TLW/GraphEditor/PixelsSource=pixels");
	this.unit = "";
	if (this.isPercent) this.unit = localize("$$$/AE/TLW/GraphEditor/PercentDest=%");
	if (this.isAngle) this.unit = localize("$$$/AE/TLW/GraphEditor/DegreesDest=°");
	if (this.isPixels) this.unit = localize("$$$/AE/TLW/GraphEditor/PixelsDest=px");

	if (this.riggable) {
		this.expression = property.expression;
	}
}

function PropertyExpression(property)
{
	if (property instanceof PropertyExpression)
	{
		property.expression = property.getProperty().expression;
		return property;
	}

	this.property = property;
	this.empty = false;

	if ( !DuAEF.DuAE.Property.isRiggable(property) ) {
		this.empty = true;
		return;
	} 
	if (property.expression == '') {
		this.empty = true;
		return;
	}
	
	this.parentIndices  = [property.propertyIndex];
	this.isEffect = property.isEffect;
	if (!this.isEffect)
	{
		var parentProp = property;
		while (parentProp.parentProperty)
		{
			parentProp = parentProp.parentProperty;
			this.isEffect = parentProp.isEffect;
			this.parentIndices.unshift(parentProp.propertyIndex);
			if (this.isEffect) break;
		}
	}
	this.layer = DuAEF.DuAE.Property.getLayer(property);
	this.expression = property.expression;

	this.changed = false;
}

/**
	* Gets the original Property<br />
	* Always works even if this PropertyInfo represents an effect which has been broken<br />
	* ---AE Hack---
	* @memberof PropertyInfo
	* @return {PropertyBase} The property
	* @todo When returning an effect, check if the matchName corresponds too.
*/
PropertyInfo.prototype.getProperty = function()
{
	if (this.isEffect)
	{
		var parentProp = this.layer("ADBE Effect Parade");
		for (var i = 0 ; i < this.parentIndices.length ; i++)
		{
			parentProp = parentProp(this.parentIndices[i]);
		}
		this.property = parentProp;
	}
	return this.property;
}

PropertyExpression.prototype.getProperty = function()
{
	if (this.isEffect)
	{
		var parentProp = this.layer("ADBE Effect Parade");
		for (var i = 0 ; i < this.parentIndices.length ; i++)
		{
			parentProp = parentProp(this.parentIndices[i]);
		}
		this.property = parentProp;
	}
	return this.property;
}

/**
 * After Effects Tools
 * @author Nicolas Dufresne, Kevin Masson and contributors
 * @copyright 2017,2018 Nicolas Dufresne, Rainbox Productions<br />
 * {@link https://rainboxprod.coop}
 * @namespace
 * @memberof DuAEF
 * @license GPL-3.0 <br />
 * DuAEF is free software: you can redistribute it and/or modify<br />
 * it under the terms of the GNU General Public License as published by<br />
 * the Free Software Foundation, either version 3 of the License, or<br />
 * (at your option) any later version.<br />
 *<br />
 * DuAEF is distributed in the hope that it will be useful,<br />
 * but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br />
 * GNU General Public License for more details.<br />
 *<br />
 * You should have received a copy of the GNU General Public License<br />
 * along with DuAEF. If not, see {@link http://www.gnu.org/licenses/}.
*/
DuAEF.DuAE = {};


DuAEF.DuAE.postInit = function()
{


// ==================== |-------------| ====================
// ==================== | duaef_magic | ====================
// ==================== |-------------| ====================

var duaef_magic = {"binAsString":"RIFX\x00\x00\u00BA\fFaFXhead\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00Q\x00\x00\x00\b\x01\x00\x00\x00LIST\x00\x00\u00B9\u00E8bescbeso\x00\x00\x008\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00]\u00A8\x00\x1D\u00F8R\x00\x00\x00\x04\x00\x01\x00\x01\x01\u00F4\x01\u00F4?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u00FF\u00FF\u00FF\u00FFLIST\x00\x00\x00dtdsptdot\x00\x00\x00\x04\u00FF\u00FF\u00FF\u00FFtdpl\x00\x00\x00\x04\x00\x00\x00\x01LIST\x00\x00\x00@tdsitdix\x00\x00\x00\x04\u00FF\u00FF\u00FF\u00FFtdmn\x00\x00\x00(ADBE Root Vectors Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdsn\x00\x00\x00\tContents\x00\x00LIST\x00\x00\x00dtdsptdot\x00\x00\x00\x04\u00FF\u00FF\u00FF\u00FFtdpl\x00\x00\x00\x04\x00\x00\x00\x01LIST\x00\x00\x00@tdsitdix\x00\x00\x00\x04\u00FF\u00FF\u00FF\u00FFtdmn\x00\x00\x00(ADBE End of path sentinel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\u00B8\u00B2tdgptdsb\x00\x00\x00\x04\x00\x00\x04\x01tdsn\x00\x00\x00\tContents\x00\x00tdmn\x00\x00\x00(ADBE Vector Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00j\u00BAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\bGroup 1\x00tdmn\x00\x00\x00(ADBE Vector Blend Mode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vectors Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00(\u00E6tdgptdsb\x00\x00\x00\x04\x00\x00\x04\x01tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u00F4tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 1\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x02fom-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x01\u00A8omksLIST\x00\x00\x01\u009Cshapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C2pN\u00F8\u00C1:\u00DC@\u00C2\x11H\u00F0AA<\x00\x01\x00\x00\x00LIST\x00\x00\x01hlistlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\t\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x01 \u00C2\x12X\u00F0\u00C0\u00E5;\u00C0\u00C2\x12X\u00F0\u00C0\u00E5;\u00C0\u00C2^>\u00E0A<\u00FC \u00C2^>\u00E0A<\u00FC \u00C2^\u00F4\u00F0A?\u00D1\u00E0\u00C2_\u00E5\u00F0AA<\x00\u00C2`\u00E6\u00F0AA<\x00\u00C2a\u00E7\u00F0AA<\x00\u00C2b\u00D8\u00F0A?\u00D1\u00E0\u00C2c\u008F\x00A<\u00FC \u00C2c\u008F\x00A<\u00FC \u00C2o>\u00E8A\x0E>\x00\u00C2o>\u00E8A\x0E>\x00\u00C2o\u00F3\u00F0A\x0Bg\u00C0\u00C2pN\u00F8A\x07\u00A2\x00\u00C2pN\u00F8A\x03\u009D\u00E0\u00C2pN\u00F8@\u00FF4@\u00C2o\u00F3\u00F0@\u00F7\u00A7\u00C0\u00C2o>\u00E8@\u00F1\u00FC@\u00C2o>\u00E8@\u00F1\u00FC@\u00C2#X\x00\u00C16\u009B\u00E0\u00C2#X\x00\u00C16\u009B\u00E0\u00C2\"\u00A2\u00F0\u00C19r \u00C2!\u00B1\x00\u00C1:\u00DC@\u00C2 \u00AF\u00F0\u00C1:\u00DC@\u00C2\x1F\u00AE\u00F0\u00C1:\u00DC@\u00C2\x1E\u00BC\u00F0\u00C19r \u00C2\x1E\x07\u00F0\u00C16\u009B\u00E0\u00C2\x1E\x07\u00F0\u00C16\u009B\u00E0\u00C2\x12X\u00F0\u00C1\x07\u00DD\u00E0\u00C2\x12X\u00F0\u00C1\x07\u00DD\u00E0\u00C2\x11\u00A2\u00F0\u00C1\x05\b\x00\u00C2\x11H\u00F0\u00C1\x01B \u00C2\x11H\u00F0\u00C0\u00FA|@\u00C2\x11H\u00F0\u00C0\u00F2t\x00\u00C2\x11\u00A2\u00F0\u00C0\u00EA\u00E8@omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u0094tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 2\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x02\x06om-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x01HomksLIST\x00\x00\x01<shapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C2jX\u00F0\u00C1A<\x00\u00C2[<\u00F0\u00C1\x04\u00CB\u00C0\x01\x00\x00\x00LIST\x00\x00\x01\blistlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x00\u00C0\u00C2[<\u00F0\u00C1#\x03\u00E0\u00C2[<\u00F0\u00C1#\x03\u00E0\u00C2a\x04\u00F0\u00C1\x1B\u00ED\u00C0\u00C2a\x04\u00F0\u00C1\x1B\u00ED\u00C0\u00C2a\x04\u00F0\u00C1\x1B\u00ED\u00C0\u00C2b\u00CB\x00\u00C1\x04\u00CB\u00C0\u00C2b\u00CB\x00\u00C1\x04\u00CB\u00C0\u00C2b\u00CB\x00\u00C1\x04\u00CB\u00C0\u00C2d\u008F\u00E0\u00C1\x1B\u00ED\u00C0\u00C2d\u008F\u00E0\u00C1\x1B\u00ED\u00C0\u00C2d\u008F\u00E0\u00C1\x1B\u00ED\u00C0\u00C2jX\u00F0\u00C1#\x03\u00E0\u00C2jX\u00F0\u00C1#\x03\u00E0\u00C2jX\u00F0\u00C1#\x03\u00E0\u00C2d\u008F\u00E0\u00C1*\x1A\x00\u00C2d\u008F\u00E0\u00C1*\x1A\x00\u00C2d\u008F\u00E0\u00C1*\x1A\x00\u00C2b\u00CB\x00\u00C1A<\x00\u00C2b\u00CB\x00\u00C1A<\x00\u00C2b\u00CB\x00\u00C1A<\x00\u00C2a\x04\u00F0\u00C1*\x1A\x00\u00C2a\x04\u00F0\u00C1*\x1A\x00\u00C2a\x04\u00F0\u00C1*\x1A\x00\u00C2[<\u00F0\u00C1#\x03\u00E0omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u0094tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 3\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x02\x06om-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x01HomksLIST\x00\x00\x01<shapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C2_\x02\u00E0\u00C12  \u00C2@\u00CB\x00\u00C0e\x00\u0080\x01\x00\x00\x00LIST\x00\x00\x01\blistlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x00\u00C0\u00C2@\u00CB\x00\u00C0\u00EB`\x00\u00C2@\u00CB\x00\u00C0\u00EB`\x00\u00C2L\\\u00E0\u00C0\u00CF\f@\u00C2L\\\u00E0\u00C0\u00CF\f@\u00C2L\\\u00E0\u00C0\u00CF\f@\u00C2O\u00E6\u00F0\u00C0e\x00\u0080\u00C2O\u00E6\u00F0\u00C0e\x00\u0080\u00C2O\u00E6\u00F0\u00C0e\x00\u0080\u00C2Sq\u00E0\u00C0\u00CF\f@\u00C2Sq\u00E0\u00C0\u00CF\f@\u00C2Sq\u00E0\u00C0\u00CF\f@\u00C2_\x02\u00E0\u00C0\u00EB`\x00\u00C2_\x02\u00E0\u00C0\u00EB`\x00\u00C2_\x02\u00E0\u00C0\u00EB`\x00\u00C2Sq\u00E0\u00C1\x03\u00DA \u00C2Sq\u00E0\u00C1\x03\u00DA \u00C2Sq\u00E0\u00C1\x03\u00DA \u00C2O\u00E6\u00F0\u00C12  \u00C2O\u00E6\u00F0\u00C12  \u00C2O\u00E6\u00F0\u00C12  \u00C2L\\\u00E0\u00C1\x03\u00DA \u00C2L\\\u00E0\u00C1\x03\u00DA \u00C2L\\\u00E0\u00C1\x03\u00DA \u00C2@\u00CB\x00\u00C0\u00EB`\x00omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u0094tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 4\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x02\x06om-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x01HomksLIST\x00\x00\x01<shapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C2D\u0093\x00\u00C1A<\x00\u00C25v\u00F0\u00C1\x04\u00CB\u00C0\x01\x00\x00\x00LIST\x00\x00\x01\blistlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x00\u00C0\u00C25v\u00F0\u00C1#\x03\u00E0\u00C25v\u00F0\u00C1#\x03\u00E0\u00C2;>\u00E0\u00C1\x1B\u00ED\u00C0\u00C2;>\u00E0\u00C1\x1B\u00ED\u00C0\u00C2;>\u00E0\u00C1\x1B\u00ED\u00C0\u00C2=\x04\u00F0\u00C1\x04\u00CB\u00C0\u00C2=\x04\u00F0\u00C1\x04\u00CB\u00C0\u00C2=\x04\u00F0\u00C1\x04\u00CB\u00C0\u00C2>\u00C9\u00F0\u00C1\x1B\u00ED\u00C0\u00C2>\u00C9\u00F0\u00C1\x1B\u00ED\u00C0\u00C2>\u00C9\u00F0\u00C1\x1B\u00ED\u00C0\u00C2D\u0093\x00\u00C1#\x03\u00E0\u00C2D\u0093\x00\u00C1#\x03\u00E0\u00C2D\u0093\x00\u00C1#\x03\u00E0\u00C2>\u00C9\u00F0\u00C1*\x1A\x00\u00C2>\u00C9\u00F0\u00C1*\x1A\x00\u00C2>\u00C9\u00F0\u00C1*\x1A\x00\u00C2=\x04\u00F0\u00C1A<\x00\u00C2=\x04\u00F0\u00C1A<\x00\u00C2=\x04\u00F0\u00C1A<\x00\u00C2;>\u00E0\u00C1*\x1A\x00\u00C2;>\u00E0\u00C1*\x1A\x00\u00C2;>\u00E0\u00C1*\x1A\x00\u00C25v\u00F0\u00C1#\x03\u00E0omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x034tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 5\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\u00A6om-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x00\u00E8omksLIST\x00\x00\x00\u00DCshapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C21\u00FA\u00E0\u00C1\x16\u0080\x00\u00C2\x1A^\u00F0\u00C0`G\u0080\x01\x00\x00\x00LIST\x00\x00\x00\u00A8listlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00\f\x00\x00\x00\x03\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x00`\u00C2\x1A^\u00F0\u00C0\u00FA|@\u00C2\x1A^\u00F0\u00C0\u00FA|@\u00C2 \u00AF\u00F0\u00C1\x16\u0080\x00\u00C2 \u00AF\u00F0\u00C1\x16\u0080\x00\u00C2 \u00AF\u00F0\u00C1\x16\u0080\x00\u00C21\u00FA\u00E0\u00C0\u00A2\u00A8\u0080\u00C21\u00FA\u00E0\u00C0\u00A2\u00A8\u0080\u00C21\u00FA\u00E0\u00C0\u00A2\u00A8\u0080\u00C2+\u00AA\u00F0\u00C0`G\u0080\u00C2+\u00AA\u00F0\u00C0`G\u0080\u00C2+\u00AA\u00F0\u00C0`G\u0080\u00C2\x1A^\u00F0\u00C0\u00FA|@omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u0094tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Path 6\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x02\x06om-sLIST\x00\x00\x00\u00AAtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x07\x00\x01\x00\x02\x00\x07\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00\x04\x00\x00\x00\x00LIST\x00\x00\x01HomksLIST\x00\x00\x01<shapshph\x00\x00\x00\x18\u00B3\u00DE\x02\x00\u00C2\x1E\u00CC\u00F0\u00C0(\u008F\u0080\u00C2\x0F\u00B1\x00?\u0092`\x00\x01\x00\x00\x00LIST\x00\x00\x01\blistlhd3\x00\x00\x004\x00\u00D0\x0B\u00EE\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\b\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ldat\x00\x00\x00\u00C0\u00C2\x0F\u00B1\x00\u00BF>\u00C2\x00\u00C2\x0F\u00B1\x00\u00BF>\u00C2\x00\u00C2\x15x\u00F0\u00BE\u009A\u00C0\x00\u00C2\x15x\u00F0\u00BE\u009A\u00C0\x00\u00C2\x15x\u00F0\u00BE\u009A\u00C0\x00\u00C2\x17>\u00E0?\u0092`\x00\u00C2\x17>\u00E0?\u0092`\x00\u00C2\x17>\u00E0?\u0092`\x00\u00C2\x19\x03\u00F0\u00BE\u009A\u00C0\x00\u00C2\x19\x03\u00F0\u00BE\u009A\u00C0\x00\u00C2\x19\x03\u00F0\u00BE\u009A\u00C0\x00\u00C2\x1E\u00CC\u00F0\u00BF>\u00C2\x00\u00C2\x1E\u00CC\u00F0\u00BF>\u00C2\x00\u00C2\x1E\u00CC\u00F0\u00BF>\u00C2\x00\u00C2\x19\x03\u00F0\u00BF\u0098\x0F\x00\u00C2\x19\x03\u00F0\u00BF\u0098\x0F\x00\u00C2\x19\x03\u00F0\u00BF\u0098\x0F\x00\u00C2\x17>\u00E0\u00C0(\u008F\u0080\u00C2\x17>\u00E0\u00C0(\u008F\u0080\u00C2\x17>\u00E0\u00C0(\u008F\u0080\u00C2\x15x\u00F0\u00BF\u0098\x0F\x00\u00C2\x15x\u00F0\u00BF\u0098\x0F\x00\u00C2\x15x\u00F0\u00BF\u0098\x0F\x00\u00C2\x0F\u00B1\x00\u00BF>\u00C2\x00omtn\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Ellipse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u00BAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x0FEllipse Path 1\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Size\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D2@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000@(\x00\x00\x00\x00\x00\x02@!fffffe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Ellipse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u00BAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x0FEllipse Path 2\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Size\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D2@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000@4\x19\u0099\u0099\u0099\u0099\u009B@!fffffe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Ellipse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x03\u00BAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x0FEllipse Path 3\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Size\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D2@\x18\u00CC\u00CC\u00CC\u00CC\u00CC\u00D1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Ellipse Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000@<\x19\u0099\u0099\u0099\u0099\u009B@!fffffe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Graphic - Fill\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x05\u00C6tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Fill 1\x00\x00tdmn\x00\x00\x00(ADBE Vector Blend Mode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Composite Order\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Rule\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Color\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Opacity\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Transform Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\b\ftdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vector Anchor\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000\u00C0H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Scale\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@\x7F\u00E0\x00\x00\x00\x00\x00@\x7F\u00E0\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Skew\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0U@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@U@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Skew Axis\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Rotation\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Group Opacity\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Materials Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x007\u00CAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00M6tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\bGroup 2\x00tdmn\x00\x00\x00(ADBE Vector Blend Mode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vectors Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x0Bbtdgptdsb\x00\x00\x00\x04\x00\x00\x04\x01tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape - Rect\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x04\u00E2tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x11Rectangle Path 1\x00\x00tdmn\x00\x00\x00(ADBE Vector Shape Direction\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Rect Size\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00 \x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@o \x00\x00\x00\x00\x00@d \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Rect Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Rect Roundness\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Graphic - Fill\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x05\u00C6tdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x07Fill 1\x00\x00tdmn\x00\x00\x00(ADBE Vector Blend Mode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Composite Order\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Rule\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Color\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Fill Opacity\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Transform Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\b\ftdgptdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vector Anchor\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Position\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00D6tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x0F\x00\x03\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Scale\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x16tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x02\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00P@Y\x00\x00\x00\x00\x00\x00@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0\u00DF@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\u00DF@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Skew\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\u00C0U@\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@U@\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Skew Axis\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Rotation\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00CEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Group Opacity\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x01tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vector Materials Group\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x007\u00CAtdgptdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Front IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Bevel IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Side IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back RGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x01\x06tdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x04\x00\x07\x00\x00\x00\x02\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00`@o\u00E0\x00\x00\x00\x00\x00@o\u00E0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Ambient\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Diffuse\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Specular\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Shininess\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Metal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Reflection\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Gloss\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(@Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Fresnel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back Xparency\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back XparRoll\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\x00\x01\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@Y\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Vec3D Back IOR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LIST\x00\x00\x00\u00EEtdbstdsb\x00\x00\x00\x04\x00\x00\x00\x03tdsn\x00\x00\x00\x02\x00\x00tdb4\x00\x00\x00|\u00DB\u0099\x00\x01\x00\x01\x00\x00\u00FF\u00FF\u00FF\u00FF\x00\x00]\u00A8?\x1A6\u00E2\u00EB\x1CC-?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00cdat\x00\x00\x00(?\u00F0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdum\x00\x00\x00\b?\u00F0\x00\x00\x00\x00\x00\x00tduM\x00\x00\x00\b@\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00tdmn\x00\x00\x00(ADBE Group End\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<?xpacket begin=\"\u00EF\u00BB\u00BF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 5.3-c011 66.146227, 2012/04/10-09:44:09        \">\n   <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n      <rdf:Description rdf:about=\"\"\n            xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n         <dc:format>application/vnd.adobe.aftereffects.preset-animation</dc:format>\n      </rdf:Description>\n      <rdf:Description rdf:about=\"\"\n            xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\n         <xmp:CreatorTool>Adobe After Effects CS6 (Windows)</xmp:CreatorTool>\n         <xmp:CreateDate>2018-04-04T19:04:33+02:00</xmp:CreateDate>\n         <xmp:MetadataDate>2018-04-04T19:04:33+02:00</xmp:MetadataDate>\n         <xmp:ModifyDate>2018-04-04T19:04:33+02:00</xmp:ModifyDate>\n      </rdf:Description>\n      <rdf:Description rdf:about=\"\"\n            xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\"\n            xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\">\n         <xmpMM:InstanceID>xmp.iid:0EF8588D2938E811ADF7A3DA43F57928</xmpMM:InstanceID>\n         <xmpMM:DocumentID>xmp.did:0EF8588D2938E811ADF7A3DA43F57928</xmpMM:DocumentID>\n         <xmpMM:OriginalDocumentID>xmp.did:0EF8588D2938E811ADF7A3DA43F57928</xmpMM:OriginalDocumentID>\n         <xmpMM:History>\n            <rdf:Seq>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <stEvt:action>created</stEvt:action>\n                  <stEvt:instanceID>xmp.iid:0EF8588D2938E811ADF7A3DA43F57928</stEvt:instanceID>\n                  <stEvt:when>2018-04-04T19:04:33+02:00</stEvt:when>\n                  <stEvt:softwareAgent>Adobe After Effects CS6 (Windows)</stEvt:softwareAgent>\n               </rdf:li>\n            </rdf:Seq>\n         </xmpMM:History>\n      </rdf:Description>\n   </rdf:RDF>\n</x:xmpmeta>\n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                           \n<?xpacket end=\"w\"?>","fileName":"duaef_magic.ffx","category":"pseudoEffects"};
duaef_magic;
	duaef_magic = DuAEF.DuBinary.toFile(duaef_magic);

	DuAEF.DuAE.Presets =
	{
		MAGIC: duaef_magic
	};


	
}


/**
 * The axis or channels
 * @enum {int}
 * @readonly
*/
DuAEF.DuAE.Axis =
{
	X: 1,
	Y: 2,
	Z: 3,
	RED: 4,
	GREEN: 5,
	BLUE: 6,
	ALPHA: 7,
	HUE: 8,
	SATURATION: 9,
	VALUE: 10
}

/**
 * Types of values
 * @enum {int}
 * @readonly
*/
DuAEF.DuAE.Types =
{
	VALUE: 1,
	VELOCITY: 2
}

/**
 * Abbreviated units used in the UI.<br />
 * These strings are localized based on internal After Effects dictionnaries.
 * @enum {string}
 * @readonly
*/
DuAEF.DuAE.Units =
{
	PIXELS: localize("$$$/AE/TLW/GraphEditor/PixelsDest=px"),
	DEGREES: localize("$$$/AE/TLW/GraphEditor/DegreesDest=°"),
	PERCENT: localize("$$$/AE/TLW/GraphEditor/PercentDest=%")
}

/**
 * Units used in the UI<br />
 * These strings are localized based on internal After Effects dictionnaries.
 * @enum {string}
 * @readonly
*/
DuAEF.DuAE.UnitsText =
{
	PERCENT: localize("$$$/AE/TLW/GraphEditor/PixelsSource=percent"),
	DEGREES: localize("$$$/AE/TLW/GraphEditor/DegreesSource=degrees"),
	PIXELS: localize("$$$/AE/TLW/GraphEditor/PercentSource=pixels")
}

/**
	* Associative array that converts property match names to their compact English expression statements.
	* @example
	* DuAEF.DuAE.compactExpressions["ADBE Transform Group"]
	* //returns "'transform'"
	* @type {Object}
*/
DuAEF.DuAE.compactExpressions =
{
	"ADBE Transform Group":"'transform'",
	"ADBE Anchor Point":"((prop.propertyGroup(prop.propertyDepth).property('intensity')!=null) || (prop.propertyGroup(prop.propertyDepth).property('zoom')!=null)) ? '.pointOfInterest' : '.anchorPoint'",
	"ADBE Position":"'.position'",
	"ADBE Scale":"'.scale'",
	"ADBE Orientation":"'.orientation'",
	"ADBE Rotate X":"'.xRotation'",
	"ADBE Rotate Y":"'.yRotation'",
	"ADBE Rotate Z":"(prop.propertyGroup(prop.propertyDepth).threeDLayer || (prop.propertyGroup(prop.propertyDepth).property('intensity')!=null) || (prop.propertyGroup(prop.propertyDepth).property('zoom')!=null)) ? '.zRotation' : '.rotation'",
	"ADBE Opacity":"'.opacity'",
	"ADBE Material Options Group":"'materialOption'",
	"ADBE Casts Shadows":"'.castsShadows'",
	"ADBE Light Transmission":"'.lightTransmission'",
	"ADBE Accepts Shadows":"'.acceptsShadows'",
	"ADBE Accepts Lights":"'.acceptsLights'",
	"ADBE Ambient Coefficient":"'.ambient'",
	"ADBE Diffuse Coefficient":"'.diffuse'",
	"ADBE Specular Coefficient":"'.specular'",
	"ADBE Shininess Coefficient":"'.shininess'",
	"ADBE Metal Coefficient":"'.metal'",
	"ADBE Light Options Group":"'lightOption'",
	"ADBE Light Intensity":"'.intensity'",
	"ADBE Light Color":"'.color'",
	"ADBE Light Cone Angle":"'.coneAngle'",
	"ADBE Light Cone Feather 2":"'.coneFeather'",
	"ADBE Light Shadow Darkness":"'.shadowDarkness'",
	"ADBE Light Shadow Diffusion":"'.shadowDiffusion'",
	"ADBE Camera Options Group":"'cameraOption'",
	"ADBE Camera Zoom":"'.zoom'",
	"ADBE Camera Depth of Field":"'.depthOfField'",
	"ADBE Camera Focus Distance":"'.focusDistance'",
	"ADBE Camera Aperture":"'.aperture'",
	"ADBE Camera Blur Level":"'.blurLevel'",
	"ADBE Text Properties":"'text'",
	"ADBE Text Document":"'.sourceText'",
	"ADBE Text Path Options":"'.pathOption'",
	"ADBE Text Path":"'.path'",
	"ADBE Text Reverse Path":"'.reversePath'",
	"ADBE Text Perpendicular To Path":"'.perpendicularToPath'",
	"ADBE Text Force Align Path":"'.forceAlignment'",
	"ADBE Text First Margin":"'.firstMargin'",
	"ADBE Text Last Margin":"'.lastMargin'",
	"ADBE Text More Options":"'.moreOption'",
	"ADBE Text Anchor Point Option":"'.anchorPointGrouping'",
	"ADBE Text Anchor Point Align":"'.groupingAlignment'",
	"ADBE Text Render Order":"'.fillANdStroke'",
	"ADBE Text Character Blend Mode":"'.interCharacterBlending'",
	"ADBE Text Animators":"'.animator'",
	"ADBE Text Selectors":"'.selector'",
	"ADBE Text Percent Start":"'.start'",
	"ADBE Text Percent End":"'.end'",
	"ADBE Text Percent Offset":"'.offset'",
	"ADBE Text Index Start":"'.start'",
	"ADBE Text Index End":"'.end'",
	"ADBE Text Index Offset":"'.offset'",
	"ADBE Text Range Advanced":"'.advanced'",
	"ADBE Text Range Units":"'.units'",
	"ADBE Text Range Type2":"'.basedOn'",
	"ADBE Text Selector Mode":"'.mode'",
	"ADBE Text Selector Max Amount":"'.amount'",
	"ADBE Text Range Shape":"'.shape'",
	"ADBE Text Selector Smoothness":"'.smoothness'",
	"ADBE Text Levels Max Ease":"'.easeHigh'",
	"ADBE Text Levels Min Ease":"'.easeLow'",
	"ADBE Text Randomize Order":"'.randomizeOrder'",
	"ADBE Text Random Seed":"'.randomSeed'",
	"ADBE Text Selector Mode":"'.mode'",
	"ADBE Text Wiggly Max Amount":"'.maxAmount'",
	"ADBE Text Wiggly Min Amount":"'.minAmount'",
	"ADBE Text Range Type2":"'.basedOn'",
	"ADBE Text Temporal Freq":"'.wigglesSecond'",
	"ADBE Text Character Correlation":"'.correlation'",
	"ADBE Text Temporal Phase":"'.temporalPhase'",
	"ADBE Text Spatial Phase":"'.spatialPhase'",
	"ADBE Text Wiggly Lock Dim":"'.lockDimensions'",
	"ADBE Text Wiggly Random Seed":"'.randomSeed'",
	"ADBE Text Range Type2":"'.basedOn'",
	"ADBE Text Expressible Amount":"'.amount'",
	"ADBE Text Animator Properties":"'.property'",
	"ADBE Text Anchor Point 3D":"'.anchorPoint'",
	"ADBE Text Position 3D":"'.position'",
	"ADBE Text Scale 3D":"'.scale'",
	"ADBE Text Skew":"'.skew'",
	"ADBE Text Skew Axis":"'.skewAxis'",
	"ADBE Text Rotation X":"'.xRotation'",
	"ADBE Text Rotation Y":"'.yRotation'",
	"ADBE Text Rotation":"'.zRotation'",
	"ADBE Text Opacity":"'.opacity'",
	"ADBE Text Fill Opacity":"'.fillOpacity'",
	"ADBE Text Fill Color":"'.fillColor'",
	"ADBE Text Fill Hue":"'.fillHue'",
	"ADBE Text Fill Saturation":"'.fillSaturation'",
	"ADBE Text Fill Brightness":"'.fillBrightness'",
	"ADBE Text Stroke Opacity":"'.strokeOpacity'",
	"ADBE Text Stroke Color":"'.strokeColor'",
	"ADBE Text Stroke Hue":"'.strokeHue'",
	"ADBE Text Stroke Saturation":"'.strokeSaturation'",
	"ADBE Text Stroke Brightness":"'.strokeBrightness'",
	"ADBE Text Stroke Width":"'.strokeWidth'",
	"ADBE Text Line Anchor":"'.lineAnchor'",
	"ADBE Text Line Spacing":"'.lineSpacing'",
	"ADBE Text Track Type":"'.trackingType'",
	"ADBE Text Tracking Amount":"'.trackingAmount'",
	"ADBE Text Character Change Type":"'.characterAlignment'",
	"ADBE Text Character Range":"'.characterRange'",
	"ADBE Text Character Replace":"'.characterValue'",
	"ADBE Text Character Offset":"'.characterOffset'",
	"ADBE Text Blur":"'.blur'",
	"ADBE Mask Parade":"'mask'",
	"ADBE Mask Shape":"'.maskPath'",
	"ADBE Mask Feather":"'.maskFeather'",
	"ADBE Mask Opacity":"'.maskOpacity'",
	"ADBE Mask Offset":"'.maskExpansion'",
	"ADBE Effect Parade":"'effect'",
	"ADBE Paint Group":"'.stroke'",
	"ADBE Paint Shape":"'.path'",
	"ADBE Paint Properties":"'.strokeOption'",
	"ADBE Paint Begin":"'.start'",
	"ADBE Paint End":"'.end'",
	"ADBE Paint Color":"'.color'",
	"ADBE Paint Diameter":"'.diameter'",
	"ADBE Paint Angle":"'.angle'",
	"ADBE Paint Hardness":"'.hardness'",
	"ADBE Paint Roundness":"'.roundness'",
	"ADBE Paint Tip Spacing":"'.spacing'",
	"ADBE Paint Target Channels":"'.channels'",
	"ADBE Paint Opacity":"'.opacity'",
	"ADBE Paint Flow":"'.flow'",
	"ADBE Paint Clone Layer":"'.cloneSource'",
	"ADBE Paint Clone Position":"'.clonePosition'",
	"ADBE Paint Clone Time":"'.cloneTime'",
	"ADBE Paint Clone Time Shift":"'.cloneTimeShift'",
	"ADBE Paint Transform":"'.transform'",
	"ADBE Paint Anchor Point":"'.anchorPoint'",
	"ADBE Paint Position":"'.position'",
	"ADBE Paint Scale":"'.scale'",
	"ADBE Paint Rotation":"'.rotation'",
	"ADBE MTrackers":"'motionTracker'",
	"ADBE MTracker Pt Feature Center":"'.featureCenter'",
	"ADBE MTracker Pt Feature Size":"'.featureSize'",
	"ADBE MTracker Pt Search Ofst":"'.searchOffset'",
	"ADBE MTracker Pt Search Size":"'.searchSize'",
	"ADBE MTracker Pt Confidence":"'.confidence'",
	"ADBE MTracker Pt Attach Pt":"'.attachPoint'",
	"ADBE MTracker Pt Attach Pt Ofst":"'.attachPointOffset'",
	"ADBE Audio Group":"'audio'",
	"ADBE Audio Levels":"'.audioLevels'",
	"ADBE Time Remapping":"'timeRemap'",
	"ADBE Layer Styles":"'layerStyle'",
	"ADBE Blend Options Group":"'.blendingOption'",
		"ADBE Global Angle2":"'.globalLightAngle'",
		"ADBE Global Altitude2":"'.globalLightAltitude'",
		"ADBE Adv Blend Group":"'.advancedBlending'",
		"ADBE Layer Fill Opacity2":"'.fillOpacity'",
		"ADBE R Channel Blend":"'.red'",
		"ADBE G Channel Blend":"'.green'",
		"ADBE B Channel Blend":"'.blue'",
		"ADBE Blend Interior":"'.blendInteriorStylesAsGroup'",
		"ADBE Blend Ranges":"'.useBlendRangesFromSource'",
	"dropShadow/enabled":"'.dropShadow'",
		"dropShadow/mode2":"'.blendMode'",
		"dropShadow/color":"'.color'",
		"dropShadow/opacity":"'.opacity'",
		"dropShadow/useGlobalAngle":"'.useGlobalLight'",
		"dropShadow/localLightingAngle":"'.angle'",
		"dropShadow/distance":"'.distance'",
		"dropShadow/chokeMatte":"'.spread'",
		"dropShadow/blur":"'.size'",
		"dropShadow/noise":"'.noise'",
		"dropShadow/layerConceals":"'.layerKnocksOutDropShadow'",
	"innerShadow/enabled":"'.innerShadow'",
		"innerShadow/mode2":"'.blendMode'",
		"innerShadow/color":"'.color'",
		"innerShadow/opacity":"'.opacity'",
		"innerShadow/useGlobalAngle":"'.useGlobalLight'",
		"innerShadow/localLightingAngle":"'.angle'",
		"innerShadow/distance":"'.distance'",
		"innerShadow/chokeMatte":"'.choke'",
		"innerShadow/blur":"'.size'",
		"innerShadow/noise":"'.noise'",
	"outerGlow/enabled":"'.outerGlow'",
		"outerGlow/mode2":"'.blendMode'",
		"outerGlow/opacity":"'.opacity'",
		"outerGlow/noise":"'.noise'",
		"outerGlow/AEColorChoice":"'.colorType'",
		"outerGlow/color":"'.color'",
		"outerGlow/gradientSmoothness":"'.gradientSmoothness'",
		"outerGlow/glowTechnique":"'.technique'",
		"outerGlow/chokeMatte":"'.spread'",
		"outerGlow/blur":"'.size'",
		"outerGlow/inputRange":"'.range'",
		"outerGlow/shadingNoise":"'.jitter'",
	"innerGlow/enabled":"'.innerGlow'",
		"innerGlow/mode2":"'.blendMode'",
		"innerGlow/opacity":"'.opacity'",
		"innerGlow/noise":"'.noise'",
		"innerGlow/AEColorChoice":"'.colorType'",
		"innerGlow/color":"'.color'",
		"innerGlow/gradientSmoothness":"'.gradientSmoothness'",
		"innerGlow/glowTechnique":"'.technique'",
		"innerGlow/innerGlowSource":"'.source'",
		"innerGlow/chokeMatte":"'.choke'",
		"innerGlow/blur":"'.size'",
		"innerGlow/inputRange":"'.range'",
		"innerGlow/shadingNoise":"'.jitter'",
	"bevelEmboss/enabled":"'.bevelAndEmboss'",
		"bevelEmboss/bevelStyle":"'.style'",
		"bevelEmboss/bevelTechnique":"'.technique'",
		"bevelEmboss/strengthRatio":"'.depth'",
		"bevelEmboss/bevelDirection":"'.direction'",
		"bevelEmboss/blur":"'.size'",
		"bevelEmboss/softness":"'.soften'",
		"bevelEmboss/useGlobalAngle":"'.useGlobalLight'",
		"bevelEmboss/localLightingAngle":"'.angle'",
		"bevelEmboss/localLightingAltitude":"'.altitude'",
		"bevelEmboss/highlightMode":"'.highlightMode'",
		"bevelEmboss/highlightColor":"'.highlightColor'",
		"bevelEmboss/highlightOpacity":"'.highlightOpacity'",
		"bevelEmboss/shadowMode":"'.shadowMode'",
		"bevelEmboss/shadowColor":"'.shadowColor'",
		"bevelEmboss/shadowOpacity":"'.shadowOpacity'",
	"chromeFX/enabled":"'.satin'",
		"chromeFX/mode2":"'.blendMode'",
		"chromeFX/color":"'.color'",
		"chromeFX/opacity":"'.opacity'",
		"chromeFX/localLightingAngle":"'.angle'",
		"chromeFX/distance":"'.distance'",
		"chromeFX/blur":"'.size'",
		"chromeFX/invert":"'.invert'",
	"solidFill/enabled":"'.colorOverlay'",
		"solidFill/mode2":"'.blendMode'",
		"solidFill/color":"'.color'",
		"solidFill/opacity":"'.opacity'",
	"gradientFill/enabled":"'.gradientOverlay'",
		"gradientFill/mode2":"'.blendMode'",
		"gradientFill/opacity":"'.opacity'",
		"gradientFill/gradientSmoothness":"'.gradientSmoothness'",
		"gradientFill/angle":"'.angle'",
		"gradientFill/type":"'.style'",
		"gradientFill/reverse":"'.reverse'",
		"gradientFill/align":"'.alignWithLayer'",
		"gradientFill/scale":"'.scale'",
		"gradientFill/offset":"'.offset'",
	"patternFill/enabled":"'.patternOverlay'",
		"patternFill/mode2":"'.blendMode'",
		"patternFill/opacity":"'.opacity'",
		"patternFill/align":"'.linkWithLayer'",
		"patternFill/scale":"'.scale'",
		"patternFill/phase":"'.offset'",
	"frameFX/enabled":"'.stroke'",
		"frameFX/mode2":"'.blendMode'",
		"frameFX/color":"'.color'",
		"frameFX/size":"'.size'",
		"frameFX/opacity":"'.opacity'",
		"frameFX/style":"'.position'",
	"ADBE Layer Overrides":"'masterProperty'"
};

/**
	* Menu Command Ids<br />
	* These are the ids which can be found using <code>app.findMenuCommandID("insertMenuNameHere");</code><br />
	* Use <code>app.executeCommand(id)</code> to run them.
	* @enum {int}
	* @readonly
	* @example
	* app.executeCommand(DuAEF.DuAE.menuCommandID.COPY); //copies the selection
	* app.executeCommand(DuAEF.DuAE.menuCommandID.PASTE); //pastes the selection
*/
DuAEF.DuAE.menuCommandID =
{
	CUT: 18,
	COPY: 19,
	COPY_WITH_PROPERTY_LINKS: 10310,
	PASTE: 20,
	DUPLICATE: 2080,
	UNDO: 16
}

/**
	* How to place new layers
	* @enum {int}
	* @readonly
*/
DuAEF.DuAE.LayerPlacements =
{
	BOTTOM: 0,
	UNDER_LAYER: 1,
	ABOVE_LAYER: 2,
	TOP: 3
}

/**
 * Types of layers used by Ae
 * @enum {string}
 * @readonly
*/
DuAEF.DuAE.LayerTypes =
{
	NULL: 'null',
	SOLID: 'solid',
	SHAPE: 'shape',
	TEXT: 'text',
	ADJUSTMENT: 'adjustment',
	LIGHT: 'light',
	CAMERA: 'camera'
}

/**
 * Attributes of layers in Ae
 * @enum {string}
 * @readonly
*/
DuAEF.DuAE.LayerAttributes =
{
	SELECTED: 'selected',
	VISIBLE: 'visible',
	AUDIO: 'audio',
	SOLO: 'solo',
	LOCKED: 'locked',
	SHY: 'shy',
	EFFECTS_ENABLED: 'effects',
	MOTION_BLUR: 'motionblur',
	THREE_D: '3d',
	GUIDE: 'guide'
}

/**
 * Loop types
 * @enum {string}
 * @readonly
*/
DuAEF.DuAE.LoopTypes = 
{
	HOLD: 'hold',
	NONE: 'none',
	CYCLE: 'cycle',
	PINGPONG: 'pingpong',
	OFFSET: 'offset',
	CONTINUE: 'continue'
}

/**
 * Default color labels
 * @readonly
 * @todo get real labels (from pref file?)
 */
DuAEF.DuAE.ColorLabels = [];
DuAEF.DuAE.ColorLabels[0]  = [0, 0, 0 ];	// 0. None
DuAEF.DuAE.ColorLabels[1]  = [121/255, 058/255, 058/255 ];	// 1. Red
DuAEF.DuAE.ColorLabels[2]  = [144/255, 138/255, 068/255 ];	// 2. Yellow
DuAEF.DuAE.ColorLabels[3]  = [115/255, 132/255, 130/255 ];	// 3. Aqua
DuAEF.DuAE.ColorLabels[4]  = [145/255, 124/255, 131/255 ];	// 4. Pink
DuAEF.DuAE.ColorLabels[5]  = [115/255, 115/255, 131/255 ];	// 5. Lavender
DuAEF.DuAE.ColorLabels[6]  = [146/255, 127/255, 109/255 ];	// 6. Peach
DuAEF.DuAE.ColorLabels[7]  = [120/255, 130/255, 120/255 ];	// 7. Sea Foam
DuAEF.DuAE.ColorLabels[8]  = [082/255, 093/255, 142/255 ];	// 8. Blue
DuAEF.DuAE.ColorLabels[9]  = [067/255, 112/255, 068/255 ];	// 9. Green
DuAEF.DuAE.ColorLabels[10] = [101/255, 052/255, 107/255 ];	// 10. Purple
DuAEF.DuAE.ColorLabels[11] = [146/255, 103/255, 037/255 ];	// 11. Orange
DuAEF.DuAE.ColorLabels[12] = [094/255, 065/255, 051/255 ];	// 12. Brown
DuAEF.DuAE.ColorLabels[13] = [152/255, 085/255, 137/255 ];	// 13. Fuchsia
DuAEF.DuAE.ColorLabels[14] = [061/255, 111/255, 113/255 ];	// 14. Cyan
DuAEF.DuAE.ColorLabels[15] = [114/255, 105/255, 090/255 ];	// 15. Sandstone
DuAEF.DuAE.ColorLabels[16] = [045/255, 062/255, 045/255 ];	// 16. DarkGreen

/**
	* Checks if the param is an AE collection or an Array
	* @param {Array|Collection} collection - The list to check
	* @return {boolean} true if collection is a collection, false if it's an array
*/
DuAEF.DuAE.isCollection = function (collection)
{
	return collection instanceof ItemCollection || collection instanceof LayerCollection || collection instanceof OMCollection || collection instanceof RQItemCollection;
}

/**
	* Gets the PropertyInfo for the properties
	* @param {PropertyBase[]} props - The Properties
	* @return {PropertyInfo[]} The info
*/
DuAEF.DuAE.getPropertyInfos = function (props)
{
	var propInfos = [];
	for (var i = 0 ; i < props.length ; i++)
	{
		var propInfo;
		if (props[i] instanceof PropertyInfo) propInfo = props[i];
		else propInfo = new PropertyInfo(props[i]);
		propInfos.push(propInfo);
	}
	return propInfos;
}

/**
	* Converts an AE Collection to an Array<br />
	* Should only be used in case you need an copy of the collection as an Array,<br />
	* you should use an {@link Iterator} otherwise
	* @param {Array|Collection} collection - The collection to convert
	* @return {Array} The array
*/
DuAEF.DuAE.convertCollectionToArray = function (collection)
{
	var arr = [];
	if (DuAEF.DuAE.isCollection(collection))
	{
		for (var i = 1;i<=collection.length;i++)
		{
			arr.push(collection[i]);
		}
	}
	else
	{
		arr = collection;
	}
	return arr;
}


// ==================== |------------| ====================
// ==================== | DuAEAppLib | ====================
// ==================== |------------| ====================

/**
 * Application related methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.App = {};

/**
 * Informations about the version of after effects.
 * @type {DuVersion}
 * @readonly
 */
DuAEF.DuAE.App.version = new DuVersion( app.version );

/**
 * Has scripting file and network authorization
 * @readonly
 * @type {boolean}
 */
DuAEF.DuAE.App.hasFilesAndNetworkAccess = app.preferences.getPrefAsLong( "Main Pref Section", "Pref_SCRIPTING_FILE_NETWORK_SECURITY" ) == 1;

/**
 * Asks the user to check the file and network security pref if not already set.
 * Opens the general prefrences of After Effects.
 * @memberof DuAEF.DuAE.App
 * @param {boolean}	[showAlert=true]	- Wether to display an alert before opening the preferences
 * @param {string}	[message=The Duduf After Effects scripting framework needs to be allowed to write files\nPlease, check the box called 'Allow Scripts to write files...' in the general preferences of After Effects.]	- The message to display in the alert.
 * @return {boolean}	Wether the preference has been set
 */
DuAEF.DuAE.App.askFilesAndNetworkAccess = function ( showAlert, message ) {
    if ( showAlert == undefined ) alert = true;
    if ( message == undefined ) message = "The Duduf After Effects framework needs to be allowed to write files\nPlease, check the box called 'Allow Scripts to write files...' in the general preferences of After Effects.";
    if ( !DuAEF.DuAE.App.hasFilesAndNetworkAccess ) {
        if ( showAlert ) alert( message );
        if ( DuAEF.DuAE.App.version.version < 16.1 ) app.executeCommand( 2359 );
        else app.executeCommand( 3131 );
        DuAEF.DuAE.App.hasFilesAndNetworkAccess = app.preferences.getPrefAsLong( "Main Pref Section", "Pref_SCRIPTING_FILE_NETWORK_SECURITY" ) == 1;
    }
    return DuAEF.DuAE.App.hasFilesAndNetworkAccess;
}

/**
 * Gets the public name of a version of After Effects (like CC2015.3 for version 13.8)
 * @param {float}	[versionAsFloat]	- The version as a float. If not provided, will default to the current version of the running instance of After Effects.
 * @return {string}	The version name.
 */
DuAEF.DuAE.App.getAEVersionName = function ( versionAsFloat ) {
    if ( versionAsFloat == undefined ) versionAsFloat = DuAEF.DuAE.App.version.version;
    if ( versionAsFloat < 8 ) return "" + versionAsFloat;
    if ( versionAsFloat >= 8 && versionAsFloat < 9 ) return "CS3";
    if ( versionAsFloat >= 9 && versionAsFloat < 10 ) return "CS4";
    if ( versionAsFloat >= 10 && versionAsFloat < 10.5 ) return "CS5";
    if ( versionAsFloat >= 10.5 && versionAsFloat < 11 ) return "CS5.5";
    if ( versionAsFloat >= 11 && versionAsFloat < 12 ) return "CS6";
    if ( versionAsFloat >= 12 && versionAsFloat < 13 ) return "CC";
    if ( versionAsFloat >= 13 && versionAsFloat < 13.1 ) return "CC2014";
    if ( versionAsFloat >= 13.1 && versionAsFloat < 13.2 ) return "CC2014.1";
    if ( versionAsFloat >= 13.2 && versionAsFloat < 13.5 ) return "CC2014.2";
    if ( versionAsFloat >= 13.5 && versionAsFloat < 13.6 ) return "CC2015";
    if ( versionAsFloat >= 13.6 && versionAsFloat < 13.7 ) return "CC2015.1";
    if ( versionAsFloat >= 13.7 && versionAsFloat < 13.8 ) return "CC2015.2";
    if ( versionAsFloat >= 13.8 && versionAsFloat < 14 ) return "CC2015.3";
    if ( versionAsFloat >= 14 && versionAsFloat < 15 ) return "CC2017";
    if ( versionAsFloat >= 15 && versionAsFloat < 16 ) return "CC2018";
    if ( versionAsFloat >= 16 && versionAsFloat < 17 ) return "CC2019";
    else return "Unknown";
}

DuAEF.DuAE.App.openedUndoGroup = false;

DuAEF.DuAE.App.undoGroupName = '';

/**
 * Begins an undoGroup.<br />
 * Automatically prepend the group name with the script name.<br />
 * Using this method is safer than the native one, as DuAEF will try to avoid opening several undo groups at once.<br />
 * The group name is translatable.
 * @param {string} groupName - The name of the Undo Group.
 * @param {boolean} [autoClose=true] - By default, DuAEF will close any previously opened undogroup (which has a different name) to prevent any error.<br />
 * Set this to <code>false</code> in order to ignore this new group beginning and keep the previously opened one.
 */
DuAEF.DuAE.App.beginUndoGroup = function ( groupName, autoClose ) {
    groupName = def( groupName, "" );
    autoClose = def( autoClose, true );

    if ( groupName != "" ) {
        DuAEF.DuScriptUI.uiStrings.push( groupName );
        groupName = tr( groupName );
    }

    if ( DuAEF.DuAE.App.openedUndoGroup ) {
        if ( autoClose && DuAEF.DuAE.App.undoGroupName != groupName ) DuAEF.DuAE.App.endUndoGroup();
        else return;
    }
    app.beginUndoGroup( DuAEF.scriptName + ' | ' + groupName );

    DuAEF.DuAE.App.undoGroupName = groupName;

    DuAEF.DuAE.App.openedUndoGroup = true;
}

/**
 * Ends an undoGroup.<br />
 * Using this method is safer than the native one, as DuAEF will try to avoid opening several undo groups at once.
 */
DuAEF.DuAE.App.endUndoGroup = function () {
    app.endUndoGroup();
    DuAEF.DuAE.App.openedUndoGroup = false;
}

/**
 * Runs app.executeCommand in a safer way, taking care of undogroups.
 * @param {int|string} commandID - The ID of the command as given by app.findMenuCommandID(), or if it is a string, the name of the command.
 */
DuAEF.DuAE.App.executeCommand = function ( commandID ) {
    if ( commandID === "" ) return;
    if ( DuAEF.DuJS.typeof( commandID ) == 'string' ) commandID = app.findMenuCommandId( commandID );
    openedUndoGroup = DuAEF.DuAE.App.openedUndoGroup;
    DuAEF.DuAE.App.endUndoGroup();
    app.executeCommand( commandID );
    if ( openedUndoGroup ) DuAEF.DuAE.App.beginUndoGroup( DuAEF.DuAE.App.undoGroupName );
}

/**
 * Opens a ScriptUI Panel if it is installed, or displays an alert otherwise.
 * @param {string} panelScriptName - The Script name of the panel "script.jsx"
 */
DuAEF.DuAE.App.openScriptUIPanel = function ( panelScriptName ) {
    if ( panelScriptName == "" ) return;
    var scriptUIFile = new File( Folder.appPackage.absoluteURI + '/Scripts/ScriptUI Panels/' + panelScriptName );
    if ( !scriptUIFile.exists ) {
        scriptUIFile = new File( Folder.userData.absoluteURI + '/Adobe/After Effects/' + DuAEF.DuAE.App.version.versionString + '/Scripts/ScriptUI Panels/' + panelScriptName );
    }
    if ( !scriptUIFile.exists ) {
        alert( "The panel " + panelScriptName + " is not installed." );
        return;
    }
    DuAEF.DuAE.App.executeCommand( panelScriptName );
}

/**
 * Cuts the selection (runs the cut menu command)
 */
DuAEF.DuAE.App.cut = function () {
    DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.CUT );
}

/**
 * Copies the selection (runs the copy menu command)
 */
DuAEF.DuAE.App.copy = function () {
    DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.COPY );
}

/**
 * Duplcates the selection (runs the duplicate menu command)
 */
DuAEF.DuAE.App.duplicate = function () {
    DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.DUPLICATE );
}

/**
 * Copies the selection with property links (runs the copy menu command)<br />
 * Only on versions of After Effects greater than 11.0 (CS6)<br />
 * On CS6 and below, a standard copy will be done.
 */
DuAEF.DuAE.App.copyWithPropertyLinks = function () {
    if ( DuAEF.DuAE.App.version >= 12.0 ) DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.COPY_WITH_PROPERTY_LINKS );
    else DuAEF.DuAE.App.copy();
}

/**
 * Pastes the selection (runs the paste menu command)
 */
DuAEF.DuAE.App.paste = function () {
    DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.PASTE );
}

/**
 * Undoes (runs the undo command)
 */
DuAEF.DuAE.App.undo = function () {
    DuAEF.DuAE.App.executeCommand( DuAEF.DuAE.menuCommandID.UNDO );
}

/**
 * Checks if the Folder is an Auto-Save folder
 * @param {Folder|string} folder The folder or path to check
 * @return {boolean} true if the folder is an auto-save folder 
 */
DuAEF.DuAE.App.isAutoSaveFolder = function ( folder ) {
    if (DuAEF.DuJS.typeof(folder).toLowerCase() == 'string' ) folder = new Folder(folder);
    if (!(folder instanceof Folder)) {
        DuAEF.Debug.throwTypeError( folder, 'folder', 'Folder/string', 'DuAEF.DuAE.App.isAutoSaveFolder( folder )');
        return false;
    }

    var folderName = folder.fsName.toLowerCase();
    if (DuAEF.win) folderName = folderName.split('\\').pop();
    else folderName = folderName.split('/').pop();
    
    var aaeString = 'adobe after effects';
    var autosaveString = localize("$$$/AE/MenuID/0307/AutoSave=Auto-Save").toLowerCase();

    return folderName.indexOf( aaeString ) >= 0 && folderName.indexOf( autosaveString ) >= 0;
}// ==================== |----------------| ====================
// ==================== | DuAEProjectLib | ====================
// ==================== |----------------| ====================

/**
 * After Effects project methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Project = {};

DuAEF.DuAE.Project.progressMode = false;
DuAEF.DuAE.Project.activeComp = null;
DuAEF.DuAE.Project.progressComp = null;
DuAEF.DuAE.Project.viewerMaximized = false;

DuAEF.DuAE.Project.suspendCacheUpdates = false;

DuAEF.DuAE.Project.expressionCache = [];
DuAEF.DuAE.Project.lastExpressionCacheUpdateTime = 0;

/**
 * Sets the project in "waiting mode" to speed up things.
 * @param {bool} [inProgress=true] - True to set progress mode, false to stop it.
 */
DuAEF.DuAE.Project.setProgressMode = function ( inProgress ) {
    inProgress = def (inProgress, true);
    if ( !inProgress && !DuAEF.DuAE.Project.progressMode ) return;

    if ( inProgress ) {

        if (!DuAEF.DuAE.Project.progressMode || !Object.isValid(DuAEF.DuAE.Project.progressComp))
        {
            DuAEF.DuAE.Project.activeComp = DuAEF.DuAE.Project.getActiveComp();

            if ( app.activeViewer != null ) DuAEF.DuAE.Project.viewerMaximized = app.activeViewer.maximized;

            DuAEF.DuAE.Project.progressComp = app.project.items.addComp( "MAGIC IS HAPPENING...", 500, 500, 1, 1, 1 );

            var tempL = DuAEF.DuAE.Project.progressComp.layers.addShape();
            tempL.applyPreset( DuAEF.DuAE.Presets.MAGIC );
            tempL.selected = false;
        }

        DuAEF.DuAE.Project.progressComp.openInViewer();
        if ( app.activeViewer != null ) app.activeViewer.maximized = true;

        DuAEF.DuAE.Project.progressMode = true;
    } else {
        if ( DuAEF.DuAE.Project.progressComp != null ) DuAEF.DuAE.Project.progressComp.remove();
        if ( DuAEF.DuAE.Project.activeComp != null ) DuAEF.DuAE.Project.activeComp.openInViewer();
        if ( app.activeViewer != null ) app.activeViewer.maximized = DuAEF.DuAE.Project.viewerMaximized;

        DuAEF.DuAE.Project.progressMode = false;
    }

}

/**
 * Gets all compositions in the project (or only the root of the project, ignoring subfolders)
 * @param {boolean} [rootOnly=false] Set to true to get only comps from the root of the project
 * @return {CompItem[]} The compositions
 */
DuAEF.DuAE.Project.getComps = function ( rootOnly ) {
    rootOnly = def( rootOnly, false );
    var comps = [];
    var it = new Iterator( app.project.items );
    it.do( function ( comp ) {
        if ( comp instanceof CompItem ) {
            if ( rootOnly && comp.parentFolder != app.project.rootFolder ) return;
            comps.push( comp );
        }
    } );
    return comps;
}

/**
 * Gets the After Effects current composition
 * @return {CompItem|null} The current composition or null if there's no current comp
 */
DuAEF.DuAE.Project.getActiveComp = function () {
    if ( DuAEF.DuAE.Project.progressMode ) return DuAEF.DuAE.Project.activeComp;
    if ( app.activeViewer.type == ViewerType.VIEWER_COMPOSITION ) app.activeViewer.setActive();
    var comp = app.project.activeItem;
    if ( !comp ) return null;
    if ( !( comp instanceof CompItem ) ) return null;
    return comp;
}

/**
 * Retrieves an item by its Item ID
 * @return {Item|null} The item
 */
DuAEF.DuAE.Project.getItemById = function ( id ) {

    var it = new Iterator( app.project.items );
    while ( item = it.next() ) {
        if ( item.id == id ) return item;
    }
    return null;
}

/**
 * Generates a new unique name for a composition
 * @param {string} newName - The wanted new name
 * @param {CompItem} comp  - The comp
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Project.newUniqueCompName = function ( newName, increment ) {
    if ( typeof increment == 'undefined' ) increment = true;
    var compNames = [];
    var it = new Iterator( app.project.items );
    it.do( function ( comp ) {
        if ( comp instanceof CompItem ) compNames.push( comp.name );
    } );
    return DuAEF.DuJS.String.generateUnique( newName, compNames, increment );
}

/**
 * Makes sure all compositions in the project have unique names, renaming them if needed.
 */
DuAEF.DuAE.Project.setUniqueCompNames = function () {
    var comps = DuAEF.DuAE.Project.getComps();
    var it = new Iterator( app.project.items );
    it.do( function ( comp ) {
        var newName = comp.name;
        comp.name = '***Duik-temp-name-xxx***';
        comp.name = DuAEF.DuAE.Project.newUniqueCompName( newName );
    } );
}

/**
 * Updates the cache of the expressions used by Duik to speed up batch process of expressions in the whole project.<br />
 * It's automatically run when needed if it's not been updated in a long time (1 mn) or if it's empty
 */
DuAEF.DuAE.Project.updateExpressionCache = function () {

    if ( DuAEF.DuAE.Project.suspendCacheUpdates ) return;

    DuAEF.DuAE.Project.expressionCache = [];

    for ( var i = 1, num = app.project.numItems; i <= num; i++ ) {
        var comp = app.project.item( i );
        if ( !( comp instanceof CompItem ) ) continue;

        for ( var l = 1, num = comp.numLayers; l <= num; l++ ) {
            DuAEF.DuAE.Property.addToExpressionCache( comp.layer( l ) );
        }
    }

    DuAEF.DuAE.Project.lastExpressionCacheUpdateTime = new Date().getTime();
}

DuAEF.DuAE.Project.updateExpressionsFromCache = function ( cache ) {
    for (var i = 0, num = cache.length; i < num; i++)
    {
        var pExp = cache[i];
        if (pExp.layer.locked) continue;
        if (!pExp.changed) continue;

        var prop = pExp.getProperty();
        prop.expression = pExp.expression;
    } 
}

/**
 * Reduces the project using the selected compositions, the same way the native command does it, but being able to keep comps used only by expressions. If there's no comp selected, will use all comps at the root of the project.
 * @param {boolean} [keepExpressionOnly=true] Set to false to ignore comps used only by expressions (same as the native command)
 */
DuAEF.DuAE.Project.reduceSelected = function ( keepExpressionOnly ) {
    var comps = [];
    for (var i = 0, num = app.project.selection.length; i < num; i++) {
        var item = app.project.selection[i];
        if (item instanceof CompItem) comps.push(item);
    }
    DuAEF.DuAE.Project.reduce( comps, keepExpressionOnly );
}

/**
 * Reduces the project, the same way the native command does it, but being able to keep comps used only by expressions.
 * @param {CompItem|CompItem[]} [comps] The name or the id of the comp(s) to keep. If omitted, it will use all comps at the root of the project (the ones not in a subfolder).
 * @param {boolean} [keepExpressionOnly=true] Set to false to ignore comps used only by expressions (same as the native command)
 */
DuAEF.DuAE.Project.reduce = function ( comps, keepExpressionOnly ) {
    keepExpressionOnly = def( keepExpressionOnly, true );
    comps = def( comps, DuAEF.DuAE.Project.getComps( true ) );
    if ( comps instanceof CompItem ) comps = [ comps ];
    if ( comps.length == 0 ) return;

    app.project.consolidateFootage();

    DuAEF.DuAE.Project.updateExpressionCache();

    for ( i = app.project.numItems; i > 0; i-- ) {
        var item = app.project.item( i );
        if ( DuAEF.DuJS.Array.indexOf( comps, item, DuAEF.DuAE.Item.compareItems ) >= 0 ) continue;
        if ( item instanceof CompItem || item instanceof FootageItem ) {
            var usedIn = DuAEF.DuAE.Item.usedIn( item, true, keepExpressionOnly );

            if ( usedIn.length == 0 ) {
                item.remove();
                continue;
            }

            var remove = true;

            for ( j = 0, num = usedIn.length; j < num; j++ ) {
                if ( DuAEF.DuJS.Array.indexOf( comps, usedIn[ j ], DuAEF.DuAE.Item.compareItems ) >= 0 ) {
                    remove = false;
                    break;
                }
            }

            if ( remove ) item.remove();
        }
        else if ( item.numItems == 0 ) item.remove();
    }
}

/**
 * Collects all dependencies in a folder
 * @param {Folder} [destination] The folder where to save the files. The project files will be collected in a subfolder called "project name.aep.archive" or "project name.aep.zip". If not provided, will use the current folder.
 * @param {boolean} [overwrite=false] Wether to overwrite existing footage in the destination.
 * @param {boolean} [zip=false] Set to true to automatically zip the archive.
 * @param {boolean} [createProjectFolder=true] Wether to create a folder for this project or use the destination as is.
 */
DuAEF.DuAE.Project.collectFiles = function ( destination, overwrite, zip, createProjectFolder ) {
    var projectFile = app.project.file;

    var result = {};
    result.missingFootages = [];
    
    destination = def ( destination, projectFile.parent );
    overwrite = def (overwrite, false);
    zip = def (zip, false);
    createProjectFolder = def (createProjectFolder, true);

    var projectName = DuAEF.DuJS.Fs.getBasename( projectFile.name );
    var projectFolderPath = destination.absoluteURI;
    if (createProjectFolder) {
        projectFolderPath += '/' + projectName + ".archive";
    }
    var projectFolder = new Folder( projectFolderPath );
	var footageFolder = new Folder( projectFolder.absoluteURI + "/(Footage)/" );
	projectFolder.create();
	footageFolder.create();

    var missingFootageString = "=== MISSING FOOTAGE ===\n\n";

    var currentFootageFolder = footageFolder;
    currentFootageFolder.id = -1;

	for (var i = 1, num = app.project.numItems; i <= num; i++ ) {
        var item = app.project.item(i);

        if (item.parentFolder.id != currentFootageFolder.id) {
            if (item.parentFolder == app.project.rootFolder )
            {
                currentFootageFolder = footageFolder;  
            }
            else
            {
                currentFootageFolder = currentFootageFolder.parent;
            }
            currentFootageFolder.id = item.parentFolder.id;
        }

        if ( item instanceof CompItem ) continue;
        if ( item instanceof FolderItem ) {
            currentFootageFolder = new Folder( currentFootageFolder.absoluteURI + "/" + item.name);
            currentFootageFolder.create();
            currentFootageFolder.id = item.id;
            continue;
        }

        if (item.file == null) continue;
        if (item.footageMissing) {
            missingFootageString += item.name + " @ " + item.file.fsName + "\n";
            result.missingFootages.push(item.file.fsName);
            continue;
        }

        if (!DuAEF.DuAE.Item.isImageSequence(item)) {
            var newPath = currentFootageFolder.absoluteURI + "/" + item.file.name;
            var newFile = new File( newPath );
            if ( (newFile.exists && overwrite) || !newFile.exists) item.file.copy( newPath );
            item.replace(new File( newPath ));
        }
        else {
            var sequenceFolder = item.file.parent;
            var frameSequence = sequenceFolder.getFiles();
            var sequenceFolderTarget = new Folder(currentFootageFolder.absoluteURI + "/" + sequenceFolder.name + "/");
            sequenceFolderTarget.create();
            var newPath = sequenceFolderTarget.absoluteURI + "/" + item.file.name;
            var newFile = new File(newPath);

            if ( (newFile.exists && overwrite) || !newFile.exists) {
                for (var j = 0, numFrames = frameSequence.length; j < numFrames; j++ ) {
                    var frame = frameSequence[j];
                    if ( frame instanceof Folder ) continue;
                    frame.copy( sequenceFolderTarget.absoluteURI + "/" + frame.name );
                }
            }
            
            item.replaceWithSequence(newFile, true);
        }

	}

    var newProjectFileName = DuAEF.DuJS.Fs.newUniqueFileName(app.project.file.name , projectFolder);
	app.project.save(new File(projectFolder.absoluteURI + "/" + newProjectFileName));

    var reportFile = new File(projectFolder.absoluteURI + "/" + app.project.file.name + "_report.txt");
    var report = app.project.file.name + "\n\n";
    report += missingFootageString;
    DuAEF.DuJS.Fs.writeTextFile( reportFile, report );

    if (zip) {
        app.project.close( CloseOptions.DO_NOT_SAVE_CHANGES );
        app.open( projectFile );
        var zipFile = DuAEF.Zip.compressFolderContent( projectFolder, projectName + ".zip", true );
    }
}

/**
 * Replaces text in Expressions
 * @param {string} oldString - The string to replace
 * @param {string} newString - The new string
 * @param {boolean} [caseSensitive=true] - Wether the search has to be case sensitive
 */
DuAEF.DuAE.Project.replaceInExpressions = function ( oldString, newString, caseSensitive ) {
    caseSensitive = def (caseSensitive, true);

    DuAEF.DuAE.Project.updateExpressionCache();

    var re = new RegExp( DuAEF.DuJS.RegExp.escapeRegExp(oldString), caseSensitive ? 'g' : 'gi');

    for (var i = 0, num = DuAEF.DuAE.Project.expressionCache.length; i < num; i++) {
        DuAEF.DuAE.Project.expressionCache[i].changed = re.test( DuAEF.DuAE.Project.expressionCache[i].expression );
        if (DuAEF.DuAE.Project.expressionCache[i].changed) DuAEF.DuAE.Project.expressionCache[i].expression = DuAEF.DuAE.Project.expressionCache[i].expression.replace( re, newString );
    }

    DuAEF.DuAE.Project.updateExpressionsFromCache( DuAEF.DuAE.Project.expressionCache )
}// ==================== |-------------| ====================
// ==================== | DuAEItemLib | ====================
// ==================== |-------------| ====================

/**
 * After Effects item methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Item = {};

DuAEF.DuAE.Item.stillFormats = [
    "bmp",
    "rle",
    "dib",
    "tif",
    "crw",
    "nef",
    "raf",
    "orf",
    "mrw",
    "dcr",
    "mos",
    "raw",
    "pef",
    "srf",
    "dng",
    "x3f",
    "cr2",
    "erf",
    "sr2",
    "kdc",
    "mfw",
    "mef",
    "arw",
    "nrw",
    "rw2",
    "rwl",
    "iiq",
    "3fr",
    "fff",
    "srw",
    "gpr",
    "dxo",
    "heic",
    "arq",
    "cr3",
    "cin",
    "dpx",
    "img",
    "ei",
    "ai",
    "pdf",
    "eps",
    "ai3",
    "ai4",
    "ai5",
    "ai6",
    "ai7",
    "ai8",
    "epsf",
    "epsp",
    "jpg",
    "jpeg",
    "jfif",
    "jpe",
    "ico",
    "exr",
    "sxr",
    "mxr",
    "psd",
    "psb",
    "png",
    "hdr",
    "rgbe",
    "xyze",
    "rla",
    "rpf",
    "sgi",
    "bw",
    "rgb",
    "pic",
    "tga",
    "vda",
    "icb",
    "vst",
    "tiff"
]

DuAEF.DuAE.Item.compareItems = function (itemA, itemB) { return itemA.id == itemB.id; }

/**
 * Gets the compositions this item is used in.
 * @param {AVItem} item The item
 * @param {boolean} [includeExpressionOnly=false] Check for comps using this item only through expressions. The cache has to be updated with {@link DuAEF.DuAE.Project.updateExpressionCache} before using this method with this argument set to true.
 * @param {boolean} [recursive=false] Check recursively in parent comps too.
 * @return {CompItem[]} The compositions.
 */
DuAEF.DuAE.Item.usedIn = function (item, recursive, keepExpressionOnly ) {
    keepExpressionOnly = def (keepExpressionOnly, false);
    recursive = def (recursive, false);
    var cacheSuspended = false;

    if (item instanceof FolderItem) return [];

    var usedIn = item.usedIn;

    if (!keepExpressionOnly) return usedIn;

    var currentTime = new Date().getTime();
    if ( ( currentTime - DuAEF.DuAE.Project.lastExpressionCacheUpdateTime > 60000 ) || DuAEF.DuAE.Project.expressionCache.length == 0) {
        DuAEF.DuAE.Project.updateExpressionCache();
        DuAEF.DuAE.Project.suspendCacheUpdates = true;
        cacheSuspended = true;
    }

    var regExp = '';
    var itemNameRegEx = DuAEF.DuJS.RegExp.escapeRegExp(item.name);
    if (item instanceof CompItem ) regExp = new RegExp("comp\\s*\\(\\s*(\"|')" + itemNameRegEx + "\\1\\s*\\)");
    else regExp = new RegExp("footage\\s*\\(\\s*(\"|')" + itemNameRegEx + "\\1\\s*\\)");

    for (var i = 0, num = DuAEF.DuAE.Project.expressionCache.length; i < num; i++)
    {
        var exp = DuAEF.DuAE.Project.expressionCache[i];
        if ( regExp.test(exp.expression) ) usedIn.push( exp.layer.containingComp );
    }

    if ( recursive ) {
        for ( var i = 0, num = usedIn.length; i < num; i++) {
            usedIn = usedIn.concat( DuAEF.DuAE.Item.usedIn( usedIn[i] , true, keepExpressionOnly ) );
        }
    }

    DuAEF.DuJS.Array.removeDuplicates(usedIn, DuAEF.DuAE.Item.compareItems);

    if (cacheSuspended) DuAEF.DuAE.Project.suspendCacheUpdates = false;

    return usedIn;
}

/**
 * Checks if this item source is an image sequence
 * @param {FootageItem} item The item
 * @return {boolean} true if the source is an image sequence
 */
DuAEF.DuAE.Item.isImageSequence = function (item) {
    if (!(item instanceof FootageItem)) return false;

    if (item.mainSource.isStill) return false;

    var extension = DuAEF.DuJS.Fs.getExtension(item.file);
    extension = extension.toLowerCase();

    return DuAEF.DuJS.Array.indexOf( DuAEF.DuAE.Item.stillFormats, extension ) >= 0;

}// ==================== |-------------| ====================
// ==================== | DuAECompLib | ====================
// ==================== |-------------| ====================

/**
 * After Effects composition methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Comp = {};

DuAEF.DuAE.Comp.suspendCacheUpdates = false;

DuAEF.DuAE.Comp.expressionCache = [];
DuAEF.DuAE.Comp.lastExpressionCacheUpdateTime = 0;

/**
 * Updates the cache of the expressions used by Duik to speed up batch process of expressions in the whole project.<br />
 * It's automatically run when needed if it's not been updated in a long time (1 mn) or if it's empty
 * @param {CompItem} [comp=DuAEF.DuAE.Project.getActiveComp()] The comp with expressions to cache
 * @param {boolean} [selectedLayers=false] Set to true to cache only selected layers.
 */
DuAEF.DuAE.Comp.updateExpressionCache = function ( comp, selectedLayers ) {
    if ( DuAEF.DuAE.Comp.suspendCacheUpdates ) return;

    comp = def(comp, DuAEF.DuAE.Project.getActiveComp());
    if (!comp) return;
    selectedLayers = def (selectedLayers, false);

    DuAEF.DuAE.Comp.expressionCache = [];

    var layers = [];
    if (selectedLayers) layers = comp.selectedLayers;
    else layers = comp.layers;

    var it = new Iterator(layers);
    it.do(function(layer) {
        DuAEF.DuAE.Property.addToExpressionCache( layer, true );
    });

    DuAEF.DuAE.Comp.lastExpressionCacheUpdateTime = new Date().getTime();
}

/**
 * Replaces text in Expressions
 * @param {string} oldString - The string to replace
 * @param {string} newString - The new string
 * @param {CompItem} [comp=DuAEF.DuAE.Project.getActiveComp()] The comp with expressions to cache
 * @param {boolean} [caseSensitive=true] - Wether the search has to be case sensitive
 * @param {boolean} [selectedLayers=false] Set to true to cache only selected layers.
 */
DuAEF.DuAE.Comp.replaceInExpressions = function ( oldString, newString, comp, caseSensitive, selectedLayers ) {
    comp = def(comp, DuAEF.DuAE.Project.getActiveComp());
    if (!comp) return;
    caseSensitive = def (caseSensitive, true);
    selectedLayers = def (selectedLayers, false);

    DuAEF.DuAE.Comp.updateExpressionCache( comp, selectedLayers );

    var re = new RegExp( DuAEF.DuJS.RegExp.escapeRegExp(oldString), caseSensitive ? 'g' : 'gi');

    for (var i = 0, num = DuAEF.DuAE.Comp.expressionCache.length; i < num; i++) {
        DuAEF.DuAE.Comp.expressionCache[i].changed = re.test( DuAEF.DuAE.Comp.expressionCache[i].expression );
        if (DuAEF.DuAE.Comp.expressionCache[i].changed) DuAEF.DuAE.Comp.expressionCache[i].expression = DuAEF.DuAE.Comp.expressionCache[i].expression.replace( re, newString );
    }

    DuAEF.DuAE.Project.updateExpressionsFromCache( DuAEF.DuAE.Comp.expressionCache )
}


/**
 * Makes sure the composition has a unique name, renaming it if needed.
 * @param {CompItem} comp - The composition
 * @return {string} The new name.
 */
DuAEF.DuAE.Comp.setUniqueCompName = function ( comp ) {
    if ( !( comp instanceof CompItem ) ) throw "Cannot set a unique composition name, this is not a composition.";
    var newName = comp.name;
    comp.name = '***Duik-temp-name-xxx***';
    comp.name = DuAEF.DuAE.Project.newUniqueCompName( newName, false );
    app.project.autoFixExpressions( newName, comp.name );
    return comp.name;
}

/**
 * Gets the After Effects selected properties in the current comp
 * @param {PropertyType|PropertyValueType|string|function}	 [filter]	- A filter to get only a certain type, or value type, or property name or matchName.<br />
 * A function which take one PropertyBase as argument can be used to filter the properties: the Property will be returned if the function returns true.
 * @param {boolean}	[strict=false]	- If a string filter is provided, wether to search for the exact name/matchName or if it contains the filter.
 * @param {boolean}	[caseSensitive=true]	- If a string filter is provided, and not strict is false, does the search have to be case sensitive?
 * @return {PropertyInfo[]} The selected properties, an empty Array if nothing active or selected
 */
DuAEF.DuAE.Comp.getSelectedProps = function ( filter, strict, caseSensitive ) {
    var props = [];
    var comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return props;

    if ( typeof filter === 'undefined' ) {
        var layers = comp.selectedLayers;
        var itLayers = new Iterator( layers );
        itLayers.do( function ( layer ) {
            props = props.concat( layer.selectedProperties );
        } );
    } else {
        var layers = comp.selectedLayers;
        if ( layers.length === 0 ) return props;

        for ( var i = 0; i < layers.length; i++ ) {
            props = props.concat( DuAEF.DuAE.Layer.getSelectedProps( layers[ i ], filter, strict, caseSensitive ) );
        }
    }

    return DuAEF.DuAE.getPropertyInfos( props );
}

/**
 * Gets the selected layers in the current comp
 * @return {Layer[]} The selected layers
 */
DuAEF.DuAE.Comp.getSelectedLayers = function () {
    var comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return [];
    return comp.selectedLayers;
}

/**
 * Runs a function on all the selected layers
 * @param {function} method - The function to run on the layers, which takes a layer as its only argument.
 * @param {string} [undoGroupName] - The name of the undoGroup created before the execution. If not provided, there will not be any undoGroup created.
 */
DuAEF.DuAE.Comp.doSelectedLayers = function ( method, undoGroupName ) {
    var layers = DuAEF.DuAE.Comp.unselectLayers();

    DuAEF.DuAE.Layer.doLayers( layers, method, undoGroupName );

    DuAEF.DuAE.Comp.selectLayers( layers );
}

/**
 * Runs a function on all the layers
 * @param {function} method - The function to run on the layers, which takes a layer as its only argument.
 * @param {string} [undoGroupName] - The name of the undoGroup created before the execution. If not provided, there will not be any undoGroup created.
 * @param {CompItem} [comp] - The comp containing the layers. Will use the current comp if not provided.
 */
DuAEF.DuAE.Comp.doLayers = function ( method, undoGroupName, comp ) {
    if ( typeof comp === 'undefined' ) {
        comp = DuAEF.DuAE.Project.getActiveComp();
    }
    if ( !( comp instanceof CompItem ) ) return;

    var layers = comp.layers;
    if ( layers.length == 0 ) return;

    DuAEF.DuAE.Layer.doLayers( layers, method, undoGroupName );
}

/**
 * Gets the After Effects animated (with keyframes) properties in the current comp
 * @param {PropertyType|PropertyValueType|string|function}	 [filter]	- A filter to get only a certain type, or value type, or property name or matchName.<br />
 * A function which take one PropertyBase as argument can be used to filter the properties: the Property will be returned if the function returns true.
 * @param {boolean}	[strict=false]	- If a string filter is provided, wether to search for the exact name/matchName or if it contains the filter.
 * @param {boolean}	[caseSensitive=true]	- If a string filter is provided, and not strict is false, does the search have to be case sensitive?
 * @param {boolean}	[selectedLayersOnly=false]	- True to get the properties on the selected layers only
 * @param {CompItem}	[comp=DuAEF.DuAE.Project.getActiveComp]	- The composition
 * @return {PropertyInfo[]} The selected properties, an empty Array if nothing active or selected
 */
DuAEF.DuAE.Comp.getAnimatedProps = function ( filter, strict, caseSensitive, selectedLayersOnly, comp ) {
    var props = [];
    if ( typeof comp === 'undefined' ) comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return props;

    if ( typeof selectedLayersOnly === 'undefined' ) selectedLayersOnly = false;


    var layers;
    if ( selectedLayersOnly ) layers = comp.selectedLayers;
    else layers = comp.layers;

    var it = new Iterator( layers );
    it.do( function ( layer ) {
        props = props.concat( DuAEF.DuAE.Property.getAnimatedProps( layer, filter, strict, caseSensitive ) );
    } );

    return props;
}

/**
 * Deselects all properties in the current composition
 */
DuAEF.DuAE.Comp.unselectProperties = function () {
    var comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return props;
    var props = comp.selectedProperties;
    for ( var i = 0; i < props.length; i++ ) {
        props[ i ].selected = false;
    }
}

/**
 * Deselects all layers in a composition
 * @param {CompItem} [comp=app.project.activeItem] - The composition
 * @return {Layer[]} The previously selected layers.<br />
 * A custom attribute, Layer.props is added on each layer object which is an array of all previously selected properties as PropertyInfo objects
 */
DuAEF.DuAE.Comp.unselectLayers = function ( comp ) {
    if ( typeof comp === 'undefined' ) comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return [];

    var layers = [];

    if ( !comp ) return layers;
    if ( !( comp instanceof CompItem ) ) return layers;

    layers = [];

    while ( comp.selectedLayers.length > 0 ) {
        var layer = comp.selectedLayers[ 0 ];
        layer.props = DuAEF.DuAE.getPropertyInfos( layer.selectedProperties );
        layer.selected = false;
        layers.push( layer );
    }

    return layers;
}

/**
 * Selects the layers
 * @param {Layer[]} layers - The layers
 */
DuAEF.DuAE.Comp.selectLayers = function ( layers ) {
    new Iterator( layers ).do( function ( layer ) {
        if ( layer == undefined ) return;
        if ( layer == null ) return;
        layer.selected = true;
    } );
}

/**
 * Generates a new unique name for a layer
 * @param {string} newName	- The wanted new name
 * @param {CompItem} comp 	- The comp
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Comp.newUniqueLayerName = function ( newName, comp, increment ) {
    if ( increment == undefined ) increment = true;
    var layerNames = [];
    for ( var i = 1; i <= comp.layers.length; i++ ) {
        layerNames.push( comp.layer( i ).name );
    }
    return DuAEF.DuJS.String.generateUnique( newName, layerNames, increment );
}

/**
 * Generates a new unique name for a marker for this comp
 * @param {string} newName	- The wanted new name
 * @param {CompItem} comp 	- The comp
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Comp.newUniqueMarkerName = function ( newName, comp, increment ) {
    if ( increment == undefined ) increment = true;
    var markerNames = [];
    for ( var i = 1, num = comp.markerProperty.numKeys; i <= num; i++ ) {
        markerNames.push( comp.markerProperty.keyValue( i ).comment );
    }
    return DuAEF.DuJS.String.generateUnique( newName, markerNames, increment );
}

/**
 * Creates a new Adjustment layer
 * @param {CompItem} comp 	- The comp
 * @return {AVLayer}	The layer.
 */
DuAEF.DuAE.Comp.addAdjustmentLayer = function ( comp ) {
    if ( comp == undefined ) return null;
    var layer = comp.layers.addSolid( [ 1, 1, 1 ], DuAEF.DuAE.Comp.newUniqueLayerName( "Adjustment Layer", comp ), comp.width, comp.height, comp.pixelAspect, comp.duration );
    layer.adjustmentLayer = true;
    return layer;
}

/**
 * Links all orphan layers in the comp to a layer
 * @param {Layer} layer - The parent layer
 * @param {bool} [includeLockedLayers=false] - True to parent layers even if they are locked
 */
DuAEF.DuAE.Comp.parentAllOrphans = function ( layer, includeLockedLayers ) {
    if ( typeof includeLockedLayers === "undefined" ) includeLockedLayers = false;
    var comp = layer.containingComp;
    for ( var i = 1, num = comp.numLayers; i <= num; i++ ) {
        if ( i == layer.index ) continue;
        var l = comp.layer( i );
        if ( DuAEF.DuAE.Layer.getRelation( l, layer ) < 0 ) continue;
        var locked = l.locked;
        if ( locked && includeLockedLayers ) l.locked = false;
        if ( !locked && l.parent == null ) l.parent = layer;
        if ( locked && includeLockedLayers ) l.locked = locked;
    }
}

/**
 * Gets all precomps and parent comps of the composition
 * @param {CompItem} [comp=DuAEF.DuAE.Project.getActiveComp()] - The composition
 * @param {bool} [recursive=false] - True to search to more than one level of precomposition
 * @return {CompItem[]} The related compositons
 */
DuAEF.DuAE.Comp.getRelatives = function ( comp, recursive ) {
    if ( typeof recursive === 'undefined' ) recursive = false;
    if ( typeof comp === 'undefined' ) comp = DuAEF.DuAE.Project.getActiveComp();
    if ( !comp ) return [];
    var precomps = DuAEF.DuAE.Comp.getPrecomps( comp, recursive );
    var parentComps = [];
    if ( recursive ) {
        parentComps = DuAEF.DuAE.Comp.getParentComps( comp );
    } else {
        parentComps = comp.usedIn;
    }

    return precomps.concat( parentComps );
}

/**
 * Gets all the precomposition found in the comp.
 * @param {CompItem} comp - The composition
 * @param {bool} [recursive=false] - True to get nested compositions
 * @return {CompItem[]} The precompositions
 */
DuAEF.DuAE.Comp.getPrecomps = function ( comp, recursive ) {
    if ( typeof recursive === 'undefined' ) recursive = true;
    var precomps = [];
    var it = new Iterator( comp.layers );
    it.do( function ( layer ) {
        var precomp = layer.source;
        if ( precomp instanceof CompItem ) {
            precomps.push( precomp );
            if ( recursive ) precomps = precomps.concat( DuAEF.DuAE.Comp.getPrecomps( precomp ) );
        }
    } );
    DuAEF.DuJS.Array.removeDuplicates( precomps );
    return precomps;
}

/**
 * Recursively gets all compositions where this item is used
 * @param {AVItem} item - The item
 * @return {CompItem[]} The compositions
 */
DuAEF.DuAE.Comp.getParentComps = function ( item ) {
    var parentComps = item.usedIn;
    new Iterator( parentComps ).do( function ( parentComp ) {
        parentComps = parentComps.concat( DuAEF.DuAE.Comp.getParentComps( parentComp ) );
    } );
    DuAEF.DuJS.Array.removeDuplicates( parentComps );
    return parentComps;
}

/**
 * Gets all the layers with audio in the composition
 * @param {CompItem}	 comp	The composition where the audio will be searched
 * @param {bool}	[audioActiveOnly=false]	 If true, does not get muted layers.
 * @return {AVLayer[]} An array of AVLayer containing the audio layers
 */
DuAEF.DuAE.Comp.getAudioLayers = function ( comp, audioActiveOnly ) {
    if ( typeof audioActiveOnly === 'undefined' ) audioActiveOnly = false;
    var layers = comp.layers;
    var audioLayers = [];
    var it = new Iterator( layers );
    it.do( function ( layer ) {
        if ( layer.hasAudio ) {
            if ( audioActiveOnly && layer.audioEnabled || !audioActiveOnly ) {
                audioLayers.push( layer );
            }
        }
    } );

    return audioLayers;
}
// ==================== |--------------| ====================
// ==================== | DuAELayerLib | ====================
// ==================== |--------------| ====================

/**
 * After Effects layer methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Layer = {};

/**
 * Runs a function on all the layers
 * @param {function} method - The function to run on the layers, which takes a layer as its only argument.
 * @param {string} [undoGroupName] - The name of the undoGroup created before the execution. If not provided, there will not be any undoGroup created.
 */
DuAEF.DuAE.Layer.doLayers = function ( layers, method, undoGroupName ) {
    if ( typeof undoGroupName === 'undefined' ) undoGroupName = "";
    if ( undoGroupName != "" ) DuAEF.DuAE.App.beginUndoGroup( undoGroupName );
    new Iterator( layers ).do( method );
    if ( undoGroupName != "" ) DuAEF.DuAE.App.endUndoGroup();
}

/**
 * Generates a new unique name for an effect
 * @param {string} newName	- The wanted new name
 * @param {Layer} layer 	- The layer
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Layer.newUniqueEffectName = function ( newName, layer, increment ) {
    if ( !layer ) throw new Error( "Needs a layer to generate a new unique effect name", "DuAECOreLib", 645 );
    if ( increment == undefined ) increment = true;
    if ( newName == undefined ) return "";
    if ( newName == "" ) return "";
    var effectNames = [];
    for ( var i = 1; i <= layer.effect.numProperties; i++ ) {
        effectNames.push( layer.effect( i ).name );
    }
    return DuAEF.DuJS.String.generateUnique( newName, effectNames, increment );
}

/**
 * Generates a new unique name for a marker for this comp
 * @param {string} newName	- The wanted new name
 * @param {Layer} layer 	- The comp
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Layer.newUniqueMarkerName = function ( newName, layer, increment ) {
    if ( increment == undefined ) increment = true;
    var markerNames = [];
    for ( var i = 1, num = layer.property( 'ADBE Marker' ).numKeys; i <= num; i++ ) {
        markerNames.push( layer.property( 'ADBE Marker' ).keyValue( i ).comment );
    }
    return DuAEF.DuJS.String.generateUnique( newName, markerNames, increment );
}

/**
 * Gets the After Effects selected properties in the layer
 * @param {Layer}	layer	- The layer
 * @param {PropertyType|PropertyValueType|string|function}	 [filter]	- A filter to get only a certain type, or value type, or property name or matchName.<br />
 * A function which take one PropertyBase as argument can be used to filter the properties: the Property will be returned if the function returns true.
 * @param {boolean}	[strict=false]	- If a string filter is provided, wether to search for the exact name/matchName or if it contains the filter.
 * @param {boolean}	[caseSensitive=true]	- If a string filter is provided, and not strict is false, does the search have to be case sensitive?
 * @return {PropertyBase[]} The selected properties, an empty Array if nothing active or selected
 */
DuAEF.DuAE.Layer.getSelectedProps = function ( layer, filter, strict, caseSensitive ) {
    if ( typeof strict === 'undefined' ) strict = false;
    if ( typeof caseSensitive === 'undefined' ) caseSensitive = true;

    var props = [];

    if ( !caseSensitive && typeof filter === "string" ) filter = filter.toLowerCase();

    var selectedProps = layer.selectedProperties;
    if ( typeof filter === 'undefined' ) {
        props = props.concat( selectedProps );
    } else {
        for ( var j = 0; j < selectedProps.length; j++ ) {
            var prop = selectedProps[ j ];

            var name = prop.name;
            var matchName = prop.matchName;
            if ( !caseSensitive ) {
                name = name.toLowerCase();
                matchName = matchName.toLowerCase();
            }

            if ( strict && name === filter ) {
                props.push( prop );
            } else if ( strict && matchName === filter ) {
                props.push( prop );
            } else if ( typeof filter === "string" ) {
                if ( name.indexOf( filter ) >= 0 ) props.push( prop );
                else if ( matchName.indexOf( filter ) >= 0 ) props.push( prop );
            } else if ( prop.propertyType == PropertyType.PROPERTY ) {
                if ( prop.propertyValueType == filter ) props.push( prop );
            } else if ( props.length == 0 && filter == PropertyValueType.SHAPE ) {
                if ( matchName == 'ADBE Mask Atom' ) props.push( prop.property( 'ADBE Mask Shape' ) );
                else if ( matchName == 'ADBE Vector Shape - Group' ) props.push( prop.property( 'ADBE Vector Shape' ) );
            } else if ( prop.propertyType == filter ) {
                props.push( prop );
            } else if ( typeof filter === "function" ) {
                if ( filter( prop ) ) props.push( prop );
            };
        }
    }
    return DuAEF.DuAE.getPropertyInfos( props );
}

/**
 * Gets all animations on the layer in the whole timeline or in the time range<br />
 * The first KeyFrame._time will be adjusted relatively to the start of the time range (if provided) instead of the startTime of the composition.
 * @param {Layer}	layer	- The layer.
 * @param {boolean}	[selected=false]	- true to get only selected keyframes.
 * @param {float[]}	[timeRange]	- The time range, an array of two time values, in seconds.
 * @return {LayerAnim}	The animation.
 */
DuAEF.DuAE.Layer.getAnim = function ( layer, selected, timeRange ) {
    var anim = new LayerAnim();
    anim._name = layer.name;
    anim._index = layer.index;
    anim.anims = [];
    for ( var propIndex = 1; propIndex <= layer.numProperties; propIndex++ ) {
        var prop = layer.property( propIndex );
        if ( prop.matchName == 'ADBE Marker' ) continue;

        var subAnim = DuAEF.DuAE.Property.getAnim( prop, selected, timeRange );
        if ( subAnim != null ) {
            if ( anim.startTime == null ) anim.startTime = subAnim.startTime;
            else if ( anim.startTime > subAnim.startTime ) anim.startTime = subAnim.startTime;
            if ( anim.endTime == null ) anim.endTime = subAnim.endTime;
            else if ( anim.endTime > subAnim.endTime ) anim.endTime = subAnim.endTimeendTime;
            anim.anims.push( subAnim );
        }

    }
    return anim;
}

/**
 * Gets all animations on the layers in the whole timeline or in the time range<br />
 * The first KeyFrame._time will be adjusted relatively to the start of the time range (if provided) instead of the startTime of the composition.
 * @param {Layer[]|LayerCollection}	layers	- The layers.
 * @param {boolean}	[selected=false]	- true to get only selected keyframes.
 * @param {float[]}	[timeRange]	- The time range, an array of two time values, in seconds.
 * @return {LayerAnim[]}	The animations.
 */
DuAEF.DuAE.Layer.getAnims = function ( layers, selected, timeRange ) {
    var anims = [];
    new Iterator( layers ).do( function ( layer ) {
        anims.push( DuAEF.DuAE.Layer.getAnim( layer, selected, timeRange ) );
    } );
    return anims;
}

/**
 * Sets the property animation on the property
 * @param {Layer}	layer	- The layer.
 * @param {LayerAnim} anims	- The animation
 * @param {float}	[time=comp.time]	- The time where to begin the animation
 * @param {boolean}	[ignoreName=false]	- true to set the anim even if name of the property do not match the name of the animation.<br />
 * This way, only the type of property (i.e. matchName) is checked.
 * @param {boolean}	[setExpression=false]	- Set the expression on the property
 * @param {boolean}	[onlyKeyframes=true]	- If false, the value of properties without keyframes will be set too.
 * @param {boolean}	[replace=false]	- true to remove any existing keyframe on the properties before adding new keyframes
 * @param {string[]}	[propertyWhiteList]	- A list of matchNames used as a white list for properties to set anims.<br />
 * Can be the matchName of a propertyGroup to set all the subproperties.
 * @param {boolean}	[offset=false]	- true to offset the current value, instead of replacing it
 * @param {boolean}	[reverse=false]	- true to reverse the keyframes (in time)
 * @return {boolean} true if the anim was actually set.
 */
DuAEF.DuAE.Layer.setAnim = function ( layer, anim, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, reverse ) {
    if ( typeof time === 'undefined' ) time = layer.containingComp.time;
    if ( typeof ignoreName === 'undefined' ) ignoreName = false;
    if ( typeof setExpression === 'undefined' ) setExpression = false;
    if ( typeof onlyKeyframes === 'undefined' ) onlyKeyframes = false;
    if ( typeof replace === 'undefined' ) replace = false;
    if ( typeof offset === 'undefined' ) offset = false;

    if ( reverse ) DuAEF.DuAE.Layer.reverseAnims( anim );

    for ( var i = 0; i < anim.anims.length; i++ ) {
        var subAnim = anim.anims[ i ];
        for ( var propIndex = 1; propIndex <= layer.numProperties; propIndex++ ) {
            var subProp = layer.property( propIndex );
            if ( subProp == null ) continue;
            if ( subProp.matchName == subAnim._matchName && subProp.matchName != 'ADBE Marker' ) {
                var ok = DuAEF.DuAE.Property.setGroupAnim( subProp, subAnim, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, reverse );
                if ( ok ) break;
            }
        }
    }
}

/**
 * Sets the animations on the layers.<br />
 * If you need to set only on the same layers (same index, same name), use {@link DuAEF.DuAE.Layer.setAnims}.
 * @param {Layer[]|LayerCollection}	layers	- The layers.<br />
 * If there are more layers than animations, the layers array will be truncated.
 * @param {LayerAnim[]} anims	- The layer animations.<br />
 * If there are more animations than layers, the animations array will be truncated.
 * @param {float}	[time=comp.time]	- The time where to begin the animation
 * @param {boolean}	[ignoreName=false]	- true to set the anim even if name of the property do not match the name animation.<br />
 * This way, only the type of property (i.e. matchName) is checked.
 * @param {boolean}	[setExpression=false]	- Set the expression on the property
 * @param {boolean}	[onlyKeyframes=true]	- If false, the value of properties without keyframes will be set too.
 * @param {boolean}	[replace=false]	- true to remove any existing keyframe on the properties before adding new keyframes
 * @param {string[]}	[whiteList]	- A list of matchNames used as a white list for properties to set anims.<br />
 * Can be the matchName of a propertyGroup to set all the subproperties.
 * @param {boolean}	[offset=false]	- true to offset the current value, instead of replacing it
 * @param {boolean}	[reverse=false]	- true to reverse the keyframes (in time)<br />
 * Note: the remaining animations which are returned will already be reversed, do not set this to true again if you plan to set them later.
 */
DuAEF.DuAE.Layer.setAllAnims = function ( layers, anims, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, reverse ) {
    layers = DuAEF.DuAE.convertCollectionToArray( layers );
    var num = anims.length;
    if ( num > layers.length ) num = layers.length;

    if ( reverse ) DuAEF.DuAE.Layer.reverseAnims( anims );

    for ( var i = 0; i < num; i++ ) {
        var layer = layers[ i ];
        if ( layer ) DuAEF.DuAE.Layer.setAnim( layer, anims[ i ], time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, false );
    }
}

/**
 * Sets the animations on the corresponding layers.<br />
 * The animation will be set only on layers with the same name and index.<br />
 * To set all animations on all layers, not checking their names or indices, use {@link DuAEF.DuAE.Layer.setAllAnims}.
 * @param {Layer[]|LayerCollection}	layers	- The layers.
 * @param {LayerAnim[]} anims	- The layer animations
 * @param {float}	[time=comp.time]	- The time where to begin the animation
 * @param {boolean}	[ignoreName=false]	- true to set the anim even if name of the property do not match the name animation.<br />
 * This way, only the type of property (i.e. matchName) is checked.
 * @param {boolean}	[setExpression=false]	- Set the expression on the property
 * @param {boolean}	[onlyKeyframes=true]	- If false, the value of properties without keyframes will be set too.
 * @param {boolean}	[replace=false]	- true to remove any existing keyframe on the properties before adding new keyframes
 * @param {string[]}	[whiteList]	- A list of matchNames used as a white list for properties to set anims.<br />
 * Can be the matchName of a propertyGroup to set all the subproperties.
 * @param {boolean}	[offset=false]	- true to offset the current value, instead of replacing it
 * @param {boolean}	[reverse=false]	- true to reverse the keyframes (in time)<br />
 * Note: the remaining animations which are returned will already be reversed, do not set this to true again if you plan to set them later.
 * @return {LayerAnim[]} The animations which were not set (no corresponding layers)
 */
DuAEF.DuAE.Layer.setAnims = function ( layers, anims, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, reverse ) {
    var remaining = anims.slice();

    if ( reverse ) DuAEF.DuAE.Layer.reverseAnims( anims );

    for ( var i = remaining.length - 1; i >= 0; i-- ) {
        var anim = remaining[ i ];
        var it = new Iterator( layers );
        var ok = false;
        while ( layer = it.next() ) {
            if ( layer.name == anim._name && layer.index == anim._index ) {
                DuAEF.DuAE.Layer.setAnim( layer, anim, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, false );
                ok = true;
                break;
            }
        }
        if ( ok ) remaining.pop();
    }

    return remaining;
}

/**
 * Reverses the times of the keyframes to reverse the animation
 * @param {LayerAnim[]|LayerAnim} anims The animation
 */
DuAEF.DuAE.Layer.reverseAnims = function ( anims ) {
    if ( anims instanceof LayerAnim ) anims = [ anims ];

    var it = new Iterator( anims );

    var startTime = null;
    var endTime = null;
    it.do( function ( anim ) {
        if ( startTime == null ) startTime = anim.startTime;
        else if ( startTime > anim.startTime ) startTime = anim.startTime;
        if ( endTime == null ) endTime = anim.endTime;
        else if ( endTime > anim.endTime ) endTime = anim.endTime;
    } );

    var duration = endTime - startTime;


    function reverse( anim ) {
        if ( anim.type == 'anim' ) {
            anim.keys = anim.keys.reverse();
            for ( var i = 0, num = anim.keys.length; i < num; i++ ) {
                var ratio = 1 - ( ( anim.keys[ i ]._time - startTime ) / duration );
                anim.keys[ i ]._time = ratio * duration + startTime;
                var sV = anim.endValue;
                anim.endValue = anim.startValue;
                anim.startValue = sV;
            }
        } else if ( anim.anims ) {
            for ( var i = 0, num = anim.anims.length; i < num; i++ ) {
                reverse( anim.anims[ i ] );
            }
        }
    }

    it.do( reverse );
}

/**
 * Gets the children of a layer
 * @param {Layer}	layer	- The layer.
 * @return {Layer[]} All the children of the layer
 */
DuAEF.DuAE.Layer.getChildren = function ( layer ) {
    var comp = layer.containingComp;
    var children = [];
    for ( var i = 1; i <= comp.layers.length; i++ ) {
        var l = comp.layer( i );
        if ( l.index == layer.index ) continue;
        if ( l.parent == null ) continue;
        if ( l.parent.index == layer.index ) children.push( l );
    }
    return children;
}

/**
 * Checks if a layer is a descendant of another layer
 * @param {Layer} layer1 - The first layer
 * @param {Layer} layer2 - The second layer
 * @return {int|null} the degree of relation. 0 if layer1 is not a relative of layer2,<br />
 * negative if layer2 is a descendant of layer1, positive if layer2 is an ancestor.<br />
 * null if the two layers are not in the same composition or if they are the same layer.
 */
DuAEF.DuAE.Layer.getRelation = function ( layer1, layer2 ) {
    var comp1 = layer1.containingComp;
    var comp2 = layer2.containingComp;
    if ( comp1 !== comp2 ) return null;
    if ( layer1.index == layer2.index ) return null;
    if ( layer1.parent == null && layer2.parent == null ) return 0;
    var degree = 0;
    var parent = layer1.parent;
    while ( parent ) {
        degree++;
        if ( layer2.index == parent.index ) return degree;
        parent = parent.parent;
    }
    var parent = layer2.parent;
    degree = 0;
    while ( parent ) {
        degree++;
        if ( layer1.index == parent.index ) return -degree;
        parent = parent.parent;
    }
    return 0;
}

/**
 * Measures the distance between two layers
 * @param {Layer} layer1 - The first layer
 * @param {Layer} layer2 - The second layer
 * @return {int} The distance (in pixels)
 */
DuAEF.DuAE.Layer.getDistance = function ( layer1, layer2 ) {
    var O = DuAEF.DuAE.Layer.getWorldPos( layer1 );
    var A = DuAEF.DuAE.Layer.getWorldPos( layer2 );
    var OA = DuAEF.DuJS.Math.getLength( O, A );

    return Math.round( OA );
}

/**
 * Gets the world coordinates of the point of a layer
 * @param {Layer} layer - The layer
 * @param {float[]} [point=layer.transform.anchorPoint.value] - the point
 * @return {float[]} The world coordinates of the layer
 */
DuAEF.DuAE.Layer.getWorldPos = function ( layer, point ) {
    if ( layer instanceof CameraLayer || layer instanceof LightLayer || layer.threeDLayer ) {
        var parent = layer.parent;
        layer.parent = null;
        var pos = layer.transform.position.value;
        layer.parent = parent;
        return pos;
    }

    var matrix = DuAEF.DuAE.Layer.getTransformMatrix( layer );
    if ( typeof point === 'undefined' ) {
        if ( layer.transform.anchorPoint ) point = layer.transform.anchorPoint.value;
    }

    return matrix.applyToPoint( point );
}

/**
 * Adds an animation preset on the layer.<br />
 * Be careful as layer selection will be kept but not properties selection,<br />
 * and this can result in an "invalid object" if referencing a property.
 * @param {Layer} layer - The layer
 * @param {File} preset - The preset file
 * @param {string} matchName - The pseudo Effect matchName
 * @return {PropertyGroup|null} The effect corresponding to matchName or null if anything went wrong
 */
DuAEF.DuAE.Layer.applyPreset = function ( layer, preset, matchName ) {
    if ( typeof layer === 'undefined' ) return null;
    if ( typeof preset === 'undefined' ) return null;
    if ( typeof matchName === 'undefined' ) matchName = '';
    if ( !preset.exists ) throw new Error( "The pseudo effect file does not exist" );

    var comp = layer.containingComp;
    var selection = [];
    for ( var i = 1, num = comp.numLayers; i <= num; i++ ) {
        var l = comp.layer( i );
        selection.push( l.selected );
        l.selected = false;
    }

    layer.selected = true;
    layer.applyPreset( preset );

    if (DuAEF.DuAE.Project.progressMode) DuAEF.DuAE.Project.setProgressMode( true );

    var effect = null;
    if ( matchName != '' ) effect = layer.property( "ADBE Effect Parade" )( matchName );

    for ( var i = 1, num = comp.numLayers; i <= num; i++ ) {
        var l = comp.layer( i );
        l.selected = selection[ i - 1 ];
    }

    return effect;
}

/**
 * This method is a workaround to AE API method layer.applyPreset to work like addProperty when adding pseudoEffects
 * @param {Layer} layer - The layer
 * @param {File} preset - The preset file
 * @param {string} matchName - The pseudo Effect matchName.
 * @param {string} [name] - The name to set on the effect
 * @return {PropertyGroup|null} The effect or null if anything went wrong
 */
DuAEF.DuAE.Layer.addPseudoEffect = function ( layer, preset, matchName, name ) {
    var typeofPreset = DuAEF.DuJS.typeof( preset );
    if ( typeofPreset != 'File' ) throw new Error( "DuAEF.DuAE.Layer.addPseudoEffect( layer, preset, matchName, name): error. preset has to be a File object, got a " + typeofPreset + "." );
    if ( !preset.exists ) throw new Error( "DuAEF.DuAE.Layer.addPseudoEffect( layer, preset, matchName, name): error. The pseudo effect file does not exist" );
    if ( layer == undefined ) return null;
    if ( preset == undefined ) return null;
    if ( matchName == undefined ) return null;

    var effects = layer( "ADBE Effect Parade" );
    if ( !effects.canAddProperty( matchName ) || DuAEF.debug ) {
        var comp = app.project.items.addComp( "DuAEF Temp", 10, 10, 1, 1, 24 );
        var n = comp.layers.addNull();
        n.applyPreset( preset );
        var nullSource = n.source;
        n.remove();
        nullSource.remove();
        comp.remove();
    }

    if ( !effects.canAddProperty( matchName ) ) {
        throw new Error( "Invalid pseudo effect file or match name" );
    }

    var newEffectName = "";
    newEffectName = DuAEF.DuAE.Layer.newUniqueEffectName( name, layer );
    var effect = effects.addProperty( matchName );
    if ( newEffectName != "" ) effect.name = newEffectName;
    return effect;
}

/**
 * Checks if the layers have some selected keyframes
 * @param {Layer[]|LayerCollection} layers - The layers
 * @return {boolean} true if the layers have at least one selected keyframe
 */
DuAEF.DuAE.Layer.haveSelectedKeys = function ( layers ) {
    var it = new Iterator( layers );
    if ( it.length == 0 ) return;
    while ( layer = it.next() ) {
        if ( DuAEF.DuAE.Property.hasSelectedKeys( layer ) ) return true;
    }
    return false;
}

/**
 * Gets the time of the first keyFrame
 * @param {Layer[]|LayerCollection} layer - The layer
 * @param {boolean} selected - true to check selected keyframes only
 * @return {float|null} The keyframe time or null if there are no keyframe
 */
DuAEF.DuAE.Layer.firstKeyFrameTime = function ( layers, selected ) {
    var it = new Iterator( layers );
    var time = null;
    for ( var i = it.min; i <= it.max; i++ ) {
        var test = DuAEF.DuAE.Property.firstKeyFrameTime( layers[ i ], selected );
        if ( time == null ) time = test;
        else if ( test != null ) {
            if ( time > test ) time = test;
        }
    }
    return time;
}

/**
 * Sort the layers by their parenting (root at first index 0)
 * @param {Layer[]|Collection} layers - The layers to sort
 * @return {Layer[]} The sorted array
 */
DuAEF.DuAE.Layer.sortByParent = function ( layers ) {
    var sortedLayers = [];
    var layersToSort = DuAEF.DuAE.convertCollectionToArray( layers );

    for ( var i = layersToSort.length - 1; i >= 0; i-- ) {
        var l = layersToSort[ i ];
        var parent = l.parent;
        if ( parent == null ) continue;
        var isParentOutside = true;
        for ( var j = 0; j < layersToSort.length; j++ ) {
            if ( parent.index == layersToSort[ j ].index ) {
                isParentOutside = false;
                break;
            }
        }
        if ( isParentOutside ) {
            sortedLayers.push( l );
            layersToSort.splice( i, 1 );
        }
    }

    for ( var i = layersToSort.length - 1; i >= 0; i-- ) {
        var l = layersToSort[ i ];
        if ( l.parent == null ) {
            sortedLayers.push( l );
            layersToSort.splice( i, 1 );
        }
    }

    while ( layersToSort.length > 0 ) {
        for ( var i = layersToSort.length - 1; i >= 0; i-- ) {
            var l = layersToSort[ i ];
            for ( var j = 0; j < sortedLayers.length; j++ ) {
                var sL = sortedLayers[ j ];
                if ( l.parent.index == sL.index ) {
                    sortedLayers.push( l );
                    layersToSort.splice( i, 1 );
                    break;
                }
            }
        }
    }
    return sortedLayers;

}

/**
 * Sort the layers by their indices. Returns a new Array, the original array or collection is not changed.
 * @param {Layer[]|LayerCollection} layers - The layers to sort
 * @return {Layer[]} The sorted array
 */
DuAEF.DuAE.Layer.sortByIndex = function ( layers ) {
    var sortedLayers = DuAEF.DuAE.convertCollectionToArray( layers );

    function compareLayerIndices( lay1, lay2 ) {
        return lay1.index - lay2.index;
    }
    return sortedLayers.sort( compareLayerIndices );
}

/**
 * Parents all the layers together beginning by the end of the array
 * @param {Layer[]} layers - The layers to parent
 */
DuAEF.DuAE.Layer.parentChain = function ( layers ) {
    var layersUnparent = [];
    for ( var i = 1; i < layers.length; i++ ) {
        layersUnparent.push( layers[ i ] );
    }
    DuAEF.DuAE.Layer.unparent( layersUnparent );

    for ( var i = layers.length - 1; i >= 1; i-- ) {
        layers[ i ].parent = layers[ i - 1 ];
    }
}

/**
 * Un-parents all the layers
 * @param {Layer[]} layers - The layers
 */
DuAEF.DuAE.Layer.unparent = function ( layers ) {
    for ( var i = layers.length - 1; i >= 0; i-- ) {
        layers[ i ].parent = null;
    }
}

/**
 * (Un)parent the children of the layer.< br/>
 * When children are unparented, an effect is added and the name of the layer is changed to show the "edit mode" is enabled.<br />
 * When toggled again, the effect is removed, and the name is restored.
 * @param {Layer} layer - The layer to toggle.
 */
DuAEF.DuAE.Layer.toggleEditMode = function ( layer ) {
    var reChildren = / \|Duik::ChildrenLayers:([\d,]*)\|/;

    var setEditMode = !reChildren.test( layer.comment );

    var comp = layer.containingComp;

    if ( setEditMode ) {
        var children = DuAEF.DuAE.Layer.getChildren( layer );
        layer.comment = layer.comment + ' |Duik::ChildrenLayers:';
        for ( var j = 0, num = children.length; j < num; j++ ) {
            var child = children[ j ];
            layer.comment = layer.comment + child.index;
            if ( j < children.length - 1 ) layer.comment = layer.comment + ',';
            child.parent = null;
        }
        layer.comment = layer.comment + "|";
        layer.name = '=EDIT= ' + layer.name;
        var tint = layer.property( 'ADBE Effect Parade' ).addProperty( 'ADBE Tint' );
        tint.name = 'DUIK EDIT MODE';
        tint( 1 ).setValue( [ 0.5, 0, 0, 1 ] );
        tint( 2 ).setValue( [ 1, 0, 0, 1 ] );
    } else {
        var match = reChildren.exec( layer.comment );
        if ( match.length == 2 ) {
            var indices = match[ 1 ].split( ',' );
            if ( indices.length > 0 ) {
                for ( var i = 0; i < indices.length; i++ ) {
                    var index = parseInt( indices[ i ] );
                    if ( isNaN( index ) ) continue;
                    comp.layer( index ).parent = layer;
                }
            }
            layer.comment = layer.comment.replace( match[ 0 ], '' );
            layer.name = layer.name.replace( '=EDIT= ', '' );
            var tint = layer.property( 'ADBE Effect Parade' ).property( 'ADBE Tint' );
            if ( tint )
                if ( tint.name == 'DUIK EDIT MODE' ) tint.remove();
        }
    }
}

/**
 * Creates a sequence with the layers, but using opacities.
 * This enables more possibilities to rig them, like with the Connector
 * @param {Layer[]|LayerCollection} layers - The layers
 * @param {string} [expr] - An expression to add to the opacity of the layers
 */
DuAEF.DuAE.Layer.sequence = function ( layers, expr ) {
    if ( layers.length == 0 ) return;
    if ( expr == undefined ) expr = '';
    var comp = layers[ 0 ].containingComp;
    var it = new Iterator( layers );
    it.do( function ( layer ) {
        while ( layer.transform.opacity.numKeys > 0 ) {
            layer.transform.opacity.removeKey( layer.transform.opacity.numKeys );
        }
        var i = it.current;
        var t = i * comp.frameDuration;
        var endTime = ( layers.length - 1 ) * comp.frameDuration;
        layer.transform.opacity.setValueAtTime( 0, 0 );
        layer.transform.opacity.setValueAtTime( endTime, 0 );
        layer.transform.opacity.setValueAtTime( t, 100 );
        if ( i < layers.length - 1 ) layer.transform.opacity.setValueAtTime( t + comp.frameDuration, 0 );
        for ( var keyIndex = 1; keyIndex <= layer.transform.opacity.numKeys; keyIndex++ ) {
            layer.transform.opacity.setInterpolationTypeAtKey( keyIndex, KeyframeInterpolationType.HOLD, KeyframeInterpolationType.HOLD );
        }
        layer.transform.opacity.expression = expr;
    } );
}

/**
 * Adds a new Null object just above a layer, at the same position
 * @param {Layer} layer - The layer
 * @return {Layer} the null
 */
DuAEF.DuAE.Layer.addNull = function ( layer ) {
    if ( layer == undefined ) return null;
    var nullLayer = layer.containingComp.layers.addNull();
    layerParent = layer.parent;
    layer.parent = null;
    nullLayer.transform.position.setValue( layer.transform.position.value );
    layer.parent = layerParent;
    nullLayer.moveBefore( layer );
    nullLayer.name = "N | " + layer.name;
    return nullLayer;
}

/**
 * Locks the scale with an expression so its value cannot be changed
 * @param {Layer} layer - The layer
 * @param {bool} [allAEVersions=false] - true to lock scale even on CS6 and older<br />
 * Those older versions will display the scale property when typing the "U" shorcut when it's locked.
 */
DuAEF.DuAE.Layer.lockScale = function ( layer, allAEVersions ) {
    if ( typeof allAEVersions == "undefined" ) allAEVersions = false;
    if ( allAEVersions || DuAEF.DuAE.App.version.version > 12 ) DuAEF.DuAE.Property.lock( layer.transform.scale );
}

/**
 * Copies the layers to another comp
 * @param {Layer[]} layers - The layers to copy and paste
 * @param {CompItem} destinationComp - The composition to copy to
 * @param {boolean} [withPropertyLinks=false] - Add expressions on the properties to link them to the orriginal layers<br />
 * Works only on 12.0 and above, ignored on 11.0 (CS6) and below
 * @return {Layer[]} The new layers
 */
DuAEF.DuAE.Layer.copyToComp = function ( layers, destinationComp, withPropertyLinks ) {
    if ( DuAEF.DuAE.App.version.version < 12.0 ) withPropertyLinks = false;
    if ( typeof withPropertyLinks === 'undefined' ) withPropertyLinks = false;

    if ( layers.length == 0 ) return;

    var it = new Iterator( layers );

    var previousActiveComp = DuAEF.DuAE.Project.getActiveComp();

    var originComp = it.firstItem().containingComp;
    originComp.openInViewer();

    var previousSelection = DuAEF.DuAE.Comp.unselectLayers( originComp );
    DuAEF.DuAE.Comp.selectLayers( layers );

    if ( withPropertyLinks ) DuAEF.DuAE.App.copyWithPropertyLinks();
    else DuAEF.DuAE.App.copy();

    destinationComp.openInViewer();

    var previousSelectionDestination = DuAEF.DuAE.Comp.unselectLayers( destinationComp );

    DuAEF.DuAE.App.paste();

    var newLayers = destinationComp.selectedLayers;

    DuAEF.DuAE.Comp.selectLayers( previousSelection );
    previousActiveComp.openInViewer();
    DuAEF.DuAE.Comp.selectLayers( previousSelectionDestination );

    return newLayers;
}

/**
 * Parents all (unparented) layers
 * @param {Layer|LayerCollection|Layer[]} layers - The layers to parent
 * @param {Layer} [parent] - The parent. If not defined, will use the last layer of the list
 * @param {boolean} [unparentedOnly=true] - True to parent only layers which do not have a parent yet 
 * @param {boolean} [insert=false] - When true, the parent will be parented to the previous parent of the given layer (or first layer if the layers param is a list)
 */
DuAEF.DuAE.Layer.parent = function ( layers, parent, unparentedOnly, insert ) {
    unparentedOnly = def( unparentedOnly, true );
    insert = def( insert, false );

    if ( typeof parent === 'undefined' ) {
        if ( !layers.length ) return;
        if ( layers.length == 1 ) return;
        parent = layers.pop();
    }

    if ( !layers.length ) layers = [layers];

    if (insert) parent.parent = layers[0].parent;
    
    var it = new Iterator( layers );
    it.do( function ( layer ) {
        var locked = layer.locked;
        layer.locked = false;
        if ( ( layer.parent == null && unparentedOnly ) || !unparentedOnly ) {
            if ( layer.parent != parent ) layer.parent = parent;
        }
        layer.locked = locked;
    } );
}

/**
 * Gets all the (selected) puppet pins found on the layer.<br />
 * Will return all puppet pins if there is no puppet selection.
 * @param {Layer} layer - The layer
 * @return {PropertyInfo[]} The properties
 */
DuAEF.DuAE.Layer.getPuppetPins = function ( layer ) {
    var pins = [];
    var selectedProps = layer.selectedProperties;

    function getPins( puppet ) {
        var mesh = puppet.property( "ADBE FreePin3 ARAP Group" ).property( "ADBE FreePin3 Mesh Group" ).property( "ADBE FreePin3 Mesh Atom" ).property( "ADBE FreePin3 PosPins" );
        for ( var i = 1, num = mesh.numProperties; i <= num; i++ ) {
            pins.push( new PropertyInfo( mesh.property( i ) ) );
        }
    }

    if ( selectedProps == 0 ) {
        for ( var i = 1, num = layer( 'ADBE Effect Parade' ).numProperties; i <= num; i++ ) {
            var effect = layer.effect( i );
            if ( effect.matchName == 'ADBE FreePin3' ) {
                getPins( effect );
            }
        }
    } else {
        var itProps = new Iterator( selectedProps );
        itProps.do( function ( prop ) {
            if ( prop.matchName == 'ADBE FreePin3 PosPin Atom' ) pins.push( new PropertyInfo( prop ) );
        } );
        if ( pins.length == 0 ) {
            itProps.do( function ( prop ) {
                if ( prop.matchName == 'ADBE FreePin3' ) getPins( prop );
            } );
        }
    }


    return pins;
}

/**
 * Aligns a layer in position to another layer
 * @param {Layer} layer - The layer to align.
 * @param {Layer} target - The reference layer.
 */
DuAEF.DuAE.Layer.alignPosition = function ( layer, target ) {
    var layerParent = layer.parent;
    if ( layerParent != target ) layer.parent = target;

    var comp = layer.containingComp;


    if ( layer.transform.position.numKeys == 0 ) layer.transform.position.setValue( target.transform.anchorPoint.value );
    else layer.transform.position.setValueAtTime( comp.time, target.transform.anchorPoint.value );

    if ( layerParent != target ) layer.parent = layerParent;
}

/**
 * Aligns a layer's orientation to another layer
 * @param {Layer} layer - The layer to align.
 * @param {Layer} target - The reference layer.
 */
DuAEF.DuAE.Layer.alignOrientation = function ( layer, target ) {
    var layerParent = layer.parent;
    if ( layerParent != target ) layer.parent = target;

    var comp = layer.containingComp;


    if ( layer.transform.rotation.numKeys == 0 ) layer.transform.rotation.setValue( 0 );
    else layer.transform.rotation.setValueAtTime( comp.time, 0 );

    if ( layerParent != target ) layer.parent = layerParent;
}

/**
 * Aligns a layer's scale to another layer
 * @param {Layer} layer - The layer to align.
 * @param {Layer} target - The reference layer.
 */
DuAEF.DuAE.Layer.alignScale = function ( layer, target ) {
    var layerParent = layer.parent;
    if ( layerParent != target ) layer.parent = target;

    var comp = layer.containingComp;


    if ( layer.transform.scale.numKeys == 0 ) layer.transform.scale.setValue( [ 100, 100 ] );
    else layer.transform.scale.setValueAtTime( comp.time, [ 100, 100 ] );

    if ( layerParent != target ) layer.parent = layerParent;
}

/**
 * Aligns a layer's opcaity to another layer
 * @param {Layer} layer - The layer to align.
 * @param {Layer} target - The reference layer.
 */
DuAEF.DuAE.Layer.alignOpacity = function ( layer, target ) {
    var comp = layer.containingComp;

    if ( layer.transform.opacity.numKeys == 0 ) layer.transform.opacity.setValue( target.transform.opacity.value );
    else layer.transform.opacity.setValueAtTime( comp.time, target.transform.opacity.value );
}

/**
 * Aligns the layers' transformations (position, rotation, scale) to another layer
 * @param {Layer[]|LayerCollection} layers - The layers to align.
 * @param {Layer} target - The reference layer.
 * @param {boolean} [position=true] - True to align position.
 * @param {boolean} [rotation=true] - True to align orientation.
 * @param {boolean} [scale=true] - True to align scale.
 * @param {boolean} [opacity=false] - True to align opcacity.
 */
DuAEF.DuAE.Layer.align = function ( layers, target, position, rotation, scale, opacity ) {
    if ( typeof position === 'undefined' ) position = true;
    if ( typeof rotation === 'undefined' ) rotation = true;
    if ( typeof scale === 'undefined' ) scale = true;
    if ( typeof opacity === 'undefined' ) opacity = false;

    var it = new Iterator( layers );


    var comp = layers[ 0 ].containingComp;

    var targetParent = target.parent;
    target.parent = null;

    var parents = [];
    it.do( function ( layer ) {
        if ( layer == target ) return;
        parents[ it.current ] = layer.parent;

        layer.parent = target;
    } );

    it.do( function ( layer ) {
        if ( layer == target ) return;

        if ( position ) DuAEF.DuAE.Layer.alignPosition( layer, target );
        if ( rotation ) DuAEF.DuAE.Layer.alignOrientation( layer, target );
        if ( scale ) DuAEF.DuAE.Layer.alignScale( layer, target );
        if ( opacity ) DuAEF.DuAE.Layer.alignOpacity( layer, target );
    } );

    it.do( function ( layer ) {
        if ( layer == target ) return;
        layer.parent = parents[ it.current ];
    } );

    target.parent = targetParent;
}

/**
 * Gets the transformation matrix of the layer from the compostion.<br />
 * Use Matrix.applyToPoint(point) to transform any coordinate with the matrix returned by this method.
 * @param {Layer[]} layer - the layer
 * @return {Matrix} The coordinates.
 */
DuAEF.DuAE.Layer.getTransformMatrix = function ( layer ) {
    var matrix = new Matrix();

    var layers = [ layer ];
    var parent = layer.parent;
    while ( parent ) {
        layers.push( parent );
        parent = parent.parent;
    }

    for ( var i = layers.length - 1; i >= 0; i-- ) {
        var l = layers[ i ];

        matrix.translate( l.transform.position.value );

        if ( l.threeDLayer || l instanceof CameraLayer ) matrix.rotate( l.transform.zRotation.value );
        else matrix.rotate( l.transform.rotation.value );

        if ( !( l instanceof CameraLayer ) ) {
            var aPX = -( l.transform.anchorPoint.value[ 0 ] * l.transform.scale.value[ 0 ] / 100 );
            var aPY = -( l.transform.anchorPoint.value[ 1 ] * l.transform.scale.value[ 1 ] / 100 );

            matrix.translate( [ aPX, aPY ] );

            matrix.scale( l.transform.scale.value / 100 );
        }
    }

    return matrix;
}

/**
 * Moves a layer to the coordinates of a spatial property
 * @param {Layer} layer - The layer
 * @param {Property|PropertyInfo} prop - The property
 */
DuAEF.DuAE.Layer.moveLayerToProperty = function ( layer, prop ) {
    var propInfo;
    if ( prop instanceof PropertyInfo ) {
        propInfo = prop;
        prop = propInfo.getProperty();
    } else {
        propInfo = new PropertyInfo( prop );
    }

    var propLayer = propInfo.layer;
    var comp = propInfo.comp;

    if ( !( propLayer instanceof ShapeLayer ) ) {
        var matrix = DuAEF.DuAE.Layer.getTransformMatrix( propLayer );
        var pos = matrix.applyToPoint( prop.value );
        var parent = layer.parent;
        layer.parent = null;
        layer.position.setValue( pos );
        layer.parent = parent;
    } else {
        var parent = layer.parent;
        layer.parent = null;
        layer.position.setValue( prop.value );
        layer.parent = parent;
    }
}

/**
 * Sets the In and Out points of a layer according to its opacity (cuts at 0%)
 * @param {Layer} layer - The layer
 * @param {boolean} [preExpression=false] - Whether to check for the opacity post or pre-expression value
 */
DuAEF.DuAE.Layer.autoDuration = function ( layer, preExpression ) {
    if ( typeof preExpression === 'undefined' ) preExpression = false;

    var comp = layer.containingComp;

    var inPoint = layer.inPoint;
    var outPoint = layer.outPoint;
    var inFrame = inPoint / comp.frameDuration;
    var outFrame = outPoint / comp.frameDuration;

    if ( layer.transform.opacity.valueAtTime( inPoint, preExpression ) == 0 ) {
        for ( var i = inFrame; i < outFrame; i++ ) {
            var time = i * comp.frameDuration;
            if ( layer.transform.opacity.valueAtTime( time, preExpression ) == 0 ) inPoint = time + comp.frameDuration;
            else break;
        }
    }

    if ( layer.transform.opacity.valueAtTime( outPoint, preExpression ) == 0 ) {
        for ( var i = outFrame; i > inFrame; i-- ) {
            var time = i * comp.frameDuration;
            if ( layer.transform.opacity.valueAtTime( time, preExpression ) == 0 ) outPoint = time;
            else break;
        }
    }

    if ( inPoint != layer.inPoint ) layer.inPoint = inPoint;
    if ( outPoint != layer.outPoint ) layer.outPoint = outPoint;
}

/**
 * Checks if a layer is 3D (ie is a threeDLayer or a camera or a light)
 * @param {Layer} layer - The layer
 * @return {bool} true if the layer is a 3D layer
 */
DuAEF.DuAE.Layer.isThreeD = function ( layer ) {
    if (layer.threeDLayer) return true;
    if (layer instanceof CameraLayer) return true;
    if (layer instanceof LightLayer) return true;
    return false;
}// ==================== |-----------------| ====================
// ==================== | DuAEPropertyLib | ====================
// ==================== |-----------------| ====================

/**
 * After Effects properties methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Property = {};

/**
 * Gets the After Effects properties in the property
 * @param {PropertyBase|PropertyInfo}	property	- The layer
 * @param {PropertyType|PropertyValueType|string|function}	 [filter]	- A filter to get only a certain type, or value type, or property name or matchName.<br />
 * A function which take one PropertyBase as argument can be used to filter the properties: the Property will be returned if the function returns true.
 * @param {boolean}	[strict=false]	- If a string filter is provided, wether to search for the exact name/matchName or if it contains the filter.
 * @param {boolean}	[caseSensitive=true]	- If a string filter is provided, and not strict is false, does the search have to be case sensitive?
 * @return {PropertyInfo[]} The selected properties, an empty Array if nothing found
 */
DuAEF.DuAE.Property.getProps = function ( property, filter, strict, caseSensitive ) {
    if ( strict == undefined ) strict = false;
    if ( caseSensitive == undefined ) caseSensitive = true;
    var prop;
    if ( property instanceof PropertyInfo ) prop = property.getProperty();
    else prop = property;

    var props = [];

    if ( !caseSensitive && typeof filter === "string" ) filter = filter.toLowerCase();

    var name = prop.name;
    var matchName = prop.matchName;
    if ( !caseSensitive ) {
        name = name.toLowerCase();
        matchName = matchName.toLowerCase();
    }

    if ( strict && name === filter ) props.push( prop );
    else if ( strict && matchName === filter ) props.push( prop );
    else if ( !strict && typeof filter === "string" ) {
        if ( name.indexOf( filter ) >= 0 ) props.push( prop );
        else if ( matchName.indexOf( filter ) >= 0 ) props.push( prop );
    }
    else if ( typeof filter === "function" ) {
        if ( filter( prop ) ) props.push( prop );
    }
    else if ( prop.propertyType == filter ) {
        props.push( prop );
    }
    else if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( prop.propertyValueType == filter ) props.push( prop );
    }    
    

    if ( prop.numProperties > 0 ) {
        for ( var k = 1; k <= prop.numProperties; k++ ) {
            props = props.concat( DuAEF.DuAE.Property.getProps( prop.property( k ), filter, strict, caseSensitive ) );
        }
    }

    return DuAEF.DuAE.getPropertyInfos( props );
}

/**
 * Gets the layer containing the property
 * @param {PropertyBase|PropertyInfo}	prop	- The After Effects Property
 * @return {Layer}	The layer
 */
DuAEF.DuAE.Property.getLayer = function ( prop ) {
    if ( typeof prop === 'undefined' ) throw "You must provide a property.";
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    var parentProp = prop;
    while ( parentProp.parentProperty ) {
        parentProp = parentProp.parentProperty;
    }
    return parentProp;
}

/**
 * Gets the composition containing the property
 * @param {PropertyBase|PropertyInfo}	prop	- The After Effects Property
 * @return {CompItem}	The composition
 */
DuAEF.DuAE.Property.getComp = function ( prop ) {
    var layer = DuAEF.DuAE.Property.getLayer( prop );
    return layer.containingComp;
}

/**
 * Generates a new unique name for a marker for this marker porperty
 * @param {string} newName	- The wanted new name
 * @param {Property} prop 	- The comp
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuAE.Property.newUniqueMarkerName = function ( newName, prop, increment ) {
    if ( increment == undefined ) increment = true;
    var markerNames = [];
    for ( var i = 1, num = prop.numKeys; i <= num; i++ ) {
        markerNames.push( prop.keyValue( i ).comment );
    }
    return DuAEF.DuJS.String.generateUnique( newName, markerNames, increment );
}

/**
 * Gets the number of dimensions of a property
 * @param {Property|PropertyInfo}	prop	- The After Effects Property
 * @return {int}	The number of dimensions, 0 if this is not a dimensionnal value (ie color, text, shape...)
 */
DuAEF.DuAE.Property.getDimensions = function ( prop ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    var dimensions = 0;
    if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL || prop.propertyValueType == PropertyValueType.ThreeD ) {
        if ( ( prop.matchName == "ADBE Scale" || prop.matchName == "ADBE Position" ) && !DuAEF.DuAE.Property.getLayer( prop ).threeDLayer ) {
            dimensions = 2;
        } else {
            dimensions = 3;
        }
    } else if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL || prop.propertyValueType == PropertyValueType.TwoD ) {
        dimensions = 2;
    } else if ( prop.propertyValueType == PropertyValueType.OneD ) {
        dimensions = 1;
    } else if ( prop.propertyValueType == PropertyValueType.COLOR ) {
        dimensions = 4;
    }
    return dimensions;
}

/**
 * Checks if this property value can be edited
 * @param {Property|PropertyInfo} prop - The After Effects Property
 * @return {bool} true if the value of the property can be edited, false otherwise
 */
DuAEF.DuAE.Property.isEditable = function ( prop ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();

    if ( prop.propertyType != PropertyType.PROPERTY ) return false;
    if ( prop.elided ) return false;
    if ( prop.dimensionsSeparated ) return false;
    if ( prop.propertyValueType == PropertyValueType.NO_VALUE ) return false;
    if ( prop.propertyValueType == PropertyValueType.CUSTOM_VALUE ) return false;
    if ( prop.propertyValueType == PropertyValueType.LAYER_INDEX ) return false;
    if ( prop.propertyValueType == PropertyValueType.MASK_INDEX ) return false;
    try {
        if ( typeof prop.value === 'undefined' ) return false;
    } catch ( e ) {
        return false;
    }
    if (DuAEF.DuAE.Property.isMasterProperty( prop )) return true;
    
    if ( prop.numKeys == 0 ) {
        try {
            prop.setValue( prop.valueAtTime( 0, true ) );
            return true;
        } catch ( e ) {
            return false;
        }
    } else {
        try {
            prop.setValueAtKey( 1, prop.keyValue( 1 ) );
            return true;
        } catch ( e ) {
            return false;
        }
    }

    return true;
}

/**
 * Checks if a property is part of the master properties of a precomp
 * @param {Property|PropertyInfo} prop - The After Effects Property
 * @return {bool} true if property is part of the master properties
 */
DuAEF.DuAE.Property.isMasterProperty = function ( prop ) {
    while ( prop.parentProperty !== null ) {
        if (prop.matchName == 'ADBE Layer Overrides') return true;
        prop = prop.parentProperty;
    }
    return false;
}

/**
 * Checks if this property value can be rigged (with an expression)
 * @param {Property|PropertyInfo} prop - The After Effects Property
 * @return {bool} true if the value of the property can be rigged, false otherwise
 */
DuAEF.DuAE.Property.isRiggable = function ( prop ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();

    if ( prop.propertyType != PropertyType.PROPERTY ) return false;
    if ( !prop.canVaryOverTime ) return false;
    if ( !prop.canSetExpression ) return false;
    if ( prop.elided ) return false;
    if ( prop.dimensionsSeparated ) return false;
    if ( typeof prop.expression !== 'string' ) return false;
    var expressionEnabled = prop.expressionEnabled;
    try {
        prop.expressionEnabled = expressionEnabled;
        return true;
    } catch ( e ) {
        return false;
    }
}

/**
 * Gets the key at a given index on a property
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {int}	keyIndex	- The index of the key to retrieve. If the index is negative, it is counted from the end i.e. to retrieve the keyframe before the last one, use -2 (-1 is the last)
 * @return {KeyFrame}	The keyframe, or null if incorrect index
 */
DuAEF.DuAE.Property.getKeyFrameAtIndex = function ( prop, keyIndex ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( Math.abs( keyIndex ) > prop.numKeys || keyIndex == 0 ) {
        return null;
    }
    if ( keyIndex < 0 ) {
        keyIndex = prop.numKeys - keyIndex + 1;
    }

    var key = new KeyFrame();
    key._time = prop.keyTime( keyIndex );
    key.value = prop.keyValue( keyIndex );
    key._inInterpolationType = prop.keyInInterpolationType( keyIndex );
    key._outInterpolationType = prop.keyOutInterpolationType( keyIndex );
    if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL || prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) {
        key._spatial = true;
        key.spatialProperties.inTangent = prop.keyInSpatialTangent( keyIndex );
        key.spatialProperties.outTangent = prop.keyOutSpatialTangent( keyIndex );
        key.spatialProperties._continuous = prop.keySpatialContinuous( keyIndex );
        key.spatialProperties._autoBezier = prop.keySpatialAutoBezier( keyIndex );
        key.spatialProperties._roving = prop.keyRoving( keyIndex );
    }
    key.inEase = prop.keyInTemporalEase( keyIndex );
    key.outEase = prop.keyOutTemporalEase( keyIndex );
    key._continuous = prop.keyTemporalContinuous( keyIndex );
    key._autoBezier = prop.keyTemporalAutoBezier( keyIndex );
    key._index = keyIndex;

    return key;
}

/**
 * Gets the nearest key at a given time on a property
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {float}	time	- The time of the key to retrieve.
 * @return {KeyFrame}	The keyframe, or null if incorrect time or not found
 */
DuAEF.DuAE.Property.getNearestKeyFrameAtTime = function ( prop, time ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    return DuAEF.DuAE.Property.getKeyFrameAtIndex( prop.nearestKeyIndex( time ) );
}

/**
 * Gets the key at an exactly given time on a property
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {float}	time	- The time of the key to retrieve.
 * @return {KeyFrame}	The keyframe, or null if incorrect time
 */
DuAEF.DuAE.Property.getKeyFrameAtTime = function ( prop, time ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( !prop.canVaryOverTime ) return null;
    if ( prop.numKeys == 0 ) return null;
    var key = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, prop.nearestKeyIndex( time ) );
    if ( key === null ) return key;
    if ( key._time == time ) return key;
    else return null;
}

/**
 * Gets the property keyframes in the whole timeline or in the time range<br />
 * The KeyFrame._time will be adjusted relatively to the start of the time range instead of the startTime of the composition.
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {boolean}	[selected=false]	- true to get only selected keyframes.
 * @param {float[]}	[timeRange]	- The time range, an array of two time values, in seconds. If not provided, will use the comp time range.<br />
 * Ignored if selected is true;
 * @return {KeyFrame[]}	The keyframes, or null of this property is of type PropertyValueType.NO_VALUE or PropertyValueType.CUSTOM_VALUE
 */
DuAEF.DuAE.Property.getKeyFrames = function ( prop, selected, timeRange ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( prop.propertyValueType == PropertyValueType.NO_VALUE ) return [];
    if ( prop.propertyValueType == PropertyValueType.CUSTOM_VALUE ) return [];

    var comp = DuAEF.DuAE.Property.getComp( prop );
    if ( timeRange == undefined ) timeRange = [ 0, comp.duration ];
    if ( selected == undefined ) selected = false;

    var keyFrames = [];

    if ( prop.elided ) return keyFrames;

    if ( prop.isTimeVarying ) {
        if ( selected ) {
            for ( var keyIndex = 0; keyIndex < prop.selectedKeys.length; keyIndex++ ) {
                var key = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, prop.selectedKeys[ keyIndex ] );
                if ( key._time >= timeRange[ 0 ] && key._time <= timeRange[ 1 ] ) {
                    key._time = key._time - timeRange[ 0 ];
                    keyFrames.push( key );
                }
            }
        } else if ( prop.numKeys > 0 ) {
            for ( var keyIndex = 1; keyIndex <= prop.numKeys; keyIndex++ ) {
                var key = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, keyIndex );
                if ( key._time >= timeRange[ 0 ] && key._time <= timeRange[ 1 ] ) {
                    key._time = key._time - timeRange[ 0 ];
                    keyFrames.push( key );
                }
            }
        }
    }
    return keyFrames;
}

/**
 * Gets all animations in the group in the whole timeline or in the time range<br />
 * The first KeyFrame._time will be adjusted relatively to the start of the time range (if provided) instead of the startTime of the composition.
 * @param {PropertyGroup|PropertyInfo}	prop	- The property.
 * @param {boolean}	[selected=false]	- true to get only selected keyframes.
 * @param {float[]}	[timeRange]	- The time range, an array of two time values, in seconds. If not provided, will use the comp time range.
 * @return {PropertyGroupAnim|PropertyAnim}	The animations. A PropertyAnim if prop is a Property, a PopertyGroupAnim if it is a PropertyGroup
 */
DuAEF.DuAE.Property.getAnim = function ( prop, selected, timeRange ) {
    var comp = DuAEF.DuAE.Property.getComp( prop );
    if ( typeof timeRange === 'undefined' ) timeRange = [ 0, comp.duration ];
    if ( typeof selected === 'undefined' ) selected = false;

    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();

    if ( selected && !DuAEF.DuAE.Property.hasSelectedKeys( prop ) ) return null;

    if ( prop.propertyType === PropertyType.PROPERTY ) {
        if ( prop.propertyValueType == PropertyValueType.NO_VALUE ) return null;
        if ( prop.elided ) return null;
        if ( !prop.canVaryOverTime ) return null;
        var anim = new PropertyAnim();
        anim._name = prop.name;
        anim._matchName = prop.matchName;
        anim.startValue = prop.valueAtTime( timeRange[ 0 ], true );
        anim.endValue = prop.valueAtTime( timeRange[ 1 ], true );
        anim.keys = DuAEF.DuAE.Property.getKeyFrames( prop, selected, timeRange );
        if ( anim.keys.length > 0 ) {
            anim.startTime = anim.keys[ 0 ]._time;
            anim.endTime = anim.keys[ anim.keys.length - 1 ]._time;
        } else {
            anim.startTime = 0;
            anim.endTime = 0;
        }
        anim.dimensions = DuAEF.DuAE.Property.getDimensions( prop );
        if ( prop.canSetExpression ) anim.expression = prop.expression;
        return anim;
    } else if ( prop.numProperties > 0 ) {
        var groupAnim = new PropertyGroupAnim();
        groupAnim._name = prop.name;
        groupAnim._matchName = prop.matchName;

        for ( var propIndex = 1; propIndex <= prop.numProperties; propIndex++ ) {
            var anim = DuAEF.DuAE.Property.getAnim( prop.property( propIndex ), selected, timeRange );
            if ( anim != null ) {
                if ( groupAnim.startTime == null ) groupAnim.startTime = anim.startTime;
                else if ( groupAnim.startTime > anim.startTime ) groupAnim.startTime = anim.startTime;
                if ( groupAnim.endTime == null ) groupAnim.endTime = anim.endTime;
                else if ( groupAnim.endTime > anim.endTime ) groupAnim.endTime = anim.endTimeendTime;
                groupAnim.anims.push( anim );
            }
        }
        return groupAnim;
    }
    return null;
}

DuAEF.DuAE.Property.addToExpressionCache = function ( prop , compCache) {
    compCache = def(compCache, false);
    if ( prop.propertyType === PropertyType.PROPERTY ) {
        var exp = new PropertyExpression(prop);
        if ( !exp.empty && compCache) DuAEF.DuAE.Comp.expressionCache.push(exp);
        else if (!exp.empty) DuAEF.DuAE.Project.expressionCache.push(exp);
    }
    else if ( prop.numProperties > 0 ) {
        for ( var p = 1; p <= prop.numProperties; p++ ) {
            DuAEF.DuAE.Property.addToExpressionCache( prop.property(p), compCache );
        }
    }
}

/**
 * Gets the time of the first keyFrame
 * @param {PropertyBase[]|PropertyInfo[]} props - The properties
 * @param {boolean} selected - true to check selected keyframes only
 * @return {float|null} The keyframe time or null if there are no keyframe
 */
DuAEF.DuAE.Property.firstKeyFrameTime = function ( prop, selected ) {
    var time = null;

    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( !prop.canVaryOverTime ) return null;
        if ( selected ) {
            if ( prop.selectedKeys.length == 0 ) return null;
            for ( var keyIndex = 0; keyIndex < prop.selectedKeys.length; keyIndex++ ) {
                var key = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, prop.selectedKeys[ keyIndex ] );
                if ( time == null ) time = key._time;
                else if ( time > key._time ) time = key._time;
            }
        } else {
            if ( prop.numKeys == 0 ) return null;
            for ( var keyIndex = 1; keyIndex <= prop.numKeys; keyIndex++ ) {
                var key = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, keyIndex );
                if ( time == null ) time = key._time;
                else if ( time > key._time ) time = key._time;
            }
        }
    } else if ( prop.numProperties > 0 ) {
        for ( var propIndex = 1; propIndex <= prop.numProperties; propIndex++ ) {
            var test = DuAEF.DuAE.Property.firstKeyFrameTime( prop.property( propIndex ), selected );
            if ( time == null ) time = test;
            else if ( test != null ) {
                if ( time > test ) time = test;
            }
        }
    }

    return time;
}

/**
 * Sets a {@linkcode KeyFrame} on a property
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {KeyFrame}	key	- The KeyFrame.
 * @param {float}	[timeOffset=comp.time]	- The time offset (added to KeyFrame._time) where to add the key frame.
 */
DuAEF.DuAE.Property.setKey = function ( prop, key, timeOffset ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( prop.elided ) return;
    if ( !prop.propertyType === PropertyType.PROPERTY ) throw "Can not set a key on a group property";
    if ( !prop.canVaryOverTime ) return;
    if ( prop.isSeparationLeader )
        if ( prop.dimensionsSeparated ) return;

    if ( timeOffset == undefined ) timeOffset = DuAEF.DuAE.Property.getComp( prop ).time;
    var time = key._time + timeOffset;
    var propDimensions = DuAEF.DuAE.Property.getDimensions( prop );
    var val = key.value;

    if ( propDimensions > 1 && !( val instanceof Array ) ) {
        val = [ val ];
    }

    if ( val instanceof Array ) {
        while ( val.length < propDimensions ) {
            val.push( 0 );
        }
        while ( val.length > propDimensions ) {
            val.pop();
        }
    }

    DuAEF.DuAE.Property.setValueAtTime( prop, val, time );
    if ( prop.numKeys == 0 ) return;

    var index = prop.nearestKeyIndex( time );

    if ( key._spatial && ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL || prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) ) {
        try {
            prop.setSpatialContinuousAtKey( index, key.spatialProperties._continuous );
            prop.setSpatialAutoBezierAtKey( index, key.spatialProperties._autoBezier );
            prop.setRovingAtKey( index, key.spatialProperties._roving );
            prop.setSpatialTangentsAtKey( index, key.spatialProperties.inTangent, key.spatialProperties.outTangent );
        } catch ( err ) {
            if ( DuAEF.debug ) alert( err.description );
        };
    }

    try {
        prop.setTemporalContinuousAtKey( index, key._continuous );
        prop.setTemporalAutoBezierAtKey( index, key._autoBezier );
        prop.setTemporalEaseAtKey( index, key.inEase, key.outEase );
        prop.setInterpolationTypeAtKey( index, key._inInterpolationType, key._outInterpolationType );
    } catch ( err ) {
        if ( DuAEF.debug ) alert( err.description );
    }

}

/**
 * Sets the property animation on the property.<br />
 * Use this method only to force the animation onto the property without checks.<br />
 * Must be used on a Property (not a group) with a PropertyAnim (not a PropertyGroupAnim).<br />
 * To easily set an animation on a property with automatic compatibility checks, you should use setGroupAnim().
 * @param {Property|PropertyInfo}	prop	- The property.
 * @param {PropertyAnim} anims	- The animation
 * @param {float}	[time=comp.time]	- The time where to begin the animation
 * @param {boolean}	[setExpression=false]	- Sets the expression too
 * @param {boolean}	[replace=false]	- true to remove any existing keyframe on the properties before adding new keyframes
 * @param {boolean}	[offset=false]	- true to offset the current value, instead of replacing it
 * @return {boolean} true if the anim was actually set.
 */
DuAEF.DuAE.Property.setAnim = function ( prop, anim, time, setExpression, replace, offset ) {
    var propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();
    var comp = propInfo.comp;
    time = def( time, comp.time );
    setExpression = def( setExpression, false );
    replace = def( replace, false );
    offset = def( offset, false );

    if ( !propInfo.numerical ) offset = false;

    var dimensions = anim.dimensions;

    var ok = false;

    if ( anim == null ) return true;
    if ( anim.type == 'group' ) return false;

    if ( propInfo.editable ) {
        var val = prop.valueAtTime( comp.time, true );

        if ( replace && prop.numKeys > 0 ) {
            for ( var i = prop.numKeys; i > 0; i-- ) {
                prop.removeKey( i );
            }
            DuAEF.DuAE.Property.setValue( prop, val );
        }

        if ( anim.keys.length > 0 ) {
            for ( var iclef = 0; iclef < anim.keys.length; iclef++ ) {
                var key = anim.keys[ iclef ];
                if ( offset ) {
                    if ( iclef == 0 ) key.value = val;
                    else key.value = val + ( key.value - anim.startValue );
                }
                DuAEF.DuAE.Property.setKey( prop, key, time );
                ok = true;
            }
        } else //set the start value
        {
            var value = anim.startValue;
            if ( value instanceof Array ) {
                while ( value.length < dimensions ) {
                    value.push( 0 );
                }
                while ( value.length > dimensions ) {
                    value.pop();
                }
            }

            if ( anim.startValue != null && !offset ) {
                if ( prop.numKeys == 0 ) {
                    DuAEF.DuAE.Property.setValue( prop, anim.startValue );
                } else {
                    try {
                        prop.setValueAtTime( time, anim.startValue );
                    } catch ( e ) {};
                }
            }
            ok = true;
        }

        if ( propInfo.riggable && setExpression ) {
            try {
                prop.expression = anim.expression;
            } catch ( e ) {
                if ( DuAEF.debug ) alert( e.description );
            };
        }
    }

    return ok;
}

/**
 * Sets all animations on a Property or a PropertyGroup.
 * @param {PropertyGroup|PropertyInfo}	prop	- The property group.
 * @param {PropertyAnim} anims	- The animation
 * @param {float}	[time=comp.time]	- The time where to begin the animation
 * @param {boolean}	[ignoreName=false]	- true to set the anim even if name of the property do not match the animation.
 * @param {boolean}	[setExpression=false]	- Sets the expression too
 * @param {boolean}	[onlyKeyframes=true]	- If false, the value of properties without keyframes will be set too.
 * @param {boolean}	[replace=false]	- true to remove any existing keyframe on the properties before adding new keyframes
 * @param {string[]}	[whiteList]	- A list of matchNames used as a white list for properties to set anims.<br />
 * Can be the matchName of a propertyGroup to set all the subproperties.<br />
 * Ignored if the list is empty.
 * @param {boolean}	[offset=false]	- true to offset the current value, instead of replacing it
 * @return {boolean} true if the anim was actually set.
 */
DuAEF.DuAE.Property.setGroupAnim = function ( prop, anim, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, set ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( typeof time === 'undefined' ) time = DuAEF.DuAE.Property.getComp( prop ).time;
    if ( typeof ignoreName === 'undefined' ) ignoreName = false;
    if ( typeof setExpression === 'undefined' ) setExpression = false;
    if ( typeof onlyKeyframes === 'undefined' ) onlyKeyframes = false;
    if ( typeof replace === 'undefined' ) replace = false;
    if ( typeof whiteList === 'undefined' ) whiteList = [];
    if ( typeof offset === 'undefined' ) offset = false;
    if ( typeof reverse === 'undefined' ) reverse = false;
    if ( typeof set === 'undefined' ) set = false;

    if ( whiteList.length == 0 ) set = true;
    if ( DuAEF.DuJS.Array.indexOf( whiteList, anim._matchName ) >= 0 ) set = true;

    var ok = false;

    if ( anim == null ) return true;

    if ( anim.type == 'anim' ) {
        if ( set ) {
            var okToSet = false;
            if ( prop.matchName == anim._matchName ) {
                if ( !ignoreName && prop.name == anim._name ) okToSet = true;
                if ( ignoreName ) okToSet = true;
                if ( onlyKeyframes && anim.keys.length == 0 ) okToSet = false;
            }

            if ( okToSet ) return DuAEF.DuAE.Property.setAnim( prop, anim, time, setExpression, replace, offset );
        }
    } else {
        for ( var i = 0; i < anim.anims.length; i++ ) {
            var propAnim = anim.anims[ i ];
            for ( var j = 1; j <= prop.numProperties; j++ ) {
                var subProp = prop.property( j );
                var okToSet = false;
                if ( subProp.matchName == propAnim._matchName ) {
                    if ( !ignoreName && subProp.name == propAnim._name ) okToSet = true;
                    if ( ignoreName ) okToSet = true;
                }
                if ( okToSet ) {
                    ok = DuAEF.DuAE.Property.setGroupAnim( subProp, propAnim, time, ignoreName, setExpression, onlyKeyframes, replace, whiteList, offset, set );
                    break;
                }
            }
        }
    }

    return ok;
}

/**
 * Removes the animation from the property
 * @param {Property|PropertyInfo} prop -The property
 * @param {boolean} [removeExpression=false] - Set to true to remove the expression too
 */
DuAEF.DuAE.Property.removeAnim = function ( prop, removeExpression ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    while ( prop.numKeys > 0 ) {
        prop.removeKey( 1 );
    }
    if ( removeExpression && prop.canSetExpression ) {
        prop.expression = '';
    }
}

/**
 * Selects the keyframes in the propoerty.<br />
 * Selects all nested keyframes if the property is a group.
 * @param {PropertyBase|PropertyInfo} property - The property
 * @param {float} [inTime=0] - The time at which to select the keyframes
 * @param {float} [outTime=inTime] - The end time
 */
DuAEF.DuAE.Property.selectKeyFrames = function ( property, inTime, outTime ) {
    if ( inTime == undefined ) inTime = 0;
    if ( outTime == undefined ) outTime = inTime;
    var prop;
    if ( property instanceof PropertyInfo ) prop = property.getProperty();
    else prop = property;

    if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( prop.elided ) return;
        if ( prop.isSeparationLeader )
            if ( prop.dimensionsSeparated ) return;
        if ( inTime == outTime ) {
            var key = DuAEF.DuAE.Property.getKeyFrameAtTime( prop, inTime );
            if ( key ) prop.setSelectedAtKey( key._index, true );
        } else {
            var keys = DuAEF.DuAE.Property.getKeyFrames( prop, false, [ inTime, outTime ] );
            if ( !keys ) return;
            for ( var i = 0; i < keys.length; i++ ) {
                prop.setSelectedAtKey( keys[ i ]._index, true );
            }
        }
    } else if ( prop.numProperties > 0 ) {
        for ( var i = 1; i <= prop.numProperties; i++ ) {
            DuAEF.DuAE.Property.selectKeyFrames( prop.property( i ), inTime, outTime );
        }
    }
}

/**
 * Gets an expression link to the property
 * @memberof DuAEF.DuAE.Property
 * @param {Property|PropertyInfo}	prop			- The property
 * @param {bool}		[useThisComp=false]		- Wether to begin the expression by 'thisComp' or 'comp("name")'
 * @param {bool}		[fromLayer=true]		- Wether to begin the expression by comp.layer or directly from the first prop of the layer
 * @return {str}		The expression link to the property
 */
DuAEF.DuAE.Property.getExpressionLink = function ( prop, useThisComp, fromLayer ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( useThisComp == undefined ) useThisComp = false;
    if ( fromLayer == undefined ) fromLayer = true;

    function getCompactExpression( matchName, name ) {
        var translatedName = DuAEF.DuAE.compactExpressions[ matchName ];

        if ( translatedName !== undefined )
            return eval( translatedName );
        else
            return ( "(" + name + ")" );
    }

    var exprCode = "";
    var name;
    while ( prop.parentProperty !== null ) {
        if (prop.parentProperty.matchName != "ADBE Layer Overrides")
        {
            if ( prop.propertyType == PropertyType.PROPERTY ) name = prop.propertyIndex;
            else if ( prop.parentProperty.propertyType == PropertyType.INDEXED_GROUP ) {
                name = "\"" + prop.name + "\"";
            } else {
                name = "\"" + prop.matchName + "\"";
            }
            compactName = getCompactExpression( prop.matchName, name );
            exprCode = compactName + exprCode;
        }
        else
        {
            exprCode = '("' + prop.name + '")';
        }
        
        prop = prop.parentProperty;
    }

    if ( exprCode.indexOf( "(" ) != 0 && exprCode != "" ) exprCode = '.' + exprCode;

    if ( fromLayer ) {
        var comp = prop.containingComp;
        name = "\"" + prop.name + "\"";
        exprCode = "layer(" + name + ")" + exprCode;
        if ( useThisComp ) exprCode = "thisComp." + exprCode;
        else exprCode = "comp(\"" + comp.name + "\")." + exprCode;
    }

    return exprCode;
}

/**
 * Sets a value on a property, adjusting the dimensions if needed
 * @param {Property|PropertyInfo} prop - The property
 * @param {any} value - The value to set
 * @return {boolean} True if the value has correctly been set, false otherwise.
 */
DuAEF.DuAE.Property.setValue = function ( prop, value ) {
    var dimensions = 0;
    var editable = false;
    if ( prop instanceof PropertyInfo ) {
        propInfo = prop;
        prop = propInfo.getProperty();
    } else {
        propInfo = new PropertyInfo( prop );
    }
    dimensions = propInfo.dimensions;
    editable = propInfo.editable;

    if ( prop.isSeparationLeader )
        if ( prop.dimensionsSeparated ) return false;

    if ( !editable ) return false;

    if ( dimensions == 0 || dimensions == 1 ) {
        if ( value instanceof Array ) value = value[ 0 ];
        try {
            prop.setValue( value );
            return true;
        } catch ( e ) {
            if ( DuAEF.debug ) alert( e.description );
            return false;
        }
    } else {
        if ( !( value instanceof Array ) ) value = [ value ];
        while ( value.length < dimensions ) {
            value.push( 0 );
        }
        while ( value.length > dimensions ) {
            value.pop();
        }
        try {
            prop.setValue( value );
            return true;
        } catch ( e ) {
            if ( DuAEF.debug ) alert( e.description );
            return false;
        }
    }
}

/**
 * Sets a new keyframe on a property, adjusting the dimensions if needed, at desired time
 * @param {Property|PropertyInfo} prop - The property
 * @param {any} value - The value to set
 * @param {float} [time] - The time of the new keyframe
 */
DuAEF.DuAE.Property.setValueAtTime = function ( prop, value, time ) {
    var dimensions = 0;
    var editable = false;
    if ( prop instanceof PropertyInfo ) {
        propInfo = prop;
        prop = propInfo.getProperty();
    } else {
        propInfo = new PropertyInfo( prop );
    }
    dimensions = propInfo.dimensions;
    editable = propInfo.editable;

    if ( typeof time === 'undefined' ) time = propInfo.comp.time;

    if ( !prop.canVaryOverTime ) return;
    if ( prop.isSeparationLeader )
        if ( prop.dimensionsSeparated ) return;

    if ( !editable ) return;

    if ( dimensions == 0 || dimensions == 1 ) {
        if ( value instanceof Array ) value = value[ 0 ];
        try {
            prop.setValueAtTime( time, value );
        } catch ( e ) {
            if ( DuAEF.debug ) alert( e.description );
        }
    } else {
        if ( !( value instanceof Array ) ) value = [ value ];
        while ( value.length < dimensions ) {
            value.push( 0 );
        }
        while ( value.length > dimensions ) {
            value.pop();
        }
        try {
            prop.setValueAtTime( time, value );
        } catch ( e ) {
            if ( DuAEF.debug ) alert( e.description );
        }
    }
}

/**
 * Changes the interpolation type on selected keyframes, or sets a new key at current time if there are no keyframes selected.
 * @param {Layer[]|LayerCollection} layers - The layers containing the properties
 * @param {PropertyBase[]|PropertyInfo[]} props - The properties
 * @param {KeyframeInterpolationType|string} typeIn - The in interpolation type (see AE API) or the string "roving" or "continuous"
 * @param {KeyframeInterpolationType|string} [typeOut=typeIn] - The out interpolation type (see AE API)
 * @param {int[]|int} [easeInValue=33] - The in interpolation ease value (used if typeIn is KeyframeInterpolationType.BEZIER)
 * @param {int[]|int} [easeOutValue=easeInValue] - The out interpolation ease value (used if typeOut is KeyframeInterpolationType.BEZIER)
 */
DuAEF.DuAE.Property.setInterpolationType = function ( layers, props, typeIn, typeOut, easeInValue, easeOutValue ) {
    if ( typeOut == undefined ) typeOut = typeIn;
    if ( easeInValue == undefined ) easeInValue = 33;
    if ( isNaN( easeInValue ) ) easeInValue = 33;
    if ( easeOutValue == undefined ) easeOutValue = easeInValue;
    if ( isNaN( easeOutValue ) ) easeOutValue = 33;

    if ( layers.length == 0 ) return;

    if ( !DuAEF.DuAE.Layer.haveSelectedKeys( layers ) ) {
        DuAEF.DuAE.Property.addKey( props, typeIn, typeOut, easeInValue, easeOutValue );
    } else {
        for ( var i = 0; i < props.length; i++ ) {
            var propInfo = props[ i ];
            var prop = props[ i ];
            if ( !( propInfo instanceof PropertyInfo ) ) propInfo = new PropertyInfo( prop );
            prop = props[ i ].getProperty();

            if ( prop.canVaryOverTime ) {
                for ( var k = 0, num = prop.selectedKeys.length; k < num; k++ ) {
                    DuAEF.DuAE.Property.setKeyInterpolation( prop, prop.selectedKeys[ k ], typeIn, typeOut, easeInValue, easeOutValue );
                }
            }
        }
    }
}

/**
 * Sets interpolations on a keyframe.<br />
 * @param {Property} prop - The property
 * @param {int} key - The key index
 * @param {KeyframeInterpolationType|string} typeIn - The in interpolation type (see AE API) or the string "roving" or "continuous"
 * @param {KeyframeInterpolationType|string} [typeOut=typeIn] - The out interpolation type (see AE API)
 * @param {int[]|int} [easeInValue=33] - The in interpolation ease value (used if typeIn is KeyframeInterpolationType.BEZIER)
 * @param {int[]|int} [easeOutValue=easeInValue] - The out interpolation ease value (used if typeOut is KeyframeInterpolationType.BEZIER)
 */
DuAEF.DuAE.Property.setKeyInterpolation = function ( prop, key, typeIn, typeOut, easeInValue, easeOutValue ) {
    if ( typeOut == undefined ) typeOut = typeIn;
    if ( easeInValue == undefined ) easeInValue = 33;
    if ( isNaN( easeInValue ) ) easeInValue = 33;
    if ( easeOutValue == undefined ) easeOutValue = easeInValue;
    if ( isNaN( easeOutValue ) ) easeOutValue = 33;

    easeInValue = new KeyframeEase( 0, easeInValue );
    easeOutValue = new KeyframeEase( 0, easeOutValue );

    if ( typeIn == "roving" && prop.isSpatial ) {
        prop.setRovingAtKey( key, true );
    } else if ( typeIn == "continuous" ) {
        prop.setInterpolationTypeAtKey( key, KeyframeInterpolationType.BEZIER );
        prop.setTemporalContinuousAtKey( key, true );
        prop.setTemporalAutoBezierAtKey( key, true );
        if ( prop.isSpatial ) prop.setRovingAtKey( key, false );
    } else if ( typeIn != "roving" ) {
        if ( !prop.isSpatial && prop.value.length == 3 ) {
            prop.setTemporalEaseAtKey( key, [ easeInValue, easeInValue, easeInValue ], [ easeOutValue, easeOutValue, easeOutValue ] );
        } else if ( !prop.isSpatial && prop.value.length == 2 ) {
            prop.setTemporalEaseAtKey( key, [ easeInValue, easeInValue ], [ easeOutValue, easeOutValue ] );
        } else {
            prop.setTemporalEaseAtKey( key, [ easeInValue ], [ easeOutValue ] );
        }
        prop.setInterpolationTypeAtKey( key, typeIn, typeOut );
        if ( prop.isSpatial ) {
            if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL || prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) prop.setRovingAtKey( key, false );
        }
        prop.setTemporalContinuousAtKey( key, false );
    }
}

/**
 * Adds a new keyframe on the properties.<br />
 * To set a value of your choice on one property,<br />
 * you can create a new {@link KeyFrame}, then use {@link DuAEF.DuAE.Property.setKey}.
 * @param {PropertyBase[]|PropertyInfo[]} props - The properties
 * @param {KeyframeInterpolationType|string} typeIn - The in interpolation type (see AE API) or the string "roving" or "continuous"
 * @param {KeyframeInterpolationType|string} [typeOut=typeIn] - The out interpolation type (see AE API)
 * @param {int[]|int} [easeInValue=33] - The in interpolation ease value (used if typeIn is KeyframeInterpolationType.BEZIER)
 * @param {int[]|int} [easeOutValue=easeInValue] - The out interpolation ease value (used if typeOut is KeyframeInterpolationType.BEZIER)
 * @param {float} [time=comp.time] - The time at which to add the key
 */
DuAEF.DuAE.Property.addKey = function ( props, typeIn, typeOut, easeInValue, easeOutValue, time ) {
    for ( var i = 0; i < props.length; i++ ) {
        var propInfo = props[ i ];
        var prop = props[ i ];
        if ( !( propInfo instanceof PropertyInfo ) ) propInfo = new PropertyInfo( prop );
        prop = props[ i ].getProperty();
        var comp = DuAEF.DuAE.Property.getComp( prop );
        if ( prop.canVaryOverTime ) {
            var keyTime;
            if ( typeof time === 'undefined' ) keyTime = comp.time;
            else keyTime = time;
            var key = prop.addKey( keyTime );
            DuAEF.DuAE.Property.setKeyInterpolation( prop, key, typeIn, typeOut, easeInValue, easeOutValue );
        }
    }
}

/**
 * Computes a percentage from a velocity on a given keyframe. 
 * @param {Property|PropertyInfo} prop - The property
 * @param {int} key - The index of the keyframe where to compute the velocity
 * @return {float[]} The velocities [in, out] as a percentage.
 */
DuAEF.DuAE.Property.velocityToPercent = function ( prop, key ) {
    var propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();

    var speedIn = prop.keyInTemporalEase( key )[ 0 ].speed;
    var speedOut = prop.keyOutTemporalEase( key )[ 0 ].speed;

    var prevSpeed = 0;
    var nextSpeed = 0;
    var val = prop.keyValue( key );
    var currentTime = prop.keyTime( key );
    if ( key > 1 ) {
        var valBefore = prop.keyValue( key - 1 );
        var timeBefore = prop.keyTime( key - 1 );
        prevSpeed = DuAEF.DuJS.Math.getLength( val, valBefore ) / ( currentTime - timeBefore );
    }

    if ( key < prop.numKeys ) {
        var valAfter = prop.keyValue( key + 1 );
        var timeAfter = prop.keyTime( key + 1 );
        nextSpeed = DuAEF.DuJS.Math.getLength( val, valBefore ) / ( timeAfter - currentTime );
    }

    var speed = ( prevSpeed + nextSpeed ) / 2;

    var speedInAsPercent = speedIn / speed * 100;
    var speedOutAsPercent = speedOut / speed * 100;

    return [ speedInAsPercent, speedOutAsPercent ];
}

/**
 * Changes the ease influences of the selected keys
 * @param {PropertyBase[]|PropertyInfo[]} props - The properties
 * @param {int[]|int} [easeInValue] - The in interpolation ease value. Will be ignored if undefined.
 * @param {int[]|int} [easeOutValue] - The out interpolation ease value. Will be ignored if undefined.
 * @param {int[]|int} [velocityInValue] - The out interpolation ease value. Will be ignored if undefined.
 * @param {int[]|int} [velocityOutValue] - The out interpolation ease value. Will be ignored if undefined.
 * @param {boolean} [velocityAsPercent=false] - Use a percent instead of a value to set velocities.<br />
 * In this case, the proper velocity value will be deduced by multiplying the max speed of the property by the percent.
 */
DuAEF.DuAE.Property.setEase = function ( props, easeInValue, easeOutValue, velocityInValue, velocityOutValue, velocityAsPercent ) {
    if ( isNaN( easeInValue ) && typeof easeInValue !== 'undefined' ) easeInValue = 33;
    if ( isNaN( easeOutValue ) && typeof easeOutValue !== 'undefined' ) easeOutValue = 33;
    if ( isNaN( velocityInValue ) && typeof velocityInValue !== 'undefined' ) velocityInValue = 0;
    if ( isNaN( velocityOutValue ) && typeof velocityOutValue !== 'undefined' ) velocityOutValue = 0;

    for ( var i = 0; i < props.length; i++ ) {
        var propInfo = new PropertyInfo( props[ i ] );
        var prop = propInfo.getProperty();

        var comp = propInfo.comp;

        if ( prop.canVaryOverTime ) {

            var vInValue = velocityInValue;
            var vOutValue = velocityOutValue;

            for ( var k = 0; k < prop.selectedKeys.length; k++ ) {
                var key = prop.selectedKeys[ k ];

                if ( typeof easeInValue !== 'undefined' ) {
                    if ( typeof velocityInValue === 'undefined' && prop.keyInInterpolationType( key ) == KeyframeInterpolationType.LINEAR ) {
                        vInValue = 0;
                    }
                }

                if ( typeof easeOutValue !== 'undefined' ) {
                    if ( typeof velocityOutValue === 'undefined' && prop.keyOutInterpolationType( key ) == KeyframeInterpolationType.LINEAR ) {
                        vOutValue = 0;
                    }
                }

                if ( velocityAsPercent ) {
                    var prevSpeed;
                    var nextSpeed;
                    var val = prop.keyValue( key );
                    var currentTime = prop.keyTime( key );
                    var valBefore = val;
                    var valAfter = val;
                    if ( key > 1 ) {
                        var valBefore = prop.keyValue( key - 1 );
                        var timeBefore = prop.keyTime( key - 1 );
                        prevSpeed = DuAEF.DuJS.Math.getLength( val, valBefore ) / ( currentTime - timeBefore );
                    }

                    if ( key < prop.numKeys ) {
                        var valAfter = prop.keyValue( key + 1 );
                        var timeAfter = prop.keyTime( key + 1 );
                        nextSpeed = DuAEF.DuJS.Math.getLength( val, valBefore ) / ( timeAfter - currentTime );
                    }

                    if ( typeof prevSpeed === 'undefined' && typeof nextSpeed === 'undefined' ) {
                        prevSpeed = 0;
                        nextSpeed = 0;
                    } else if ( typeof prevSpeed === 'undefined' ) {
                        prevSpeed = nextSpeed;
                    } else if ( typeof nextSpeed === 'undefined' ) {
                        nextSpeed = prevSpeed;
                    }

                    var signBefore = 1;
                    var signAfter = 1;
                    if ( propInfo.dimensions == 1 ) {
                        if ( val - valBefore < 1 ) signBefore = -1;
                        if ( valAfter - val < 1 ) signAfter = -1;
                    }

                    if ( velocityInValue == velocityOutValue ) {
                        var speed = ( prevSpeed + nextSpeed ) / 2;

                        vInValue = velocityInValue * speed / 100 * signBefore;
                        vOutValue = velocityOutValue * speed / 100 * signBefore;
                    } else {

                        vInValue = velocityInValue * prevSpeed / 100 * signBefore;
                        vOutValue = velocityOutValue * nextSpeed / 100 * signAfter;
                    }

                }


                var easeIn = [ new KeyframeEase(
                    def( vInValue, prop.keyInTemporalEase( key )[ 0 ].speed ),
                    def( easeInValue, prop.keyInTemporalEase( key )[ 0 ].influence )
                ) ];
                var easeOut = [ new KeyframeEase(
                    def( vOutValue, prop.keyOutTemporalEase( key )[ 0 ].speed ),
                    def( easeOutValue, prop.keyOutTemporalEase( key )[ 0 ].influence )
                ) ];

                if ( !prop.isSpatial ) {
                    for ( var j = 1; j < prop.keyInTemporalEase( prop.selectedKeys[ k ] ).length; j++ ) {
                        easeIn.push( new KeyframeEase(
                            def( vInValue, prop.keyInTemporalEase( key )[ j ].speed ),
                            def( easeInValue, prop.keyInTemporalEase( key )[ j ].influence )
                        ) );
                        easeOut.push( new KeyframeEase(
                            def( vOutValue, prop.keyOutTemporalEase( key )[ j ].speed ),
                            def( easeOutValue, prop.keyOutTemporalEase( key )[ j ].influence )
                        ) );
                    }
                }

                var inType = KeyframeInterpolationType.BEZIER;
                var outType = KeyframeInterpolationType.BEZIER;

                if ( typeof easeInValue === 'undefined' && typeof velocityInValue === 'undefined' ) {
                    inType = prop.keyInInterpolationType( key );
                }
                if ( typeof easeOutValue === 'undefined' && typeof velocityOutValue === 'undefined' ) {
                    outType = prop.keyOutInterpolationType( key );
                }

                prop.setInterpolationTypeAtKey( key, inType, outType );

                prop.setTemporalEaseAtKey( key, easeIn, easeOut );
            }
        }
    }
}

/**
 * Checks if the property has some selected keyframes.<br />
 * The property can be either a Property or a PropertyGroup.
 * @param {PropertyBase} prop - The property
 * @return {boolean} true if the property have at least one selected keyframe
 */
DuAEF.DuAE.Property.hasSelectedKeys = function ( prop ) {
    var yes = false;

    if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( prop.selectedKeys.length > 0 ) {
            yes = true;
        }
    } else if ( prop.numProperties > 0 ) {
        for ( var propIndex = 1; propIndex <= prop.numProperties; propIndex++ ) {
            yes = DuAEF.DuAE.Property.hasSelectedKeys( prop.property( propIndex ) );
            if ( yes ) break;
        }
    }
    return yes;
}

/**
 * Sets the spatial interpolation of the selected keyframes on the property
 * @param {Property|PropertyInfo} prop - The property
 * @param {KeyframeInterpolationType} typeIn - The in interpolation type (see AE API)
 * @param {KeyframeInterpolationType} [typeOut=typeIn] - The in interpolation type (see AE API)
 */
DuAEF.DuAE.Property.setSpatialInterpolation = function ( prop, typeIn, typeOut ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( typeOut == undefined ) typeOut = typeIn;
    if ( !prop.isSpatial ) return;
    if ( prop.selectedKeys.length == 0 ) return;
    for ( var k = 0; k < prop.selectedKeys.length; k++ ) {
        if ( typeIn == KeyframeInterpolationType.BEZIER && typeOut == KeyframeInterpolationType.BEZIER ) {
            prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], true );
        } else if ( typeIn == KeyframeInterpolationType.LINEAR && typeOut == KeyframeInterpolationType.LINEAR ) {
            prop.setSpatialContinuousAtKey( prop.selectedKeys[ k ], false );
            prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], false );
            if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL ) {
                prop.setSpatialTangentsAtKey( prop.selectedKeys[ k ], [ 0, 0, 0 ], [ 0, 0, 0 ] );
            } else if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) {
                prop.setSpatialTangentsAtKey( prop.selectedKeys[ k ], [ 0, 0 ], [ 0, 0 ] );
            }
        } else if ( typeIn == KeyframeInterpolationType.BEZIER ) {
            prop.setSpatialContinuousAtKey( prop.selectedKeys[ k ], false );
            prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], false );
            var keyIndex = prop.selectedKeys[ k ];
            if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL ) {
                if ( prop.keyInSpatialTangent( keyIndex )[ 0 ] == 0 && prop.keyInSpatialTangent( keyIndex )[ 1 ] == 0 && prop.keyInSpatialTangent( keyIndex )[ 2 ] == 0 ) {
                    prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], true );
                }
                prop.setSpatialTangentsAtKey( keyIndex, prop.keyInSpatialTangent( keyIndex ), [ 0, 0, 0 ] );
            } else if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) {
                if ( prop.keyInSpatialTangent( keyIndex )[ 0 ] == 0 && prop.keyInSpatialTangent( keyIndex )[ 1 ] == 0 ) {
                    prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], true );
                }
                prop.setSpatialTangentsAtKey( keyIndex, prop.keyInSpatialTangent( keyIndex ), [ 0, 0 ] );
            }
        } else if ( typeIn == KeyframeInterpolationType.LINEAR ) {
            prop.setSpatialContinuousAtKey( prop.selectedKeys[ k ], false );
            prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], false );
            var keyIndex = prop.selectedKeys[ k ];
            if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL ) {
                if ( prop.keyOutSpatialTangent( keyIndex )[ 0 ] == 0 && prop.keyOutSpatialTangent( keyIndex )[ 1 ] == 0 && prop.keyOutSpatialTangent( keyIndex )[ 2 ] == 0 ) {
                    prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], true );
                }
                prop.setSpatialTangentsAtKey( keyIndex, [ 0, 0, 0 ], prop.keyOutSpatialTangent( keyIndex ) );
            } else if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) {
                if ( prop.keyOutSpatialTangent( keyIndex )[ 0 ] == 0 && prop.keyOutSpatialTangent( keyIndex )[ 1 ] == 0 ) {
                    prop.setSpatialAutoBezierAtKey( prop.selectedKeys[ k ], true );
                }
                prop.setSpatialTangentsAtKey( keyIndex, [ 0, 0 ], prop.keyOutSpatialTangent( keyIndex ) );
            }
        }
    }
}

/**
 * Fixes the spatial interpolation of the selected keys.<br />
 * Sets the interpolation to linear when the property does not move between keyframes
 * @param {Property|PropertyInfo} prop - The property
 */
DuAEF.DuAE.Property.fixSpatialInterpolation = function ( prop ) {
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();

    if ( !prop.isSpatial ) return;
    if ( !prop.canVaryOverTime ) return;

    var keyIndices = prop.selectedKeys;
    if ( keyIndices.length < 2 ) return;

    for ( var k = 0; k < keyIndices.length - 1; k++ ) {
        var key = keyIndices[ k ];
        var nextKey = keyIndices[ k + 1 ]
        var keyValue = prop.valueAtTime( prop.keyTime( key ), true );
        var nextKeyValue = prop.valueAtTime( prop.keyTime( key + 1 ), true );

        if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL ) {
            if ( keyValue[ 0 ] == nextKeyValue[ 0 ] && keyValue[ 1 ] == nextKeyValue[ 1 ] && keyValue[ 2 ] == nextKeyValue[ 2 ] ) {
                prop.setSpatialTangentsAtKey( key, prop.keyInSpatialTangent( key ), [ 0, 0, 0 ] );
                prop.setSpatialTangentsAtKey( nextKey, [ 0, 0, 0 ], prop.keyOutSpatialTangent( nextKey ) );
            }
        } else if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) {
            if ( keyValue[ 0 ] == nextKeyValue[ 0 ] && keyValue[ 1 ] == nextKeyValue[ 1 ] ) {
                prop.setSpatialTangentsAtKey( key, prop.keyInSpatialTangent( key ), [ 0, 0 ] );
                prop.setSpatialTangentsAtKey( nextKey, [ 0, 0 ], prop.keyOutSpatialTangent( nextKey ) );
            }
        }
    }
}

/**
 * Removes all unneeded keyframes from the property.< br/>
 * Also checks the interpolation values to reset the correct display as linear/smooth.
 * @param {Property|PropertyInfo} property - The property
 */
DuAEF.DuAE.Property.cleanKeyframes = function ( property ) {
    var prop = property;
    if ( prop instanceof PropertyInfo ) prop = property.getProperty();

    var numKeys = prop.numKeys;
    if ( numKeys == 0 ) return;
    if ( numKeys == 1 ) {
        prop.removeKey( 1 );
        return;
    }

    for ( var i = numKeys; i > 0; i-- ) {
        var currentKey = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, i );

        if ( i > 1 ) var prevKey = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, i - 1 );
        if ( i < prop.numKeys ) var nextKey = DuAEF.DuAE.Property.getKeyFrameAtIndex( prop, i + 1 );

        if ( i > 1 && !DuAEF.DuJS.Array.compare( currentKey.value, prevKey.value, 3 ) ) continue;
        if ( i < prop.numKeys && !DuAEF.DuJS.Array.compare( currentKey.value, nextKey.value, 3 ) ) continue;
        var remove = false;
        for ( var j = 0; j < currentKey.inEase.length; j++ ) {
            remove = false
            if ( i > 1 && !DuAEF.DuJS.Math.compare( prevKey.outEase[ j ].speed, 0, 4 ) ) break;
            if ( i > 1 && !DuAEF.DuJS.Math.compare( currentKey.inEase[ j ].speed, 0, 4 ) ) break;
            if ( i < prop.numKeys && !DuAEF.DuJS.Math.compare( currentKey.outEase[ j ].speed, 0, 4 ) ) break;
            if ( i < prop.numKeys && !DuAEF.DuJS.Math.compare( nextKey.inEase[ j ].speed, 0, 4 ) ) break;
            remove = true;
        }
        if ( remove ) prop.removeKey( i );
    }
}

/**
 * Gets the maximum speed of the animated propreties
 * @param {Property[]|PropertyInfo[]} props - The Properties
 * @param {bool}	 [preExpression=true]	- True to get the velocity from keyframes instead of the result of the exression
 * @return {float} The average speed
 */
DuAEF.DuAE.Property.getMaximumSpeed = function ( props ) {
    var maxSpeed = 0;

    for ( var i = 0; i < props.length; i++ ) {
        var speed = DuAEF.DuAE.Property.getMaxVelocity( props[ i ], false );
        if ( speed > maxSpeed ) maxSpeed = speed;
    }

    return maxSpeed;
}

/**
 * Gets the speed of a property at a given time
 * @param {Property|PropertyInfo} prop - The property
 * @param {float} [time=composition.time] - The time.
 * @param {boolean} [preExpression=true] - true to get the pre-expression speed.
 * @return {float} The speed
 */
DuAEF.DuAE.Property.getSpeed = function ( prop, time, preExpression ) {
    preExpression = def (preExpression, true);
    if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
    if ( prop.propertyType != PropertyType.PROPERTY ) return 0;
    if ( prop.numKeys == 0 && preExpression ) return 0;
    var comp = DuAEF.DuAE.Property.getComp( prop );
    if ( time == undefined ) time = comp.time;

    var speed = DuAEF.DuJS.Math.getLength( prop.valueAtTime( time + comp.frameDuration / 2, preExpression ), prop.valueAtTime( time - comp.frameDuration / 2, preExpression ) );
    return speed / comp.frameDuration;
}

/**
 * Sets an expression to a property.<br />
 * With the ability to keep the initial value.
 * @param {Property|PropertyInfo} property - The property
 * @param {string} expr - The expression
 * @param {bool} [keepValue=true] - When true, the method will try to keep the same resulting value as before applying the expression.
 */
DuAEF.DuAE.Property.setExpression = function ( property, expr, keepValue ) {
    keepValue = def( keepValue, true );

    var propInfo = new PropertyInfo( property );
    if ( !propInfo.riggable ) return;

    property = propInfo.getProperty();

    var originalValue = property.valueAtTime( propInfo.comp.time, false );

    if ( keepValue ) DuAEF.DuAE.Property.removeExpression( property );
    else try {
        property.expression = ""
    } catch ( e ) {
        if ( DuAEF.debug ) alert( e.description );
        return;
    }
    try {
        property.expression = expr;
    } catch ( e ) {
        if ( DuAEF.debug ) alert( e.description );
    }

    if ( propInfo.editable && keepValue && propInfo.dimensions > 0 ) DuAEF.DuAE.Property.setValue( property, 2 * originalValue - property.valueAtTime( propInfo.comp.time, false ) );
}

/**
 * Replaces text in Expressions
 * @param {PropertyBase|PropertyInfo} prop - The property (can be a group)
 * @param {string} oldString - The string to replace
 * @param {string} newString - The new string
 * @param {boolean} [caseSensitive=true] - Wether the search has to be case sensitive
 */
DuAEF.DuAE.Property.replaceInExpressions = function ( prop, oldString, newString, caseSensitive ) {
    caseSensitive = def (caseSensitive, true);

    if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( prop.canSetExpression ) {
            if ( prop.expression = '' ) return;
            if ( prop.expression.length < oldString.length ) return;
            try {
                prop.expression = DuAEF.DuJS.String.replace( prop.expression, oldString, newString, caseSensitive );
            } catch ( e ) {};
        }
    } else if ( prop.numProperties > 0 ) {
        for ( var propertyIndex = 1; propertyIndex <= prop.numProperties; propertyIndex++ ) {
            DuAEF.DuAE.Property.replaceInExpressions( prop.property( propertyIndex ), oldString, newString, caseSensitive );
        }
    }
}

/**
 * Adds an expression to the child property, linking it to the parent property
 * @memberof DuAEF.DuAE.Property
 * @param {Property} childProp - The child property (the one which gets an expression).
 * @param {Property} parentProp - The parent property.
 * @param {bool} useThisComp - Wether to begin the expression by 'thisComp' or 'comp("name")', default: will detect if the properties are in the same comp
 */
DuAEF.DuAE.Property.pickWhip = function ( childProp, parentProp, useThisComp ) {
    if (childProp instanceof PropertyInfo) childProp = childProp.getProperty();
    if (parentProp instanceof PropertyInfo) parentProp = parentProp.getProperty();
    if ( !childProp.canSetExpression ) return;
    if ( typeof useThisComp === 'undefined' ) {
        var parentComp = DuAEF.DuAE.Property.getComp( parentProp );
        var childComp = DuAEF.DuAE.Property.getComp( childProp );
        if ( parentComp.id == childComp.id ) useThisComp = true;
        else useThisComp = false;
    }
    var exp = DuAEF.DuAE.Property.getExpressionLink( parentProp, useThisComp );
    DuAEF.DuAE.Property.setExpression( childProp, exp, false );
}

/**
 * Link all the properties found in childProp to all the same properties of parentProp (this is a recursive method)<br />
 * Note: any Property or PropertyGroup (and its subproperties) named "Data" will be linked the opposite way (from parentProp to childProp).
 * @memberof DuAEF.DuAE.Property
 * @param {PropertyBase} childProp - The child property
 * @param {PropertyBase} parentProp - The parent property
 * @param {bool} [useThisComp] - Wether to begin the expression by 'thisComp' or 'comp("name")', default: will detect if the properties are in the same comp
 * @param {LayerItem} [timeLayer=null] - A layer used to offset the time (typically, in case of link between precompositions, the precomposition layer).<br />
 * When not null, the start time of this layer will be taken into account to get the values and synchronize them.
 */
DuAEF.DuAE.Property.linkProperties = function ( childProp, parentProp, useThisComp, timeLayer ) {
    if ( parentProp.name.toLowerCase() == 'data' ) return;
    if ( childProp.propertyType == PropertyType.PROPERTY && !childProp.elided && childProp.propertyValueType != PropertyValueType.NO_VALUE ) {
        if ( typeof timeLayer === 'undefined' ) timeLayer = null;

        if ( typeof useThisComp === 'undefined' ) {
            var parentComp = DuAEF.DuAE.Property.getComp( parentProp );
            var childComp = DuAEF.DuAE.Property.getComp( childProp );

            useThisComp = parentComp.id == childComp.id;
        }

        var anim = DuAEF.DuAE.Property.getAnim( parentProp, false );
        if ( anim != null ) DuAEF.DuAE.Property.setAnim( childProp, anim, 0, true, true, false );

        var exp = DuAEF.Duik.expressionIds.LINK + '\n';
        if ( timeLayer != null ) {
            exp += 'var timeLayer = ' + DuAEF.DuAE.Property.getExpressionLink( timeLayer ) + ';\n' +
                'var st = timeLayer.startTime;\n' +
                'var t = time + st;\n' +
                DuAEF.DuAE.Property.getExpressionLink( parentProp, useThisComp ) + '.valueAtTime(t);';

        } else {
            exp += DuAEF.DuAE.Property.getExpressionLink( parentProp, useThisComp ) + ';';
        }

        DuAEF.DuAE.Property.setExpression( childProp, exp, false );
    } else {
        if ( parentProp.isEffect ) {
            var insideData = 0;
            for ( var p = 1, num = childProp.numProperties; p <= num; p++ ) {
                var subProp = parentProp( p );
                if ( subProp.propertyValueType == PropertyValueType.NO_VALUE ) {
                    if ( subProp.name.toLowerCase() == 'data' ) {
                        insideData++;
                        continue;
                    }

                    if ( insideData > 0 ) {
                        if ( subProp.name == parentProp.name || subProp.name == "" ) insideData--;
                        else insideData++;
                        continue;
                    }
                }
                if ( insideData == 0 ) DuAEF.DuAE.Property.linkProperties( childProp( p ), subProp, useThisComp, timeLayer );
                else DuAEF.DuAE.Property.linkProperties( subProp, childProp( p ), useThisComp, timeLayer );
            }
        } else {
            for ( var p = 1, num = childProp.numProperties; p <= num; p++ ) {
                try { DuAEF.DuAE.Property.linkProperties( childProp( p ), parentProp( p ), useThisComp, timeLayer ); }
                catch(e) { if (DuAEF.debug) alert (chilProp.name + ' could not be linked.')};
            }
        }
    }
}

/**
 * Removes all expressions found in groups or sections named "Data" in the property.
 * @memberof DuAEF.DuAE.Property
 * @param {PropertyBase} prop - The property
 */
DuAEF.DuAE.Property.removeDataExpressions = function ( prop ) {
    if ( prop.propertyType == PropertyType.PROPERTY && prop.name.toLowerCase() == 'data' ) {
        DuAEF.DuAE.Property.removeExpression( prop );
    } else if ( prop.isEffect ) {
        var insideData = 0;
        for ( var p = 1, num = prop.numProperties; p <= num; p++ ) {
            var subProp = prop( p );
            if ( subProp.propertyValueType == PropertyValueType.NO_VALUE ) {
                if ( subProp.name.toLowerCase() == 'data' ) {
                    insideData++;
                    continue;
                }

                if ( insideData > 0 ) {
                    if ( subProp.name == "" || subProp.name == prop.name ) insideData--;
                    else insideData++;
                    continue;
                }
            }
            if ( insideData > 0 ) DuAEF.DuAE.Property.removeExpression( subProp );
        }
    } else {
        if ( prop.name.toLowerCase() == 'data' ) DuAEF.DuAE.Property.removeExpressions( prop );
        for ( var p = 1, num = prop.numProperties; p <= num; p++ ) {
            DuAEF.DuAE.Property.removeDataExpressions( prop( p ) );
        }
    }
}

/**
 * Removes all expressions found in the property.
 * @memberof DuAEF.DuAE.Property
 * @param {PropertyBase} prop - The property
 * @param {function} filter - A function which takes a string as a parameter (the expression). Returns true if the expression has to be removed.
 * @param {bool} [keepPostExpressionValue=true] Set to false to just remove the expressions and get back the pre expression value
 */
DuAEF.DuAE.Property.removeExpressions = function ( prop, filter, keepPostExpressionValue ) {
    if ( prop.propertyType == PropertyType.PROPERTY ) {
        DuAEF.DuAE.Property.removeExpression( prop, filter, keepPostExpressionValue );
    } else {
        for ( var p = 1, num = prop.numProperties; p <= num; p++ ) {
            DuAEF.DuAE.Property.removeExpressions( prop( p ), filter, keepPostExpressionValue );
        }
    }
}

/**
 * Adds all the (supported) properties found in a property to the essential graphics panel<br />
 * Note: any Property or PropertyGroup (and its subproperties) named "data" will be ignored.
 * @memberof DuAEF.DuAE.Property
 * @param {PropertyBase} prop - The property
 * @return {int} The number of properties added
 */
DuAEF.DuAE.Property.addToEGP = function ( prop ) {
    var numProps = 0;
    if ( prop.name.toLowerCase() == 'data' ) return numProps;
    if ( prop.propertyType == PropertyType.PROPERTY && prop.propertyValueType != PropertyValueType.NO_VALUE ) {
        var comp = DuAEF.DuAE.Property.getComp( prop );
        var layer = DuAEF.DuAE.Property.getLayer( prop );
        if ( prop.canAddToMotionGraphicsTemplate( comp ) && !prop.elided && prop.canSetExpression ) {
            var mPropName = layer.name + ' / ' + DuAEF.DuAE.Property.getExpressionLink( prop, true, false );
            if ( DuAEF.DuAE.App.version.version >= 16.1 ) {
                prop.addToMotionGraphicsTemplateAs( comp, mPropName);
            }
            else {
                prop.addToMotionGraphicsTemplate( comp );
            }

            if ( DuAEF.DuAE.App.version.version >= 15.1 && DuAEF.DuAE.App.version.version < 16.1 ) {
                var it = new Iterator( comp.usedIn );
                it.do( function ( mainComp ) {
                    for ( var i = 1, num = mainComp.numLayers; i <= num; i++ ) {
                        var l = mainComp.layer( i );
                        if ( l.source )
                            if ( l.source.id == comp.id ) {
                                l( 'ADBE Layer Overrides' )( 1 ).name = mPropName;
                            }
                    }
                } );
            }
            numProps++;
        }
    } else {
        if ( prop.isEffect ) {
            var insideData = 0;
            for ( var p = 1, num = prop.numProperties; p <= num; p++ ) {
                var subProp = prop( p );
                if ( subProp.propertyValueType == PropertyValueType.NO_VALUE ) {
                    if ( subProp.name.toLowerCase() == 'data' ) {
                        insideData++;
                        continue;
                    }

                    if ( insideData > 0 ) {
                        if ( subProp.name == prop.name ) insideData--;
                        else insideData++;
                        continue;
                    }
                }
                if ( insideData == 0 ) numProps += DuAEF.DuAE.Property.addToEGP( subProp );
            }
        } else {
            for ( var p = 1; p <= prop.numProperties; p++ ) {
                numProps += DuAEF.DuAE.Property.addToEGP( prop( p ) );
            }
        }
    }
    return numProps;
}

/**
 * Locks the property with an expression so its value cannot be changed
 * @memberof DuAEF.DuAE.Property
 * @param {PropertyBase|PropertyInfo|PropertyBase[]|PropertyInfo[]} properties - The property or properties
 */
DuAEF.DuAE.Property.lock = function ( properties ) {
    var it = new Iterator( properties );
    it.do( function ( property ) {
        var p = property;
        var riggable = false;
        var dimensions = 0;
        if ( property instanceof PropertyInfo ) {
            p = property.getProperty();
            riggable = property.riggable;
            dimensions = property.dimensions;
        } else {
            riggable = DuAEF.DuAE.Property.isRiggable( p );
            dimensions = DuAEF.DuAE.Property.getDimensions( p );
        }

        if ( riggable ) {
            var exp = "";
            if ( dimensions == 0 ) exp = "value";
            else if ( dimensions == 1 ) exp = p.value.toString();
            else exp = p.value.toSource();
            DuAEF.DuAE.Property.setExpression( property, exp );
        }
    } );
}

/**
 * Removes the expression from the property, keeping the post-expression value.
 * @memberof DuAEF.DuAE.Property
 * @param {Property|PropertyInfo} prop - The property
 * @param {function} filter - A function which takes a string as a parameter (the expression). Returns true if the expression has to be removed.
 * @param {bool} [keepPostExpressionValue=true] Set to false to just remove the expressions and get back the pre expression value
 */
DuAEF.DuAE.Property.removeExpression = function ( prop, filter, keepPostExpressionValue ) {
    if ( typeof ( prop ) === 'undefined' ) return;
    keepPostExpressionValue = def (keepPostExpressionValue, true);

    var propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();

    var expression = prop.expression;

    if ( expression == '' ) return;
    if (typeof filter === 'function') {
        if (!filter(expression )) return;
    }
    if ( propInfo.riggable ) {
        if (keepPostExpressionValue) DuAEF.DuAE.Property.setValue( prop, prop.value );
        prop.expression = '';
    }
}

/**
 * Checks if the property has an animation (keyframes)
 * @param {Property} prop - The property
 * @return {boolean} True if the property is animated
 */
DuAEF.DuAE.Property.isAnimated = function ( prop ) {
    if ( prop.canVaryOverTime ) {
        if ( prop.numKeys > 0 ) return true;
    }
    return false;
}

/**
 * Gets the After Effects animated (with keyframes) properties in the propertyGroup
 * @param {PropertyGroup}	 prop	- The parent propertyGroup where to search for animations
 * @param {PropertyType|PropertyValueType|string|function}	 [filter]	- A filter to get only a certain type, or value type, or property name or matchName.<br />
 * A function which take one PropertyBase as argument can be used to filter the properties: the Property will be returned if the function returns true.
 * @param {boolean}	[strict=false]	- If a string filter is provided, wether to search for the exact name/matchName or if it contains the filter.
 * @param {boolean}	[caseSensitive=true]	- If a string filter is provided, and not strict is false, does the search have to be case sensitive?
 * @return {PropertyInfo[]} The selected properties, an empty Array if nothing active or selected
 */
DuAEF.DuAE.Property.getAnimatedProps = function ( prop, filter, strict, caseSensitive ) {
    if ( strict == undefined ) strict = false;
    if ( caseSensitive == undefined ) caseSensitive = true;

    var props = [];

    if ( !caseSensitive && typeof filter === "string" ) filter = filter.toLowerCase();

    if ( prop.propertyType == PropertyType.PROPERTY ) {
        if ( DuAEF.DuAE.Property.isAnimated( prop ) ) {
            if ( typeof filter === 'undefined' ) {
                props.push( prop );
            } else {
                var name = prop.name;
                var matchName = prop.matchName;
                if ( !caseSensitive ) {
                    name = name.toLowerCase();
                    matchName = matchName.toLowerCase();
                }

                if ( strict && name === filter ) props.push( prop );
                else if ( strict && matchName === filter ) props.push( prop );
                else if ( typeof filter === 'string' ) {
                    if ( name.indexOf( filter ) >= 0 ) props.push( prop );
                    else if ( matchName.indexOf( filter ) >= 0 ) props.push( prop );
                } else if ( prop.propertyValueType == filter ) props.push( prop );
                else if ( typeof filter === 'function' ) {
                    if ( filter( prop ) ) props.push( prop );
                }
            }
        }
    } else {
        for ( var i = 0, num = prop.numProperties; i < num; i++ ) {
            props = props.concat( DuAEF.DuAE.Property.getAnimatedProps( prop.property( i + 1 ), filter, strict, caseSensitive ) );
        }
    }


    return DuAEF.DuAE.getPropertyInfos( props );
}

/**
 * Checks if the property value is a number or an Array of Number.<br >
 * I.e if its value type is one of: one D, two D, three D (spatial or not), Color.
 * @param {Property}	 prop	- The property
 * @return {bool}
 */
DuAEF.DuAE.Property.isNumerical = function ( prop ) {
    if ( prop.propertyValueType == PropertyValueType.ThreeD_SPATIAL ) return true;
    if ( prop.propertyValueType == PropertyValueType.ThreeD ) return true;
    if ( prop.propertyValueType == PropertyValueType.TwoD_SPATIAL ) return true;
    if ( prop.propertyValueType == PropertyValueType.TwoD ) return true;
    if ( prop.propertyValueType == PropertyValueType.OneD ) return true;
    if ( prop.propertyValueType == PropertyValueType.COLOR ) return true;
    return false;
}

/**
 * Gets the value range of the animated property.<br >
 * The property type must be one of: one D, two D, three D (spatial or not), Color.
 * If the property is not one of these types, returns an empty Array.
 * @param {Property|PropertyInfo}	 prop	- The property
 * @param {int}	 [axis=0]	- The axis (or the color channel) to get the range
 * @param {bool}	 [preExpression=true]	- True to get the range from keyframes instead of the result of the exression
 * @param {bool}	 [fastMode=true]	- True to check the range with values only at keyframe times. False to check the range with all values, at each frame of the comp.
 * @return {float[]} The minimum and maximum value.<br />
 * The first item in the Array is not necesarily the lowest value, it is the first in time.
 */
DuAEF.DuAE.Property.getRange = function ( prop, axis, preExpression, fastMode ) {
    axis = def(axis, 0);
    preExpression = def(preExpression, true);
    fastMode = def(fastMode, true);

    var propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();

    if ( !propInfo.numerical ) return [];

    if ( prop.expression == '' || !prop.expressionEnabled ) preExpression = true;

    var comp = propInfo.comp;
    var frames = comp.duration / comp.frameDuration;
    var min = prop.valueAtTime( 0, preExpression );
    var minTime = 0;
    var max = prop.valueAtTime( 0, preExpression );
    var maxTime = 0;

    if ( propInfo.dimensions > 1 ) {
        max = max[ axis ];
        min = min[ axis ];
    }

    var count = frames-1;
    if ( fastMode && prop.numKeys > 1 ) count = prop.numKeys;
    else count = comp.duration/4;

    if (count == 0) return [min, max];
    if (prop.numKeys < 2 && preExpression) return [min,max];

    for ( var i = 0; i < count; i++ ) {
        var iTime = i*0.25;
        if (fastMode && prop.numKeys > 1) iTime = prop.keyTime(i+1);
        var val = prop.valueAtTime( iTime, preExpression );
        if ( propInfo.dimensions > 1 ) val = val[ axis ];
        if ( val < min ) {
            min = val;
            minTime = i;
        }
        if ( val > max ) {
            max = val;
            maxTime = i;
        }
    }

    if ( minTime < maxTime ) return [ min, max ];
    else return [ max, min ];
}

/**
 * Gets the maximum velocity of the animated property.<br >
 * The property type must be one of: one D, two D, three D (spatial or not), Color.
 * If the property is not one of these types, returns 0.
 * @param {Property|PropertyInfo}	 prop	- The property
 * @param {bool}	 [preExpression=true]	- True to get the velocity from keyframes instead of the result of the exression
 * @param {bool}	 [fastMode=true]	- True to limit the number of samples used to compute the velocity and make the process faster.<br />
 * The number of samples is automatically adapted from the duration of the composition.<br />
 * When true and if there are more than one keyframe, the velocity is sampled only between keyframes.
 * @return {float} The velocity.
 */
DuAEF.DuAE.Property.getMaxVelocity = function ( prop, preExpression, fastMode ) {
    preExpression = def(preExpression, true);
    fastMode = def(fastMode, true);

    var propInfo = prop;
    if ( !( prop instanceof PropertyInfo ) ) {
        propInfo = new PropertyInfo( prop );
    } else {
        prop = propInfo.getProperty();
    }

    var velocity = 0;
    if ( !propInfo.numerical ) return velocity;

    if ( prop.expression == '' ) preExpression = true;

    var comp = propInfo.comp;
    var frames = comp.duration / comp.frameDuration;

    var startFrame = 0;
    var endFrame = frames;
    var step = 1;
    if (fastMode) {

        if (prop.numKeys > 1) {
            startFrame = prop.keyTime(1) / comp.frameDuration;
            endFrame = prop.keyTime(prop.numKeys) / comp.frameDuration;
        }
    }

    var numFrames = endFrame - startFrame;

    if (numFrames > 1000 && fastMode) {
        step = Math.floor( numFrames/500 );
    }

    for ( var i = startFrame; i < endFrame; i = i+step ) {
        var vel = DuAEF.DuAE.Property.getSpeed( prop, i * comp.frameDuration, preExpression );
        if ( vel > velocity ) velocity = vel;
    }

    return velocity;

}

/**
 * Gets the average speed of the animated propreties
 * @param {Property[]|PropertyInfo[]} props - The Properties
 * @param {bool}	 [preExpression=true]	- True to get the velocity from keyframes instead of the result of the exression
 * @param {bool}	 [fastMode=true]	- True to limit the number of samples used to compute the velocity and make the process faster.
 * @return {float} The average speed in unit per second
 */
DuAEF.DuAE.Property.getAverageSpeed = function ( props, preExpression, fastMode ) {
    preExpression = def(preExpression, true);
    fastMode = def(fastMode, true);

    var averageSpeed = 0;
    var count = 0;

    for ( var i = 0; i < props.length; i++ ) {
        var prop = props[ i ];
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        if ( prop.propertyType != PropertyType.PROPERTY ) continue;
        if ( !prop.canVaryOverTime ) continue;
        if ( prop.numKeys < 1 && !preExpression ) continue;

        var comp = DuAEF.DuAE.Property.getComp( prop );
        var frames = comp.duration / comp.frameDuration;
        var lastTime = comp.duration;
        var firstTime = 0;
        if ( preExpression || (fastMode && prop.numKeys > 1) ) {
            lastTime = prop.keyTime( prop.numKeys );
            firstTime = prop.keyTime( 1 );
        }
        var lastFrame = lastTime / comp.frameDuration;
        var firstFrame = firstTime / comp.frameDuration;
        if ( lastFrame > frames ) lastFrames = frames;
        if ( firstFrame < 1 ) firstFrame = 1;

        var step = 1;
        if (fastMode) {
            var numFrames = lastFrame - firstFrame;
            if (numFrames > 1000) {
                step = Math.floor( numFrames/500 );
            }
        }
        
        var sum = 0;
        for ( var frame = firstFrame; frame < lastFrame; frame = frame + step ) {
            var time = frame * comp.frameDuration;
            sum += DuAEF.DuAE.Property.getSpeed( prop, time, preExpression );
        }
        var speed = sum / ( lastFrame - firstFrame );

        if ( speed > 0 ) {
            averageSpeed += speed;
            count++;
        }
    }

    averageSpeed = averageSpeed / count;
    return averageSpeed;
}


/**
 * Converts the expression as a string which can be copy/pasted and included in a script.
 * @param {Property|PropertyInfo|string} prop - The property containing the expression or the expression itself.
 * @param {string} [varName] - A name for the variable
 * @return {string} The stringified expression.
 */
DuAEF.DuAE.Property.scriptifyExpression = function ( prop, varName ) {
    varName = def( varName, '' );

    var propType = DuAEF.DuJS.typeof( prop );
    var exp = '';
    if ( propType.toLowerCase() === 'string' ) exp = prop;
    else {
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        var exp = prop.expression;
    }

    var expArray = exp.split( '\n' );
    var expString = "";
    if ( varName != '' ) expString += "var " + varName + " ";
    expString += "['"
    var nextLine = expArray[ 0 ].replace( "\r", "" );
    nextLine = DuAEF.DuJS.String.replace( nextLine, "'", "\\'") + "'";
    expString += nextLine;
    for ( var i = 1; i < expArray.length; i++ ) {
        expString += ",\n\t'" + expArray[ i ].replace( '\r', '' ).replace("'","\\'") + "'";
    }
    expString += "\n\t].join('\\n');";

    return expString;
}

/**
 * Puppet tool methods
 * @namespace
 * @memberof DuAEF.DuAE.Property
 */
DuAEF.DuAE.Property.PuppetTool = {};

/**
 * Checks if a pin can be rigged or not.\nFor now, the only pins which can not be rigged are starch pins.
 * @param {PropertyGroup} pin - The pin to test
 * @return {boolean} True if this pin has either a position, rotation or scale property
 */
DuAEF.DuAE.Property.PuppetTool.isRiggable = function ( pin ) {
    if ( pin.position.canSetExpression ) return true;
    if ( pin.rotation.canSetExpression ) return true;
    if ( pin.scale.canSetExpression ) return true;
    return false;
}

/**
 * Bezier Path methods
 * @namespace
 * @memberof DuAEF.DuAE.Property
 */
DuAEF.DuAE.Property.Bezier = {};

/**
 * Scriptifies the given shape property.<br/>
 * @param {Property}	 [shapeProp]	- The path property to export
 * @param {boolean}	[offsetToCenter=false]	- If true, offset the path to the center
 * @param {string}	[varName=shape]	- A name for the variable storing the shape
 * @return {string} The scriptified shape
 */
DuAEF.DuAE.Property.Bezier.scriptify = function ( pathProperty, offsetToCenter, varName ) {
    if ( pathProperty instanceof PropertyInfo ) pathProperty = pathProperty.getProperty();
    offsetToCenter = def( offsetToCenter, false );
    varName = def( varName, 'shape' );

    if ( pathProperty.propertyType !== PropertyType.PROPERTY ) throw "Expected a shape property, got a group.";
    if ( pathProperty.propertyValueType !== PropertyValueType.SHAPE ) throw "Expected a shape property, got another type of value.";
    offsetToCenter = def( offsetToCenter, false );

    var shape = pathProperty.value;
    var vertices = shape.vertices;

    if ( offsetToCenter ) {
        var sum = [ 0, 0 ];
        for ( var i = 0; i < vertices.length; i++ ) {
            sum[ 0 ] += vertices[ i ][ 0 ];
            sum[ 1 ] += vertices[ i ][ 1 ];
        }
        var center = sum / vertices.length;
        for ( var i = 0; i < vertices.length; i++ ) {
            vertices[ i ][ 0 ] -= center[ 0 ];
            vertices[ i ][ 1 ] -= center[ 1 ];
        }
    }

    var verticesStr = vertices.toSource();
    var inTangentsStr = shape.inTangents.toSource();
    var outTangentsStr = shape.outTangents.toSource();
    var closedStr = shape.closed ? 'true' : 'false';

    var scriptified = [
        'var ' + varName + ' = new Shape();',
        varName + '.vertices = ' + verticesStr + ';',
        varName + '.inTangents = ' + inTangentsStr + ';',
        varName + '.outTangents = ' + outTangentsStr + ';',
        varName + '.closed = ' + closedStr + ';'
    ].join( '\n' );

    return scriptified;
}

/**
 * Export the given shape property to the given file <br/>
 * The file name in the given path will be used to name the shape in the jsx code
 * @example
 * var props = DuAEF.DuAE.Comp.getSelectedProps(PropertyValueType.SHAPE);
 * var prop = props[0].getProperty();
 * var out = DuAEF.DuAE.Property.Shape.exportToJsxinc(prop, "D:/shape.test");
 * @param {Property}	 [shapeProp]	- The path property to export
 * @param {String}	[file]	- The path or File where the jsxinc shape will be written
 * @param {boolean}	[offsetToCenter=false]	- If true, offset the path to the center
 * @param {boolean}	[append=false]	- If true, appends the shape at the end of the file instead of overwriting it.
 * @param {string}	[varName=shape]	- A name for the variable storing the shape
 * @return {int} A status code. [0: success, ...]
 */
DuAEF.DuAE.Property.Bezier.exportToJsxinc = function ( pathProperty, file, offsetToCenter, append, varName ) {
    append = def( append, false );

    if ( !( file instanceof File ) ) file = new File( file );

    var mode = 'w';
    if ( append ) mode = 'a';

    if ( !file.open( mode ) ) return 3;

    if ( append ) file.write( '\n' );
    file.write( DuAEF.DuAE.Property.Bezier.scriptify( pathProperty, offsetToCenter, varName ) );

    file.close();
    return 0;
}

/**
 * Makes a horizontal symetry transformation on the paths, using the same axis of symetry for all shapes (shapes must be on the same layer).
 * @param {Property[]}	pathProperties	- The After Effects Properties containing the paths to symetrize
 */
DuAEF.DuAE.Property.Bezier.horizontalSymetry = function ( pathProperties ) {
    if ( !( pathProperties instanceof Array ) ) pathProperties = [ pathProperties ];

    var shapes = [];
    var center = 0;
    var verticesCount = 0;
    for ( var i = 0; i < pathProperties.length; i++ ) {
        var prop = pathProperties[ i ];
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        var shape = prop.value;
        shapes.push( shape );
        for ( var j = 0; j < shape.vertices.length; j++ ) {
            verticesCount++;
            center += shape.vertices[ j ][ 0 ];
        }
    }
    center = center / verticesCount;
    center = center * 2;

    for ( var i = 0; i < shapes.length; i++ ) {
        var prop = pathProperties[ i ];
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        var shape = shapes[ i ];
        var vertices = shape.vertices;
        var inTangents = shape.inTangents;
        var outTangents = shape.outTangents;
        for ( var j = 0; j < shape.vertices.length; j++ ) {
            vertices[ j ][ 0 ] = center - vertices[ j ][ 0 ];
            inTangents[ j ][ 0 ] = -inTangents[ j ][ 0 ];
            outTangents[ j ][ 0 ] = -outTangents[ j ][ 0 ];
        }
        shape.vertices = vertices;
        shape.inTangents = inTangents;
        shape.outTangents = outTangents;
        if ( prop.numKeys > 0 ) {
            prop.setValueAtTime( DuAEF.DuAE.Property.getComp( prop ).time, shape );
        } else {
            prop.setValue( shape );
        }
    }
}

/**
 * Makes a vertical symetry transformation on the paths, using the same axis of symetry for all shapes (shapes must be on the same layer).
 * @param {Property[]}	pathProperties	- The After Effects Properties containing the paths to symetrize
 */
DuAEF.DuAE.Property.Bezier.verticalSymetry = function ( pathProperties ) {
    if ( !( pathProperties instanceof Array ) ) pathProperties = [ pathProperties ];

    var shapes = [];
    var center = 0;
    var verticesCount = 0;
    for ( var i = 0; i < pathProperties.length; i++ ) {
        var prop = pathProperties[ i ];
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        var shape = prop.value;
        shapes.push( shape );
        for ( var j = 0; j < shape.vertices.length; j++ ) {
            verticesCount++;
            center += shape.vertices[ j ][ 1 ];
        }
    }
    center = center / verticesCount;
    center = center * 2;

    for ( var i = 0; i < shapes.length; i++ ) {
        var prop = pathProperties[ i ];
        if ( prop instanceof PropertyInfo ) prop = prop.getProperty();
        var shape = shapes[ i ];
        var vertices = shape.vertices;
        var inTangents = shape.inTangents;
        var outTangents = shape.outTangents;
        for ( var j = 0; j < shape.vertices.length; j++ ) {
            vertices[ j ][ 1 ] = center - vertices[ j ][ 1 ];
            inTangents[ j ][ 1 ] = -inTangents[ j ][ 1 ];
            outTangents[ j ][ 1 ] = -outTangents[ j ][ 1 ];
        }
        shape.vertices = vertices;
        shape.inTangents = inTangents;
        shape.outTangents = outTangents;
        if ( prop.numKeys > 0 ) {
            prop.setValueAtTime( DuAEF.DuAE.Property.getComp( prop ).time, shape );
        } else {
            prop.setValue( shape );
        }
    }
}

/**
 * Gets the vertices array in comp coordinates.
 * @param {Property|PropertyInfo} prop - The property, a bezier path.
 * @return {float[][]} The vertices in comp coordinates.
 */
DuAEF.DuAE.Property.Bezier.verticesToComp = function ( pathProperty ) {
    var propInfo = DuAEF.DuAE.Property.Bezier.checkProperty( pathProperty );
    if ( !propInfo ) throw "Expected a shape property, got another type of value.";
    var pathProperty = propInfo.getProperty();

    var matrix = DuAEF.DuAE.Shape.getTransformMatrix( propInfo );

    var vertices = [];
    var origin = pathProperty.value.vertices;
    for ( var i = 0, num = origin.length; i < num; i++ ) {
        vertices.push( matrix.applyToPoint( origin[ i ] ) );
    }

    return vertices;
}

/**
 * Checks if the property is a bezier property, or return the child bezier property if this is a shape or a mask
 * @param {Property|PropertyInfo} prop - The property
 * @return {PropertyInfo|null} the bezier property or null if it is not.
 */
DuAEF.DuAE.Property.Bezier.checkProperty = function ( prop ) {
    propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();

    if ( prop.matchName == "ADBE Vector Shape - Group" ) {
        prop = prop.property( "ADBE Vector Shape" );
        return new PropertyInfo( prop );
    } else if ( prop.matchName == "ADBE Mask Atom" ) {
        prop = prop.property( "ADBE Mask Shape" );
        return new PropertyInfo( prop );
    } else if ( prop.propertyType !== PropertyType.PROPERTY ) return null;
    if ( prop.propertyValueType !== PropertyValueType.SHAPE ) return null;

    return propInfo;
}
// ==================== |--------------| ====================
// ==================== | DuAEShapeLib | ====================
// ==================== |--------------| ====================

/**
 * Shape Layers methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.Shape = {};

/**
 * Gets the transformation matrix for all the parent groups of a given property
 * @param {Property|PropertyInfo} prop - The property
 * @return {Matrix} The transformation matrix.
 */
DuAEF.DuAE.Shape.getTransformMatrix = function ( prop ) {
    var propInfo = new PropertyInfo( prop );
    prop = propInfo.getProperty();
    var matrix = DuAEF.DuAE.Layer.getTransformMatrix( propInfo.layer );

    var props = [];

    var parentProp = prop;
    while ( parentProp.parentProperty ) {
        if ( parentProp.matchName == "ADBE Vector Group" ) {
            props.push( parentProp );
        }
        parentProp = parentProp.parentProperty;
    }

    for ( var i = props.length - 1; i >= 0; i-- ) {
        var p = props[ i ].property( "ADBE Vector Transform Group" );
        matrix.translate( -p.property( "ADBE Vector Anchor" ).value );
        matrix.translate( p.property( "ADBE Vector Position" ).value );
        matrix.rotate( p.property( "ADBE Vector Rotation" ).value );
        matrix.scale( p.property( "ADBE Vector Scale" ).value / 100 );
    }

    return matrix;
}

/**
 * Checks if this shape layers contains only one shape, one fill, and one stroke,\n
 * just like After Effects creates them at first.
 * @param {Layer} layer - The layer to test
 * @return {bool} True if the layer is a shape layer containing only one shape, one fill, and one stroke in a group. False otherwise.
 */
DuAEF.DuAE.Shape.isSingleShape = function ( layer ) {
    if ( !( layer instanceof ShapeLayer ) ) return false;

    var content = layer.property( "ADBE Root Vectors Group" );
    if ( content.numProperties != 1 ) return false;

    var shape = content.property( "ADBE Vector Group" ).property( "ADBE Vectors Group" );
    if ( shape.numProperties != 3 ) return false;

    var path = shape.property( 1 );
    if ( path.matchName != "ADBE Vector Shape - Group" && path.matchName != "ADBE Vector Shape - Rect" && path.matchName != "ADBE Vector Shape - Ellipse" && path.matchName != "ADBE Vector Shape - Star" ) return false;
    var stroke = shape.property( 2 );
    if ( stroke.matchName != "ADBE Vector Graphic - Stroke" ) return false;
    var fill = shape.property( 3 );
    if ( fill.matchName != "ADBE Vector Graphic - Fill" ) return false;

    return true;
}
// ==================== |--------------------| ====================
// ==================== | DuAERenderQueueLib | ====================
// ==================== |--------------------| ====================

/**
 * Render Queue methods
 * @namespace
 * @memberof DuAEF.DuAE
 */
DuAEF.DuAE.RQueue = {};

/**
 * Checks if the given template is installed
 * @param {string} templateName The name of the template
 * @return {bool} true if the template is available
 */
DuAEF.DuAE.RQueue.hasRenderSettingsTemplate = function (templateName)
{
    var tempComp = app.project.items.addComp("DuAEF Temp", 4, 4, 1, 1, 24);
    var tempItem = app.project.renderQueue.items.add(tempComp);
    var itemTemplates = tempItem.templates;
    for (var i = 0, num = itemTemplates.length; i < num; i++)
    {
        if ( itemTemplates[i] == templateName )
        {
            tempComp.remove();
            return true;
        };
    }
    tempComp.remove();
    return false;
}

/**
 * Checks if the given template is installed
 * @param {string} templateName The name of the template
 * @return {bool} true if the template is available
 */
DuAEF.DuAE.RQueue.hasOutputModuleTemplate = function (templateName)
{
    var tempComp = app.project.items.addComp("DuAEF Temp", 4, 4, 1, 1, 24);
    var tempItem = app.project.renderQueue.items.add(tempComp);
    var omTemplates = tempItem.outputModule(1).templates;
    for (var i = 0, num = omTemplates.length; i < num; i++)
    {
        if ( omTemplates[i] == templateName )
        {
            tempComp.remove();
            return true;
        };
    }
    tempComp.remove();
    return false;
}// ==================== |-------------| ====================
// ==================== | DuBinaryLib | ====================
// ==================== |-------------| ====================

/*
	DuBinaryLib
  Library to create/extract json representations of binary files
	Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
	https://rainboxprod.coop

	_Contributors:_
		Nicolas Dufresne - Lead developer

	This file is part of DuAEF.

	DuAEF is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	DuAEF is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
* Tools to include and extract binary files directly in your script files, allowing to deploy only one .jsx files containing any needed image, preset or executable.
*
* You can easily convert binaries to text (*.jsxinc) files using the {@link https://github.com/Rainbox-dev/DuAEF/tree/master/tools|tools provided with DuAEF}. You can then include those *.jsxinc files inside your scripts, and use the {@link DuAEF.DuBinary.toFile|toFile()} method to extract and use them at runtime.
* @namespace
* @memberof DuAEF
* @example
* //First, include the text representation of the file (Add a # before the include word)
* include icon.png.jsxinc
* // Now, a variable called `icon` (the original file name without extension) is available, you can pass this object to the `DuBinary.toFile()` method to extract it and get an ExtendScript File object representation of it.
* // Note: This object is an instance of a `DuBinaryFile` class, which contains all information and a string representation of the original binary file
* var iconFile = DuBinary.toFile(icon);
* iconFile.fsName; // C:\users\duduf\appData\Roaming\DuAEF\icon.png (Example on Windows)
* //You can also directly use a PNG string in ScriptUI without extracting the file. (Add a # before the include word)
* var button = somePanel.add('iconbutton',undefined,icon.binAsString);
*/
DuAEF.DuBinary = {};

/**
 * Creates a file from a DuBinaryFile object representation.
 * @memberof DuAEF.DuBinary
 * @param {DuBinaryFile}	duBinaryFile  	- The DuBinaryFile object containing the string representation.<br />
 * This object will be replaced by the File object created.<br />
 * If a file object is provided (the file has already been extracted), does nothing.
 * @param {string}			[outputFileName=DuAEF.DuJS.Fs.duaefData/DuAEF/scriptName/category/binaryfilename]	- The output filename.
 * @param {boolean}			[onlyAtFirstRun=true]	- Does not extract the file if it already exists and this is not the first time this version of the script is being used.<br />
 * The file will be extracted only if the script is new or has just been updated (the version changed).
 * @return {File|null} The file created, null if the file could not be written.<br />
 * If the file is not written, check user permissions, and check if the file and network access preference is checked<br />
 * You can check {@link DuAEF.DuAE.App.hasFilesAndNetworkAccess} and call {@link DuAEF.DuAE.App.askFilesAndNetworkAccess}.
 * @example
 * //First, include the text representation of the file (Add a # before the include word)
 * include executable.exe.jsxinc
 * // Now, a variable called `executable` (the original file name without extension) is available, you can pass this object to the `DuBinary.toFile()` method to extract it and get an ExtendScript File object representation of it.
 * // Note: This object is an instance of a `DuBinaryFile` class, which contains all information and a string representation of the original binary file
 * var execFile = DuBinary.toFile(executable);
 * //Now, the file exists in the file system, and execFile is an ExtendScript File object.
 * // The `DuBinary.toFile()` method extracts the file to the Application Data folder by default.
 * execFile.fsName; // C:\users\duduf\appData\Roaming\DuAEF\icon.png (Example on Windows)
 * @example
 * //You can specify the output file name. (Add a # before the include word)
 * include preset.ffx.jsxinc
 * var presetFile = DuBinary.toFile(preset,"C:/test/test_preset.ffx");
 * presetFile.fsName; // C:\test\test_preset.exe");
 */
DuAEF.DuBinary.toFile = function(duBinaryFile,outputFileName,onlyAtFirstRun)
{
  onlyAtFirstRun = def( onlyAtFirstRun, true );
	if (!DuAEF.DuAE.App.hasFilesAndNetworkAccess) return null;
  if (typeof duBinaryFile === 'undefined') return;
	if (duBinaryFile instanceof File) return;
  var rootFolder = DuAEF.DuJS.Fs.duaefData.absoluteURI;
  if (DuAEF.scriptName != '') rootFolder += '/'  + DuAEF.scriptName;
	if (typeof outputFileName === 'undefined') outputFileName = rootFolder + '/' + duBinaryFile.category + '/' + duBinaryFile.fileName;
	var file = new File(outputFileName);

  if (file.exists && !DuAEF.scriptFirstRun && !DuAEF.debug)
  {
    return file;
  }

	if (!file.exists)
	{
		var folder = new Folder(file.path);
		if (!folder.exists)
		{
			folder.create();
		}
	}

	file.encoding = 'BINARY';
	if (file.open('w'))
	{
		success = file.write(duBinaryFile.binAsString);
		file.close();
	}

	duBinaryFile = file;

	return file;
}

/**
 * Creates a DuBinaryFile object from a binary file
 * @memberof DuAEF.DuBinary
 * @param {File}    file      - The File to convert
 * @param {string}  [category]  - A Category for the file, will be used as a subfolder to extract files. Can have subcategories like "category/subcategory".
 * @return {DuBinaryFile} The DuBinaryFile object containing the file as a string
 */
DuAEF.DuBinary.toObj = function(binaryFile,category)
{
  var content = '';

  binaryFile.encoding = "BINARY";
  if (binaryFile.open("r"))
  {
    content = binaryFile.read().toSource();
    content = content.substr(content.indexOf("\"")+1, content.length);
    content = content.substr(0, content.lastIndexOf("\""));
    binaryFile.close();
  }

  var obj = new DuBinaryFile(content,binaryFile.name,category);

  return obj;
}

/**
 * Converts a binary file to a jsxinc file
 * @memberof DuAEF.DuBinary
 * @param {File}    binaryFile      - The binary file to convert
 * @param {string}  [category]        - A Category for the file, will be used as a subfolder to extract files. Can have subcategories like "category/subcategory". Default: ""
 * @param {string}  [outputFileName=Same folder, same name with .json extension]  - The file name for the output.
 * @param {string}	[varName=File name without extension]	- The name of the variable used to store the javascript object.
 * @return {File} The json file created
 */
DuAEF.DuBinary.convertToIncludeFile = function(binaryFile,category,outputFileName,varName)
{
	if (typeof  outputFileName === 'undefined') outputFileName = binaryFile.absoluteURI + '.jsxinc';
	if (typeof varName === 'undefined') varName = binaryFile.name.replace(/\..+/,'');
	varName = DuAEF.DuJS.String.replace(varName,'%20','_');
	var duBinary = DuAEF.DuBinary.toObj(binaryFile,category);
	var jsString = 'var ' + varName + ' = ';
	jsString += '{"binAsString":"' + duBinary.binAsString + '","fileName":"' + duBinary.fileName + '","category":"' + duBinary.category + '"}'
	jsString += ';\r\n';
	jsString += varName + ';\r\n';
	var outputFile = new File(outputFileName);
	outputFile.encoding = 'UTF8';
	if (outputFile.open("w", "TEXT", "????"))
	{
		outputFile.write(jsString);
		outputFile.close();
	}

    return outputFile;
}

/**
 * Converts a JS file to a binary file
 * @memberof DuAEF.DuBinary
 * @param {File}    jsFile        - The JS file to convert
 * @param {string}	[outputFileName=DuAEF.DuJS.Fs.duaefData/category/binaryfilename]	- The output filename.
 * @return {File} The binary file created, or null if failed
 * @example
 * //If you don't want to include the file in the script. (Add a # before the include word)
 * var stringFile = new File("C:\test\image.jpg.jsxinc");
 * var jpgFile = DuBinary.convertToBinaryFile(stringFile);
 * // Warning, this method uses `$.eval()` which is a bad security issue.
 * //This will be changed in the future, but for now, do not use this method for anything else than debugging and testing.
 * @todo Do not use $.eval() but parse the file.
 */
DuAEF.DuBinary.convertToBinaryFile = function(jsFile,outputFileName)
{
	var obj = $.eval(jsFile);
	return this.toFile(obj);
}

/**
 *  Extract paths from a given file. Paths are not checked, be sure to check them before using them. (checking if they exist)
 * Ignore lines starting with "#include".
 * Also returns the surounding elements "path" or 'path'.
 * @memberof DuAEF.DuBinary
 * @param {String}    filePath        - The path to the file
 * @return {string[]} List of paths.
 * @return {int} 1 if the file can't be opened
*/
DuAEF.DuBinary.parseFilePaths = function(filePath)
{
    var paths = [];

    var file = new File(filePath);
    if(!file.open("r")) return 1; // Unable to open the file

    var folder = file.parent.absoluteURI;

    var indexSimple, indexDouble, indexEnd;
    var offset = 0;
    var simple = false;
    var currentString;
    var start;
    while(!file.eof )
    {
          var line = file.readln();

          if (line.indexOf("#include", 0) == 0) continue;

          var strings = [];
          offset = 0;
          do{
              indexDouble = line.indexOf('"', offset); // "
              indexSimple = line.indexOf("'", offset); // '
              if(indexDouble == indexSimple) break; // No match
              if((indexDouble < indexSimple || indexSimple == -1) && indexDouble != -1)
              {
                    simple = false;
                    offset = indexDouble + 1;
              }else if(indexSimple != -1)
              {
                    simple = true;
                    offset = indexSimple + 1;
               }else break;
                start = offset - 1;
               do{
                    if(simple)
                        indexEnd = line.indexOf("'", offset) + 1; // '
                    else
                        indexEnd = line.indexOf('"', offset) + 1; // "
                    offset = indexEnd + 1;
                } while (indexEnd != -1 && line.charAt(indexEnd - 1) == '\\'); // Escaped end string

                if(indexEnd == -1) break;
                currentString = line.slice(start, indexEnd);

                var indexPoint = currentString.lastIndexOf('.');
                if(indexPoint != -1 && indexPoint != currentString.length - 1)
                {
                    paths.push(currentString);
                }

          }while(indexSimple != indexDouble);

    }

    file.close();

    return paths;
}

/**
 * Constructs a new string representation of a file
 * @class DuBinaryFile
 * @classdesc Represents a binary file as a string and a filename.
 * @param	{string}	binAsString			- The string representation.
 * @param	{string}	fileName			- The name of the original file.
 * @param	{string}	[category]			- A Category for the file, will be used as a subfolder to extract files. Can have subcategories like "category/subcategory".
 * @property {string}	binAsString	   - The string representation.
 * @property {string}	fileName  	   - The name of the original file
 * @property {string}	category       - A Category for the file, will be used as a subfolder to extract files. Can have subcategories like "category/subcategory".
 */
function DuBinaryFile(binAsString,fileName,category)
{
	this.binAsString = binAsString;
	fileName = DuAEF.DuJS.String.replace(fileName,'%20','_');
	this.fileName = fileName;
	if (category === undefined) category = '';
	this.category = category;
}
// ==================== |-------------| ====================
// ==================== | DuFFMpegLib | ====================
// ==================== |-------------| ====================

/*
	DuFFMpeg
	Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
	https://rainboxprod.coop

	_Contributors:_
		Nicolas Dufresne - Lead developer

	_DuFFMpeg makes use of:_

		• FFMpeg
		http://ffmpeg.org

	This file is part of DuFFMpeg.

	DuFFMpeg is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	DuFFMpeg is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with DuFFMpeg. If not, see <http://www.gnu.org/licenses/>.
*/


/**
 * Constructs a new FFMpeg encoder.
 * The constructor will try to find the ffmpeg binary in the same folder as DuFFMpeg, or an (ffmpeg) subfolder, or in the scripts folder of After Effects.
 * If ffmpeg is not in one of those, the property ffmpegPath will be an empty string, and it has to be set by the user.
 * @class DuFFMpeg
 * @classdesc A class used to easily encode medias with ffmpeg
 * @param {string}	   [options=-stats]			- The options of the encoder.
 * @property {string}	  ffmpegPath		- The path to the FFMpeg binary.
 * @property {string}	   options			- The options of the encoder.
 * @property {FFMpegQueueItem[]} queue		- The render queue
 * @example
 * //Very simple transcoding
 * //create a new FFMpeg instance
 * var ffmpeg = new DuFFMpeg();
 * //input file. Note that you can use any path format you want, URI, fsName, or path, using either / or \
 * var input = new DuFFMpegInputModule('C:/RAINBOX/Test video 1.mp4');
 * //output to an audio wav file using PCM 32 bit float little-endian codec
 * var output = new DuFFMpegOutputModule('pcm_f32le','C:/RAINBOX/Test audio 1.wav');
 * //create the render queue item
 * var item = new DuFFMpegQueueItem(input,[output]);
 * //add the item to the render queue
 * ffmpeg.queue.push(item);
 *
 * ffmpeg.launch(); //and launch the process!
 * @example
 * //Transcoding two different files, and a few more options
 * //new FFMpeg instance, encoding will overwrite files, and statistics will be shown
 * var ffmpeg = new DuFFMpeg('-y -stats');
 * //input file
 * var input = new DuFFMpegInputModule('C:/RAINBOX/Test video 1.mp4');
 * //output to an audio wav file using PCM 32 bit float little-endian codec, forcing 48000Hz sampling and disabling video
 * var output = new DuFFMpegOutputModule('pcm_f32le','C:/RAINBOX/Test audio 1.wav','-ar 48000 -vn');
 * //create the render queue item
 * var item = new DuFFMpegQueueItem(input,[output]);
 * //add the item to the render queue
 * ffmpeg.queue.push(item);
 *
 * //another render queue item
 * var input = new DuFFMpegInputModule('C:/RAINBOX/Test video 2.mp4');
 * var output = new DuFFMpegOutputModule('pcm_f32le','C:/RAINBOX/Test audio 2.wav','-ar 48000 -vn');
 * var item = new DuFFMpegQueueItem(input,[output]);
 * ffmpeg.queue.push(item);
 *
 * //and launch the process! Both items will be transcoded.
 * ffmpeg.launch();
 */
function DuFFMpeg(options)
{
	if (typeof options === 'undefined') options = '-stats';

	this.ffmpegPath = '';

	var ffmpegBinName = '';
	if (DuAEF.win) ffmpegBinName = 'ffmpeg.exe';
	else ffmpegBinName = 'ffmpeg';
	var thisScriptFile = new File($.fileName);
	var ffmpegFile = new File(thisScriptFile.parent.absoluteURI + '/' + ffmpegBinName);
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(thisScriptFile.parent.absoluteURI + '/(ffmpeg)/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(Folder.appPackage.absoluteURI + '/Scripts/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(Folder.appPackage.absoluteURI + '/Scripts/(ffmpeg)/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(Folder.appPackage.absoluteURI + '/Scripts/ScriptUI Panels/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(Folder.appPackage.absoluteURI + '/Scripts/ScriptUI Panels/(ffmpeg)/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(thisScriptFile.parent.parent.absoluteURI + '/' + ffmpegBinName);
	}
	if (!ffmpegFile.exists)
	{
		ffmpegFile = new File(thisScriptFile.parent.parent.absoluteURI + '/(ffmpeg)' + ffmpegBinName);
	}

	if (ffmpegFile.exists) this.ffmpegPath = ffmpegFile.fsName;

	this.options = options;
	this.queue = [];
}

/**
 * Launches encoding
 * @memberof DuFFMpeg
 */
DuFFMpeg.prototype.launch = function ()
{
	if (!DuAEF.DuJS.Fs.fileExists(this.ffmpegPath) || this.ffmpegPath == '') return;

	var cmd = '';

	var ffmpegCmd = '';

	if (DuAEF.win) ffmpegCmd += '"' + this.ffmpegPath + '"';
	else
	{
	  var ffmpegFile = new File(this.ffmpegPath);
	  ffmpegCmd += '"' + ffmpegFile.parent.fsName + '"/./' + ffmpegFile.name;
	}

	if (DuAEF.win) cmd += 'cmd.exe /c "';

	for (var i = 0 ; i < this.queue.length ; i++)
	{
		if (i > 0) cmd += ' & ';
		cmd += ffmpegCmd + ' ' + this.options;
		var item = this.queue[i];
		cmd += ' ' + item.input.options;
		cmd += ' -i "' + item.input.inputPath + '"';
		for (var j = 0 ; j < item.outputs.length ; j++)
		{
			var output = item.outputs[j];
			cmd += ' -c ' + output.codec;
			cmd += ' ' + output.options;
			cmd += ' "' + output.outputPath + '"';
		}
	}

	if (DuAEF.win) cmd += '"';


	if (DuAEF.mac) cmd = cmd + ' && ';

	system.callSystem(cmd);

	if (DuAEF.mac)
	{
		var currentDate = new Date();
		var timeout = currentDate.getTime() + 30000;
		var checkTime = new Date();

		var cmd = 'ps -A | grep "[f]fmpeg"';

		while(checkTime.getTime() < timeout)
		{
			var test = system.callSystem(cmd);
			if (test == '') break;
			$.sleep(300);
			checkTime = new Date();
		}
	}
}

/**
 * Constructs a new FFMpegInputModule module
 * @class DuFFMpegInputModule
 * @classdesc A class used to easily encode medias with ffmpeg
 * @param {string}	inputPath		- The path to the input file.
 * @param {string}	[options]			- The options for the input file.
 * @property {string}	inputPath		- The path to the input file.
 * @property {string}	options			- The options for the input file. Default: ''
 */
function DuFFMpegInputModule(inputPath,options)
{
	if (!inputPath) throw "No input file set";
	if (inputPath == '') throw "No input file set";
	var inputFile = new File(inputPath);
	if (!inputFile.exists) throw "The input file does not exist";

	this.inputPath = inputFile.fsName;

	if (!options) options = '';
	this.options = options;
}

/**
 * Constructs a new FFMpegOutputModule module
 * @class DuFFMpegOutputModule
 * @classdesc A class used to easily encode medias with ffmpeg
 * @param {string}	codec			- The codec used for transcoding.
 * @param {string}	outputPath		- The path to the output file.
 * @param {string}	[options]			- The options for the output file (other than setting the codec).
 * @property {string}	codec			- The codec used for transcoding.
 * @property {string}	outputPath		- The path to the output file.
 * @property {string}	options			- The options for the output file (other than setting the codec).
 */
function DuFFMpegOutputModule(codec,outputPath,options)
{
	if (!codec) throw "No codec set";
	if (codec == '') throw "No codec set";

	this.codec = codec;


	var outputFile = new File(outputPath);
	this.outputPath = outputFile.fsName;

	if (!options) options = '';
	this.options = options;
}

/**
 * Constructs a new FFMpegQueueItem
 * @class DuFFMpegQueueItem
 * @classdesc A class used to easily encode medias with ffmpeg
 * @param {FFMpegInputModule}		input	  - The input module.
 * @param {FFMpegOutputModule[]}	outputs	   - The output modules
 * @property {FFMpegInputModule}	input	  - The input module.
 * @property {FFMpegOutputModule[]}	outputs	   - The output modules
 */
function DuFFMpegQueueItem(input,outputs)
{
	if (!input) throw "No input set";

	this.input = input;

	if (!outputs) throw "No output set";
	if (outputs.length < 1) throw "Empty outputs";

	this.outputs = outputs;
}
// ==================== |---------| ====================
// ==================== | DuJSLib | ====================
// ==================== |---------| ====================

/**
	* Useful JavaScript tools
	* @namespace
	* @memberof DuAEF
*/
DuAEF.DuJS = {};

/**
 * Assigns a default value to a var if it's undefined.
 * @param {object} val - The variable to set
 * @param {object} defaultVal - The default value
 * @param {boolean} [doPostInit=true] - True to trigger the post-init method of DuAEF when run.<br />
 * Set it to false if it is used in a method which has to run during initialisation of your script,<br />
 * and true if it is used in a method run by the user later.
 * @return {object} The var
 */
def = function(val,defaultVal)
{
	return typeof val === 'undefined' ? defaultVal : val;
}

/**
 * Improved typeof which returns the type of object instead of 'object'
 * @param {any} exp - The expression to check.
 * @return {string} The type. For primitives, in lower case ('string', 'number', 'boolean', 'null', 'undefined')
*/
DuAEF.DuJS.typeof = function (value) {
    var type = typeof value;

    switch(type) {
        case 'object':
        return value === null ? 'null' : Object.prototype.toString.call(value).
            match(/^\[object (.*)\]$/)[1]

        case 'function':
        return 'Function';

        default:
        return type;
    }
}

// ==================== |---------------| ====================
// ==================== | DuIteratorLib | ====================
// ==================== |---------------| ====================

/*
	DuJSLib
	Library javascript tools
	Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
	https://rainboxprod.coop

	_Contributors:_
	Nicolas Dufresne - Lead developer

	This file is part of DuAEF.

	DuAEF is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	DuAEF is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/


/**
	* Constructs an iterator
	* @example
	* //When iterating through the whole list,
	* //using the function do() has the best performance
	* //but you can not break the loop.
	* //If you need it, instead of using the word 'continue',
	* //just make the function return.
	* var it = new Iterator(layers);
	* it.do(function doSomething(layer) {
	* 	layer.name = something;
	*	//If we need to continue to the next item, return.
	*	if (dontWantThis) return;
	*	//else do something here
	* });
	* @example
	* //If you need to break the loop at one time,
	* //like if you're searching for something,
	* //you can use this method instead, which is a bit less quick than using the function do()
	* var it = new Iterator(layers);
	* while (layer = it.next())
	* {
	*	//do something with the layer
		layer.name = something;
		if (found) break;
	* }
	* @class Iterator
	* @classdesc An iterator object to use for easier loops
	* @property {Array|Collection} list - An array or an After Effects Collection
	* @param {Array|Collection} list - An array or an After Effects Collection
	* @property {int} min - The minimum value (inclusive)
	* @property {int} max - The maximum (inclusive)
	* @property {int} length - The number of items
	* @property {int} current - The current item number
	* @property {boolean} atEnd - true if the iterator has reached the end
	* @property {boolean} atStart - true if the iterator is at the start
	* @property {boolean} valid - true if the iterator is between min and max. false until next() or previous() has been called at least once
	* @property {boolean} isCollection - true if the list is a Collection, false if it's a controller
*/
function Iterator(list)
{
	this.isCollection = DuAEF.DuAE.isCollection(list);
	if (!(list instanceof Array) && !this.isCollection)
	{
		list = [list];
	}

	this.min = 0;
	this.max = list.length -1;
	this.length = list.length;
	if (list.length == 0) return;
	if (this.isCollection)
	{
		this.min = 1;
		this.max = this.length;
	}
	this.current = -1;
	this.atStart = false;
	this.atEnd = false;
	this.valid = false;
	this.list = list;
}

/**
	* Increments the Iterator<br />
	* Must be called at least once to validate the iterator
	* @return {Object} The next item, or null if there isn't
*/
Iterator.prototype.next = function ()
{
	if (this.length == 0) return null;

	if (!this.valid)
	{
		return this.goToStart();
	}
	if (this.current < this.max)
	{
		return this.goTo(this.current + 1);
	}

	return null;
}

/**
	* Decrements the Iterator
	* if it's called while valid is false, goes to the end
	* @return {Object} The previous item, or null if there isn't
*/
Iterator.prototype.previous = function ()
{
	if (this.length == 0) return null;
	if (!this.valid)
	{
		return this.goToEnd();
	}
	if (this.current > this.min)
	{
		return this.goTo(this.current - 1);
	}

	return null;
}

/**
	* Goes to the end of the Iterator
	* @return {Object} The item at the end, or null if length is 0
*/
Iterator.prototype.goToEnd = function ()
{
	if (this.length == 0) return null;
	return this.goTo(this.max);
}

/**
	* Goes to the start of the Iterator
	* @return {Object} The item at the start, or null if length is 0
*/
Iterator.prototype.goToStart = function ()
{
	if (this.length == 0) return null;
	return this.goTo(this.min);
}

/**
	* Sets the iterator on the index
	* @param {int} index - The index
	* @return {Object} The item at index, or null if there isn't
*/
Iterator.prototype.goTo = function(index)
{
	if (this.length == 0) return;
	this.current = index;
	if (this.current < this.min || this.current > this.max) this.valid = false;
	else this.valid = true;
	if (this.current == this.min) this.atStart = true;
	else this.atStart = false;
	if (this.current == this.max) this.atEnd = true;
	else this.atEnd = false;

	if (this.valid) return this.list[this.current];
	else return null;
}

/**
	* Executes a function on each item of the List
	* @param {function} callBack - The function to execute, which takes one parameter: an item of the list
*/
Iterator.prototype.do = function (callBack)
{
	if (this.length == 0) return;
	var current = this.current;

	for (var i = this.min ; i <= this.max ; i++)
	{
		this.valid = true;
		this.current = i;
		callBack(this.list[i]);
	}

	this.goTo(current);
}

/**
	* Gets the item at an index,<br />
	* without changing the current iterator index.
	* @param {int} index - The index of the item
	* @return {Object} The item at index, or null if there isn't one
*/
Iterator.prototype.itemAt = function (index)
{
	if (index < this.min) return null;
	if (index > this.max) return null;
	else return this.list[index];
}

/**
	* Gets the first item,<br />
	* without changing the current iterator index.
	* @return {Object} The first item, or null if there isn't one
*/
Iterator.prototype.firstItem = function ()
{
	if (this.list.length == 0) return null;
	else return this.list[this.min];
}

/**
	* Gets the last item,<br />
	* without changing the current iterator index.
	* @return {Object} The last item, or null if there isn't one
*/
Iterator.prototype.lastItem = function ()
{
	if (this.list.length == 0) return null;
	else return this.list[this.max];
}
// ==================== |--------------| ====================
// ==================== | DuJSArrayLib | ====================
// ==================== |--------------| ====================

/**
	* JavaScript Array related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Array = {};

/**
	* Checks if this is an Array or an After Effects collection type
	* @memberof DuAEF.DuJS.Array
	* @param {Array|Collection} list - The list to check
	* @return {boolean} true if this is a Cllection or an Array
*/
DuAEF.DuJS.Array.isList = function (list)
{
	return (list instanceof Array || DuAEF.DuAE.isCollection(list));
}

/**
	* A function to compare two elements in an array
	* @callback DuAEF.DuJS.Array.indexOf~comparisonFunction
	* @memberof DuAEF.DuJS.Array.indexOf
	* @param {*} elementInArray The element in the array
	* @param {*} value The value to compare
	* @return {bool} true if the two values should be considered the same
*/

/**
	* Gets the first index of a value in an Array, or -1 if not found
	* @memberof DuAEF.DuJS.Array
	* @param {Array}	arr	- The array
	* @param {*}	value	- The value to find. Must be compatible with the == operand, or provide a comparison function
	* @param {function}	[comparisonFunction]	- A function which compares two values which returns true if the values are considered the same.
	* @return {int}	The index of the value, -1 if not found
*/
DuAEF.DuJS.Array.indexOf = function (arr,value,comparisonFunction)
{
	if (value == undefined) throw "Value can not be undefined";
	var useFunction = typeof comparisonFunction === 'function';

	for (var i = 0;i<arr.length;i++)
	{
		if (!useFunction && arr[i] == value) return i;
		if (useFunction && comparisonFunction(arr[i],value)) return i;
	}
	return -1;
}

/**
	* Checks if the array has duplicate values
	* @memberof DuAEF.DuJS.Array
	* @param {Array}	arr	- The array
	* @return {boolean}	true if the array has duplicate values
*/
DuAEF.DuJS.Array.hasDuplicates = function (arr)
{
	for (var i = 0;i<arr.length-1;i++) {
		for (var j=i+1;j<arr.length;j++) {
			if (arr[i] === arr[j]) return true;
		}
	}
	return false;
}

/**
	* Returns all duplicated values found in the array
	* @memberof DuAEF.DuJS.Array
	* @param {Array}	arr	- The array
	* @return {Array}	The duplicated values
*/
DuAEF.DuJS.Array.getDuplicates = function (arr)
{
	var duplicates = [];
	for (var i = 0;i<arr.length-1;i++) {
	for (var j=i+1;j<arr.length;j++) {
	if (arr[i] === arr[j]) duplicates.push(arr[j]);
	}
	}
	DuAEF.DuJS.Array.removeDuplicates(duplicates);
	return duplicates;
}

/**
	* Removes all duplicated values from the Array, and returns them
	* @memberof DuAEF.DuJS.Array
	* @param {Array}	arr	- The array
	* @param {function}	[comparisonFunction] - A function which compares two values which returns true if the values are considered the same.
	* @return {Array}	The duplicated (and removed) values
*/
DuAEF.DuJS.Array.removeDuplicates = function (arr, comparisonFunction)
{
	var useFunction = typeof comparisonFunction === 'function';
	var removed = [];
	for (var i = 0;i<arr.length-1;i++)
	{
        for (var j=i+1;j<arr.length;j++)
		{
            if (! useFunction && arr[i] === arr[j]) removed = removed.concat(arr.splice(j,1));
			if (useFunction && comparisonFunction(arr[i],arr[j]) ) removed = removed.concat(arr.splice(j,1));
        }
	}
	return removed;
}

/**
	* Compares two arrays.<br />
	* The items in the arrays must be compatible with the == operand
	* @memberof DuAEF.DuJS.Array
	* @param {Array|Collection} array1 - The array
	* @param {Array|Collection} array2 - The array
	* @param {int} [floatPrecision=-1] - The precision for (float) number comparison, number of decimals. Set to -1 to not use.
	* @return {boolean} true if the two arrays contain the same values
*/
DuAEF.DuJS.Array.compare = function (array1,array2,floatPrecision)
{
	if (!DuAEF.DuJS.Array.isList(array1) && !DuAEF.DuJS.Array.isList(array2))
	{
		if (typeof array1 == 'number' && typeof array2 == 'number')
		{
			return DuAEF.DuJS.Math.compare(array1,array2,floatPrecision)
		}
		else return array1 == array2;
	}
	if (DuAEF.DuJS.Array.isList(array1) && !DuAEF.DuJS.Array.isList(array2)) return false;
	if (!DuAEF.DuJS.Array.isList(array1) && DuAEF.DuJS.Array.isList(array2)) return false;
	if (array1.length != array2.length) return false;

	var it = new Iterator(array1);
	var ok = true;
	it.do(function (item1)
	{
		var item2 = array2[it.current];
		if (!DuAEF.DuJS.Array.compare(item1,item2,floatPrecision))
		{
			ok = false;
			return;
		}
	});

	return ok;
}
// ==================== |--------------| ====================
// ==================== | DuJSColorLib | ====================
// ==================== |--------------| ====================

/**
	* Color related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Color = {};

(function() {
	var aeColor = app.themeColor( 78 );
	aeColor.push(1);
	/**
	* Enum for predefined colors.
	* @readonly
	* @enum {float[]}
	*/
	DuAEF.DuJS.Color.Colors =
	{
		BLACK: [0,0,0,1],
		VERY_DARK_GREY: [0.12,0.12,0.12,1],
		AE_DARK_GREY: aeColor,
		DARK_GREY: [.262,.262,.262,1],
		LIGHT_GREY: [.65,.65,.65,1],
		VERY_LIGHT_GREY: [.85,.85,.85,1],
		RAINBOX_RED: [.925,.094,.094,1],
		ORANGE: [.925,.471,.094,1],
		YELLOW: [.925,.839,.094,1],
		GREEN: [.094,.925,.094,1],
		LIGHT_BLUE: [.471,.839,.925,1],
		LIGHT_PURPLE: [.471,.471,.925,1],
		AFTER_EFFECTS_BLUE: [.439,.722,1,1],
		RAINBOX_PURPLE: [.443,.004,.196,1],
		RANDOM: [-1,-1,-1,-1]
	};
})();


/**
 * Checks if this color is valid ([R,V,B,A] in the range 0.0 ... 1.0)
 * @param {float[]} color - The color to validate
 * @param {boolean} [ignoreAlpha=false] - Will return true even if the array does not have any alpha value
 * @return {boolean} true if the color is valid
 */
DuAEF.DuJS.Color.validateColor = function (color, ignoreAlpha)
{
	ignoreAlpha = def( ignoreAlpha, false, false );
	if ( !DuAEF.DuJS.typeof(color) == 'Array' ) return false;
	var numChannels = color.length;
	if ( numChannels != 4 && !ignoreAlpha ) return false;
	if ( numChannels != 4 && numChannels != 3 ) return false;
	for (var i = 0, numChannels; i < numChannels; i++)
	{
		var c = color[i];
		if (isNaN(c)) return false;
		if (!DuAEF.DuJS.typeof(color) == 'number') return false;
		if (c < 0) return false;
		if (c > 1) return false;
	}
	return true;
}

/**
	* Generates a random color
	* @memberof DuAEF.DuJS.Color
	* @return {float[]}	The color as an [R,G,B,A] Array with float values between 0.0 and 1.0
*/
DuAEF.DuJS.Color.random = function ()
{
	var color = [0,0,0,1];
	for (var i = 0 ; i < 3 ; i++)
	{
		color[i] = DuAEF.DuJS.Math.random();
		$.sleep(10);
	}
	return color;
}

/**
	* Converts an hexadecimal color to an RVB Array
	* @memberof DuAEF.DuJS.Color
	* @param {string|int[]} hexColor	- The hexadecimal color
	* @param {boolean}	[isString=true] 	- Whether hexColor is a string or an Array of int of base 16
	* @return {float[]}	The color as an [R,G,B,A] Array with float values between 0.0 and 1.0
*/
DuAEF.DuJS.Color.hexToRGB = function (hexColor,isString)
{
		if (isString == undefined) isString = true;
		if (isString)
		{
			if (hexColor.indexOf("#") == 0) hexColor = hexColor.replace("#","");
			var red = parseInt(hexColor.substr(0,2),16)/255.0;
			var green = parseInt(hexColor.substr(2,2),16)/255.0;
			var blue = parseInt(hexColor.substr(4,2),16)/255.0;
			return [red,green,blue,1];
		}
		else
		{
			var r = hexColor >> 16;
			var g = (hexColor & 0x00ff00) >> 8;
			var b = hexColor & 0xff;
			return [r/255,g/255,b/255,1];
		}
	}


/**
	* Converts an RGB color to a hex string
	* @memberof DuAEF.DuJS.Color
	* @param {float[]} rgbColor	- The rgb color
	* @return {string}	The color as an hex string
*/
DuAEF.DuJS.Color.rgbToHex = function (rgbColor)
{
	var red = rgbColor[0]*255;
	var green = rgbColor[1]*255;
	var blue = rgbColor[2]*255;
	var hexR = red.toString(16)
	var hexG = green.toString(16)
	var hexB = blue.toString(16);
	if (hexR.length == 1) hexR = "0" + hexR;
	if (hexG.length == 1) hexG = "0" + hexG;
	if (hexB.length == 1) hexB = "0" + hexB;
	var hex = hexR+hexG+hexB;
	return hex;
}

/**
	* Converts an HSL color to RGB
	* @param {float[]} color - The RGBA color array
	* @return {float[]} the HSLA color array
*/
DuAEF.DuJS.Color.hslToRgb = function (color)
{
    var r, g, b;
	var h = color[0];
	var s = color[1];
	var l = color[2];

    if(s == 0)
	{
        r = g = b = l; // achromatic
    }
	else
	{
        function hue2rgb(p, q, t)
		{
            if(t < 0) t += 1;
            if(t > 1) t -= 1;
            if(t < 1/6) return p + (q - p) * 6 * t;
            if(t < 1/2) return q;
            if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
            return p;
        }

        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
        var p = 2 * l - q;
        r = hue2rgb(p, q, h + 1/3);
        g = hue2rgb(p, q, h);
        b = hue2rgb(p, q, h - 1/3);
    }

    return [r, g, b, color[3]];
}

/**
	* Converts an RGB color to HSL
	* @param {float[]} color - The HSLA color array
	* @return {float[]} the RGBA color array
*/
DuAEF.DuJS.Color.rgbToHsl = function (color)
{
	var r = color[0];
	var g = color[1];
	var b = color[2];

    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, l = (max + min) / 2;

    if(max == min)
	{
        h = s = 0; // achromatic
    }
	else
	{
        var d = max - min;
        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
        switch(max)
		{
            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
            case g: h = (b - r) / d + 2; break;
            case b: h = (r - g) / d + 4; break;
        }
        h /= 6;
    }

    return [h, s, l, color[3]];
}

/**
 * Converts an 8bpc color array to a 32bpc float color array
 * @param {int[]} color - The RGB(A) color array in 8bpc (0-255 range)
 * @return {float[]} the RGBA color array
 */
DuAEF.DuJS.Color.eightBpcToFloat = function (color)
{
	var floatColor = [];
	for (var i = 0, numChannels = color.length; i < numChannels; i++)
	{
		floatColor.push( color[ i ] / 255 );
	}
	return floatColor;
}
// ==================== |-------------| ====================
// ==================== | DuJSDateLib | ====================
// ==================== |-------------| ====================

/**
	* Date related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Date = {};

DuAEF.DuJS.Date.MonthNames = [ tr("January"),
	tr("February"),
	tr("March"),
	tr("April"),
	tr("May"),
	tr("June"),
	tr("July"),
	tr("August"),
	tr("September"),
	tr("October"),
	tr("November"),
	tr("December"),];

/**
	* Gets the month number from a literal name
	* @memberof DuAEF.DuJS.Date
	* @param {string} string - The month name
	* @return {int} The month number
*/
DuAEF.DuJS.Date.getMonth = function (string)
{
	string = string.toLowerCase();
	for (var i = 0; i < 12; i++)
	{
		if ( DuAEF.DuJS.Date.MonthNames[i].toLowerCase().indexOf(string) >= 0 ) return i;
	}

	return 0;
}

/**
	* Gets the month name from an index
	* @memberof DuAEF.DuJS.Date
	* @param {int} string - The month index
	* @return {string} The month name
*/
DuAEF.DuJS.Date.getMonthName = function (index)
{
	if (index >= 0 && index < 12) return DuAEF.DuJS.Date.MonthNames[i];

	return "";
}

/**
	* Returns a pretty formatted string representing the date
	* @memberof DuAEF.DuJS.Date
	* @param {Date} date - The date
	* @return {string} The date
*/
DuAEF.DuJS.Date.toString = function (date)
{
	var hour = date.getHours();
	var minute = date.getMinutes();
	var second = date.getSeconds();
	var day = date.getDate();
	var month = date.getMonth();
	var year = date.getFullYear();

	return year + "-" + (month+1) + "-" + day + " " + hour + "-" + minute + "-" + second;
}// ==================== |-----------| ====================
// ==================== | DuJSFsLib | ====================
// ==================== |-----------| ====================

/**
	* JavaScript File System related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Fs = {};

/**
 * The default user data.<br />
 * Replaces the Folder.userData provided by ESTK which does not work properly with mac network sessions.<br />
 * In windows, the value of %APPDATA% ("C:\Documents and Settings\username\Application Data")<br />
 * In Mac OS, "~/Library/Application Support"
 * @type {Folder}
 */
DuAEF.DuJS.Fs.userData = Folder.userData;

if (DuAEF.mac) DuAEF.DuJS.Fs.userData = new Folder('~/Library/Application Support');

/**
 * The folder where DuAEF stores its data, a "DuAEF" subfolder of DuAEF.DuJS.Fs.userData
 * @type {Folder}
 */
DuAEF.DuJS.Fs.duaefData = new Folder(DuAEF.DuJS.Fs.userData.absoluteURI + '/DuAEF/');

/**
 * Recursively remove all content from folder and the folder itself. Warning, this does not move files to the recycle bin and can not be undone.
 * @param {string|Folder} folder - the path or Folder object to wipe.
 */
DuAEF.DuJS.Fs.wipeFolder = function(folder)
{
	if (DuAEF.DuJS.typeof(folder) == 'string' && folder != '') folder = new Folder(folder);
	if (!folder.exists) return;

	var files = folder.getFiles();
	var it = new Iterator(files);
	it.do(function (file)
	{
		if (DuAEF.DuJS.typeof(file) == 'Folder') DuAEF.DuJS.Fs.wipeFolder(file);
		else file.remove();
	});
	folder.remove();
}

/**
	* Recursively gets all files in a folder using a name filter
	* Returns an array of File objects.
	* @memberof DuAEF.DuJS.Fs
	* @param {Folder}	folder	- The Folder
	* @param {string|function}	[filter="*"]	- A search mask for file names, specified as a string or a function.
	* A mask string can contain question mark (?) and asterisk (*) wild cards. Default is "*", which matches all file names.
	* Can also be the name of a function that takes a File or Folder object as its argument. It is called for each file or folder found in the search; if it returns true, the object is added to the return array.
	* @return {Array}	The files found.
*/
DuAEF.DuJS.Fs.getFilesInFolder = function (folder,filter)
{
	if (typeof folder === 'undefined') return [];
	if (!(folder instanceof Folder)) return [];

	var files = folder.getFiles(filter);
	if (files === null) files = [];

	var folders = folder.getFiles(DuAEF.DuJS.Fs.isFolder);

	for (var i = 0, num = folders.length ; i < num ; i++)
	{
		files = files.concat(DuAEF.DuJS.Fs.getFilesInFolder(folders[i],filter));
	}
	return files;
}

/**
	* Checks if an object is a Folder
	* @memberof DuAEF.DuJS.Fs
	* @param {*}	file	- The object to check
	* @return {boolean}	true if this object is an instance of Folder
*/
DuAEF.DuJS.Fs.isFolder = function (file)
{
	return file instanceof Folder;
}

/**
	* Checks if an object is a File
	* @memberof DuAEF.DuJS.Fs
	* @param {*}	file	- The object to check
	* @return {boolean}	true if this object is an instance of Folder
*/
DuAEF.DuJS.Fs.isFile = function (file)
{
	return file instanceof File;
}


/**
	* Returns the name of the given path or file, as displayed by the filesystem
	* @memberof DuAEF.DuJS.Fs
	* @example
	* DuAEF.DuJS.Fs.getName(new File("D:\\code\\open\\Duik\\shape test.test")) // "shape test.test"
	* DuAEF.DuJS.Fs.getName("D:/code/open/Duik/other shape.test") // "other shape.test"
	* @param {String|File|Folder}  [pathOrFile]	- The file or the path
	* @return {String} The basename
*/
DuAEF.DuJS.Fs.getName = function(pathOrFile)
{
    if (pathOrFile instanceof File || pathOrFile instanceof Folder) pathOrFile = pathOrFile.fsName;
	else {
		pathOrFile = new File(pathOrFile).fsName;
	}
    var name = pathOrFile.split("/").pop();
    name = name.split("\\").pop();
    return name;
}

/**
	* Returns the basename of the given path or file
	* @memberof DuAEF.DuJS.Fs
	* @example
	* DuAEF.DuJS.Fs.getBasename(new File("D:/code/open/Duik/shape.test")) // "shape"
	* DuAEF.DuJS.Fs.getBasename("D:/code/open/Duik/shape.test") // "shape"
	* @param {String|File}	 [pathOrFile]	- The file or the path
	* @return {String} The basename
*/
DuAEF.DuJS.Fs.getBasename = function(pathOrFile)
{
    if (pathOrFile instanceof File) pathOrFile = pathOrFile.fsName;
	else {
		pathOrFile = new File(pathOrFile).fsName;
	}
    var name = pathOrFile.split("/").pop();
    name = name.split("\\").pop();
    if(name.lastIndexOf(".") > 0) return name.slice(0, name.lastIndexOf("."));
    return name;
}

/**
	* Returns the extension of the given path or file
	* @memberof DuAEF.DuJS.Fs
	* @example
	* DuAEF.DuJS.Fs.getExtension(new File("D:/code/open/Duik/shape.other.test")) // "test"
	* DuAEF.DuJS.Fs.getExtension("D:/code/open/Duik/shape.test") // "test"
	* @param {String|File}	 [pathOrFile]	- The file or the path
	* @return {String} The extension
*/
DuAEF.DuJS.Fs.getExtension = function(pathOrFile)
{
    if (pathOrFile instanceof File) pathOrFile = pathOrFile.absoluteURI;
    var name = pathOrFile.split("/").pop();
    name = name.split("\\").pop();
    if(name.indexOf(".") > 0) return name.split(".").pop();
    return '';
}

/**
	* Switch the extension of the given path. Create a new path from a given path and a given extension.
	* @memberof DuAEF.DuJS.Fs
	* @param {String|File}	 [pathOrFile]	- The file or the path
	* @param {String}	     [newExtension]	- The new extension
	* @return {String}  The new path
*/
DuAEF.DuJS.Fs.switchExtension = function(pathOrFile, newExtension)
{
    if (pathOrFile instanceof File) pathOrFile = pathOrFile.absoluteURI;
    var point = pathOrFile.lastIndexOf(".");
    if (point == -1) return pathOrFile + "." + newExtension;
    return pathOrFile.slice(0, point) + "." + newExtension;
}

/**
	* Checks if the given path exists
	* @memberof DuAEF.DuJS.Fs
	* @param {string}	 [path]	- The file path
	* @return {boolean} True or false
*/
DuAEF.DuJS.Fs.fileExists = function(path)
{
	var file;
	if (path instanceof File) file = path;
  else file = new File(path);
  return file.exists;
}

/**
	* Reads the first line of a file and return its content
	* @memberof DuAEF.DuJS.Fs
	* @param {File}	 file	- The file
	* @return {string} The content
*/
DuAEF.DuJS.Fs.readFirstLine = function(file)
{
	if (!file.open('r')) return '';
	var data = file.readln();
	file.close();
	return data;
}

/**
	* Reads a whole file and return its content
	* @memberof DuAEF.DuJS.Fs
	* @param {File}	 file	- The file
	* @param {string}	 [encoding='UTF-8']	- The text encoding
	* @return {string} The content
*/
DuAEF.DuJS.Fs.readFile = function(file,encoding)
{
	if (typeof encoding === 'undefined') encoding = 'UTF-8';
	file.encoding = encoding;
	if (!file.open('r')) return '';
	var data = file.read();
	file.close();
	return data;
}

/**
	* Writes a text file
	* @memberof DuAEF.DuJS.Fs
	* @param {File}	 file	- The file
	* @param {string}	 content	- The content to write
	* @param {boolean}	 [append=false]	- Appends instead of replacing
	* @param {string}	 [encoding='UTF-8']	- The text encoding
*/
DuAEF.DuJS.Fs.writeTextFile = function(file, content, append, encoding)
{
	append = def(append, false);
	encoding = def(encoding, 'UTF-8');
	file.encoding = encoding;
	var mode = 'w';
	if (append) mode = 'a';
	if (!file.open(mode)) return;
	file.write(content);
	file.close();
}

/**
	* Parses a JSON file
	* @memberof DuAEF.DuJS.Fs
	* @param {File}	 file	- The file
	* @return {Object|null} The content or null if the file couldn't be parsed
*/
DuAEF.DuJS.Fs.parseJSON = function(file)
{
	if (!file.exists) return {};
	var json = DuAEF.DuJS.Fs.readFile(file);
	if (json == '') return null;
	var data = {};

	try { data = DuAEF.JSON.parse(json); } catch (e) { if (DuAEF.debug) alert(e.description + '\n\nJSON DATA:\n\n' + json); }
	return data;
}

/**
	* Saves a js object to a JSON file
	* @memberof DuAEF.DuJS.Fs
	* @param {Object} obj - The object to save
	* @param {File|string} file - The file or URI
	* @return {boolean} true if the file has been correctly written
*/
DuAEF.DuJS.Fs.saveJSON = function (obj,file)
{
	if (!DuAEF.DuAE.App.hasFilesAndNetworkAccess) return false;
	if (!(file instanceof File)) file = new File(file);
	var data = DuAEF.JSON.stringify(obj,null,4);
	file.encoding = 'UTF-8';
	if (file.open('w'))
	{
		file.write(data);
		file.close();
		return true;
	}
	return false;
}

/**
	* Parses a CSV file
	* @memberof DuAEF.DuJS.Fs
	* @param {File}	 file	- The file
	* @param {string}	 [delimiter=',']	- The delimiter used
	* @param {string}	 [textSeparator='"']	- The separator for texts
	* @return {string[]|null} The content (a two-dimensionnal Array) or null if the file couldn't be parsed
*/
DuAEF.DuJS.Fs.parseCSV = function(file,delimiter,textSeparator)
{
	if (typeof delimiter === 'undefined') delimiter = ',';
	if (typeof textSeparator === 'undefined') textSeparator = '"';
	var reQuoted = new RegExp("(" + textSeparator + ")((?:\\\\\\1|(?:(?!\\1).))*)\\1");
	var data = DuAEF.DuJS.Fs.readFile(file);
	if (data == '') return null;
	data = data.split('\n');
	for (var i = 0, num = data.length; i < num; i++)
	{
		var quotedValues = [];
		var line = data[i];
		var quoted = reQuoted.exec(line);
		while (quoted)
		{
			quotedValues.push(quoted[2]);
			line = line.replace(quoted[0],'%%');
			quoted = reQuoted.exec(line);
		}
		data[i] = line.split(delimiter);
		for (var j = 0, numJ = data[i].length; j < numJ; j++)
		{
			data[i][j] = DuAEF.DuJS.String.trim(data[i][j]);
			if (data[i][j] == '%%')
			{
				data[i][j] = quotedValues.shift();
			}
		}
	}
	return data;
}

/**
	* Shows the default save file dialog and returns the file selected by the user.<r />
	* If the user ommits the extension, the default extension will be appended (Mac OS fix).
	* @memberof DuAEF.DuJS.Fs
	* @param {string}	 prompt	- The prompt text, displayed if the dialog allows a prompt.
	* @param {string}	 [filter='']	- The file type filter (windows only)
	* @param {string}	 [defaultExtension='']	- The default extension
	* @return {File|null} The file or null if the user cancels
*/
DuAEF.DuJS.Fs.saveFileDialog = function(prompt, filter, defaultExtension)
{
	if (typeof defaultExtension === 'undefined') defaultExtension = '';

	var saveFile = File.saveDialog(prompt, filter);
	if (!saveFile) return null;

	if (saveFile.name.indexOf('.') < 1 && defaultExtension != '')
	{
		if (defaultExtension.indexOf('.') != 0) defaultExtension = '.' + defaultExtension;
		saveFile = new File(saveFile.parent.absoluteURI + '/' + saveFile.name + defaultExtension);
	}

	return saveFile;
}

/**
 * Generates a new unique name for a file
 * @param {string} newName	- The wanted new name
 * @param {Folder} folder 	- The folder
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @return {string}	The unique name, with a new number at the end if needed.
 */
DuAEF.DuJS.Fs.newUniqueFileName = function ( newName, folder ) {   
	var file = new File(folder.absoluteURI + "/" + newName);
	while (file.exists)
	{
		file = new File(folder.absoluteURI + "/" + DuAEF.DuJS.Fs.incrementFileName(file) );
	}
	return DuAEF.DuJS.Fs.getName(file);
}

/**
 * Increments the last number before the extension in a filename
 * @param {File} file The file
 * @return {string} The incremented fileName
 */
DuAEF.DuJS.Fs.incrementFileName = function (file) {

	var ext = DuAEF.DuJS.Fs.getExtension(file);
	var baseName = DuAEF.DuJS.Fs.getBasename(file);

	var regex = /(\d*)$/
	var match = baseName.match(regex);
	var num = '_01';
	var numDigits = 0;
	if (match) {
		var n = match[0];
		numDigits = n.length;
		var n = parseInt(n);
		if (!isNaN(n)) {
			n++;
			num = DuAEF.DuJS.Number.convertToString(n,numDigits);
		}
	}

	return baseName.substring(0, baseName.length - numDigits) + num + '.' + ext;

}

/**
 * Removes all forbidden characters from a string to be used as a filename
 * @param {string} name - The filename to fix
 * @param {string} [placeholder='.'] - The string used to replace the forbidden characters
 * @return {string} The fixed filename
 */
DuAEF.DuJS.Fs.fixFileName = function (name, placeholder ) {
	placeholder = def( placeholder, '.');
	
	return name.replace( /([\/\\:*?"<>|])/g, placeholder);
}

/**
	* Image sequences tools
	* @namespace
	* @memberof DuAEF.DuJS.Fs
*/
DuAEF.DuJS.Fs.ImageSequence  ={};

/**
	* Gets the number of a frame from an image sequence<br />
	* The number must be right before the extension.
	* @param {string}	path	- The path of the frame
*/
DuAEF.DuJS.Fs.ImageSequence.getNumber = function(path)
{
	var string_noExt = path.substring(0,path.lastIndexOf('.'));
	var numberi = 0;
	var namei = 0;
	for(var i = string_noExt.length-1;i>=0;i--)
	{
		if(isNaN(parseInt(string_noExt.charAt(i))))
		{
			numberi = i+1;
			break;
		}
	}
	number = string_noExt.substring(numberi,string_noExt.length);
	return number;
}
// ==================== |-------------| ====================
// ==================== | DuJSMathLib | ====================
// ==================== |-------------| ====================

/**
	* JavaScript Math related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Math = {};

/**
	* Generates a random integer between minimum and maximum
	* @memberof DuAEF.DuJS.Math
	* @param {int}	[min=0]	- The minimum value
	* @param {int}	[max=1]	- The maximum value
	* @return {int}	The randomly generated integer
*/
DuAEF.DuJS.Math.random = function (min, max)
{
	if (min == undefined) min = 0;
	if (max == undefined) max = 1;
	var rng = null;
	$.sleep(1);
	var date = new Date();
	var rng = new Math.seedrandom(date.getTime())();

	if (!rng) return 0;
	return rng * (max - min) + min;
}

/**
	* Measures the vector length between two points
	* @param {int[]} value1 - The first value
	* @param {int[]} value2 - The second value
	* @return {float} The length
*/
DuAEF.DuJS.Math.getLength = function (value1,value2)
{
	if (typeof value1 !== typeof value2)
	{
		return null;
	}
	if (value1.length > 0)
	{
		var result = 0;
		for (var dim = 0;dim<value1.length;dim++)
		{
			result += (value1[dim]-value2[dim])*(value1[dim]-value2[dim]);
		}
		result = Math.sqrt(result);
		return result;
	}
	else return Math.abs(value1 - value2) ;
}

/**
	* Compares two numbers
	* @memberof DuAEF.DuJS.Math
	* @param {Number} value1 - The first value
	* @param {Number} value2 - The second value
	* @param {int} [floatPrecision=-1] - The precision for (float) number comparison, number of decimals. Set to -1 to not use.
	* @return {boolean} true if the two values are equal
*/
DuAEF.DuJS.Math.compare = function (value1,value2,floatPrecision)
{
	if (typeof value1 != 'number') return false;
	if (typeof value2 != 'number') return false;
	if (floatPrecision >= 0)
	{
		var mul = Math.pow(10,floatPrecision);
		var num1 = Math.round(value1*mul)/mul;
		var num2 = Math.round(value2*mul)/mul;
		return num1 == num2;
	}
	else return value1 == value2;
}

/**
	* Calculates the log10 of a number
	* @memberof DuAEF.DuJS.Math
	* @param {float}	w	- The number
	* @return {float}	The result of log10(x)<br />
	* i.e. Math.log(x)/Math.LN10
*/
DuAEF.DuJS.Math.log10 = function (x)
{
	return Math.log(x)/Math.LN10;
}

/**
	* Calculates the average value in a list
	* @memberof DuAEF.DuJS.Math
	* @param {Number|Number[]}	values	- values
	* @return {float}	The average value
*/
DuAEF.DuJS.Math.average = function (values)
{
	if (!(values instanceof Array)) return values;
	var sum = 0;
	var total = values.length;
	if (total == 0) return 0;
	for (var i = 0; i < total; i++)
	{
		sum += values[i];
	}
	return sum/total;
}

/**
	* Clamps the value
	* @memberof DuAEF.DuJS.Math
	* @param {Number|Number[]}	values	- values
	* @param {Number}	[min=0] - The minimum value
	* @param {Number}	[max=1] - The maximum value
	* @return {Number|Number[]}	The clamped values
*/
DuAEF.DuJS.Math.clamp = function (values, min, max)
{
	if (typeof min === 'undefined') min = 0;
	if (typeof max === 'undefined') max = 1;
	var isArray = true;
	var result = [];
	if (!(values instanceof Array))
	{
		isArray = false;
		values = [values];
	}
	for (var i = 0, num = values.length; i < num; i++)
	{
		var v = values[i];
		if (v < min) v = min;
		if (v > max) v = max;
		result.push(v);
	}
	if (isArray) return result;
	else return result[0];
}

/**
	* Converts the number from degrees to radians
	* @memberof DuAEF.DuJS.Math
	* @param {number} value - the value
	* @return {float} The value in radians
*/
DuAEF.DuJS.Math.toRadians = function (value)
{
	return value * Math.PI / 180;
}

/**
	* Converts the number from radians to degrees
	* @memberof DuAEF.DuJS.Math
	* @param {number} value - the value
	* @return {float} The value in degrees
*/
DuAEF.DuJS.Math.toDegrees = function (value)
{
	return value * 180 / Math.PI;
}

/**
	* Converts the number from degrees to radians
	* @memberof DuAEF.DuJS.Math
	* @param {number} value - the value
	* @return {float} The value in radians
*/
DuAEF.DuJS.Math.toRadians = function (value)
{
	return value * Math.PI / 180;
}

/**
	* Converts the number from radians to degrees
	* @memberof DuAEF.DuJS.Math
	* @param {number} value - the value
	* @return {float} The value in degrees
*/
DuAEF.DuJS.Math.toDegrees = function (value)
{
	return value * 180 / Math.PI;
}
// ==================== |---------------| ====================
// ==================== | DuJSNumberLib | ====================
// ==================== |---------------| ====================

/**
	* Number related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Number = {};

/**
 * Converts a number to a string, adding optionnal leading zeroes
 * @param {Number} num	- The number
 * @param {int} numDigits 	- The number of digits in the string. Adds leading zeroes
 * @param {int} [base=10]	- The conversion base
 * @return {string}	The number as a string
 */
DuAEF.DuJS.Number.convertToString = function (num, numDigits, base)
{
	if (base == undefined) base = 10;
	var result = num.toString(base);
	while(numDigits > result.length)
	{
		result  = "0" + result ;
	}
	return result;
}
// ==================== |---------------| ====================
// ==================== | DuJSRegExpLib | ====================
// ==================== |---------------| ====================

/**
	* JavaScript Regular Expression related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.RegExp = {};

/**
	* Escape reg exp reserved characters from a string to build a regular expression compatible string
	* @memberof DuAEF.DuJS.RegExp
	* @param {string}	string		- The string to escape
	* @return	{string}	The escaped string
*/
DuAEF.DuJS.RegExp.escapeRegExp = function (string)
{
	return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
// ==================== |---------------| ====================
// ==================== | DuJSStringLib | ====================
// ==================== |---------------| ====================

/**
	* JavaScript String related methods
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.String = {};

/**
 * Counts the number of occurences of item in string
 * @param {string} string - The string where to count
 * @param {string} item - the string to search
 * @return {int} the number of occurences
 */
DuAEF.DuJS.String.occurences = function (string, item)
{
	return (string.split(item).length -1);
}

/**
	* Parses the string as a boolean.<br />
	* The following strings are falsy:<br />
	* 'false', '0', '', 'null', 'undefined', 'NaN'.<br />
	* Note that any string consisiting only in any number of 0 will be falsy.
	* @memberof DuAEF.DuJS.String
	* @param {string} string - The string to parse
	* @param {boolean} [caseSensitive=true] - When false, 'FALSE', 'nan', 'UNdefined'... for example will be falsy too.
	* @return {boolean} The resulting boolean
*/
DuAEF.DuJS.String.parseBool = function (string, caseSensitive)
{
	if (typeof caseSensitive === 'undefined') caseSensitive = true;

	if (!caseSensitive) string = string.toLowerCase();
	var nan = 'NaN';
	if (!caseSensitive) nan = 'nan';

	var reZeroes = /^0+$/g;
	if (reZeroes.test(string)) return false;

	return string === 'false' || string === 'null' || string === '' || string === 'undefined' || string === nan;
}

/**
	* Replaces all occurences of a substring by another and returns the new string.
	* @memberof DuAEF.DuJS.String
	* @param {string}	string			- The original string
	* @param {string}	find			- The substring to replace
	* @param {string}	replace			- The new substring to insert
	* @param {boolean}	[caseSensitive=true]	- Optionnal. Do a case sensitive search of substring.
	* @return	{string}	The new string
	*/
DuAEF.DuJS.String.replace = function (string, find, replace, caseSensitive)
{
	if (caseSensitive == undefined) caseSensitive = true;
	var re = new RegExp(DuAEF.DuJS.RegExp.escapeRegExp(find),caseSensitive ? 'g' : 'gi');
	return string.replace(re, replace);
}

/**
	* Replaces all occurences of "{#}" in the string by the args. Uses "?" if there are less args than occurences of "{#}".
	* @memberof DuAEF.DuJS.String
	* @param {string}	string			- The original string
	* @param {string[]}	args			- The arguments
	* @return {string}	The new string
	*/
DuAEF.DuJS.String.args = function (string, args)
{
    var str = string;
    while(str.indexOf("{#}") !== -1)
	{
		if(args.length < 1)
		{ // If no more args, replace with ?
			str = str.replace("{#}", "?"); // Will replace the first occurence
		}
		else
		{
			var arg = args.shift(); // Take the first arg and remove it
			str = str.replace("{#}", arg);
		}
	}
    return str;
}

/**
 * Checks if a string ends with a given suffix
 * @memberof DuAEF.DuJS.String
 * @param {string}	str 	The string to check
 * @param {string}	suffix	The suffix
 * @return {bool}	Wether the string ends with the given suffix or not
 */
DuAEF.DuJS.String.endsWith = function (str, suffix)
{
	return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

/**
 * Generates a new unique string (numbered)
 * @param {string} newString	- The wanted new string
 * @param {string[]} stringList 	- The list of strings where the new one must be generateUnique
 * @param {boolean} [increment=true] - true to automatically increment the new name if it already ends with a digit
 * @param {boolean} [isFile=false] - when generating name for files, setting this to true will add the increment before the extension
 * @return {string}	The unique string, with a new number at the end if needed.
 */
DuAEF.DuJS.String.generateUnique = function ( newString , stringList , increment )
{
	increment =def(increment, true);
	if (!increment) newString += ' ';

    var reg = "( *)(\\d+)([.,]?\\d*)$";
    var regexClean = new RegExp(reg);
    newString = newString.replace(regexClean,"");
    var regex = new RegExp( DuAEF.DuJS.RegExp.escapeRegExp(newString) + reg);
    var greatestNumber = 0;
    var numDigits = 0;
    var spaceString = "";
    for ( var i =0 ; i < stringList.length ; i ++)
    {
        var currentNumberMatch = stringList[i].match(regex);
        if (stringList[i] === newString && greatestNumber == 0) greatestNumber++;
        else if (currentNumberMatch !== null)
        {
            var numberAsString = currentNumberMatch[2];
            var numberAsInt = parseInt(currentNumberMatch[2],10);
			if (isNaN(numberAsInt)) continue;
            if(numberAsInt >= greatestNumber ){
                greatestNumber = numberAsInt  + 1;
                spaceString = currentNumberMatch[1];
            }
            if(numberAsInt.toString().length < numberAsString.length && numDigits < numberAsString.length) numDigits = numberAsString.length;
        }
    }

    if (greatestNumber > 0)
    {
            if (greatestNumber == 1) {
                greatestNumber++;
                spaceString = " ";
            }
            newString += spaceString;
            greatestNumber = DuAEF.DuJS.Number.convertToString(greatestNumber,numDigits);
            newString += greatestNumber;
    }

	if (!increment) newString = newString.substr(0,newString.length-1);

    return newString;
}

/**
	* Join multiple paths togetther.
	* @param {string[]}	 [parts]	- The parts to join togehter
	* @param {String}	[sep=/]	- The separator to use. If not defined, will look for the first sep in the path.
	* @return {String} The final path
*/
DuAEF.DuJS.String.pathJoin = function(parts, sep)
{
   var separator = sep || false;
   if(!separator)
   {
       if(parts[0].indexOf('/') != -1) separator = '/';
       if(parts[0].indexOf('\\') != -1) separator = '\\';
   }
   if(!separator) separator = '/';
   var replace   = new RegExp(separator+'{1,}', 'g');  // Replace ///// with /
   return parts.join(separator).replace(replace, separator);
}

/**
	* Returns a copy of the string without leading and trailing white spaces.
	* @param {string}	 str	- The string to trim
	* @return {String} The trimmed string
*/
DuAEF.DuJS.String.trim = function(str)
{
	return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
}

/**
	* Returns a copy of the string without leading white spaces.
	* @param {string}	 str	- The string to trim
	* @return {String} The trimmed string
*/
DuAEF.DuJS.String.leftTrim = function(str)
{
	return str.replace(/^[\s\uFEFF\xA0]+/, '');
}

/**
	* Returns a copy of the string without trailing white spaces.
	* @param {string}	 str	- The string to trim
	* @return {String} The trimmed string
*/
DuAEF.DuJS.String.rightTrim = function(str)
{
	return str.replace(/[\s\uFEFF\xA0]+$/, '');
}

/**
	* Returns a copy of the string without leading and trailing white spaces, and without any new line, leaving only standard spaces.
	* @param {string}	 str	- The string to trim
	* @return {String} The trimmed string
*/
DuAEF.DuJS.String.fullTrim = function(str)
{
	var newStr = str.replace(/[\s\uFEFF\xA0]+/g,' ');
	return DuAEF.DuJS.String.trim(newStr);
}
// ==================== |----------------| ====================
// ==================== | DuJSVersionLib | ====================
// ==================== |----------------| ====================

/**
 * Constructs a new version object
 * @class
 * @name DuVersion
 * @classdesc Informations about the version of an application.<br />
 * The version is in the form: Major.Minor.Patch#Build. Example: <code>17.0.0x557</code> or <code>17.0.0-Alpha1</code> or <code>17.4</code><br />
 * The only required part is the Major version.
 * @param {string} [version='1.0.0'] The version in the form Major.Minor.Patch
 * @property {string} fullVersion The complete version name
 * @property {string} versionString The Major.Minor part as a string
 * @property {float} version The Major.Minor part as a float
 * @property {int} major
 * @property {int} minor
 * @property {int} patch
 * @property {int} build The build is -1 if it cannot be parsed as an int, like "alpha".
 * @property {string} buildString The build as a string
 */
function DuVersion( version )
{
	if (typeof version === 'undefined') version = '';
	
	var reV = /^(\d+)\.?(\d*)\.?(\d*)\D?(\S*)/i;
    var v = version.match( reV );

	if (version == '' || !v)
	{
		this.fullVersion = '1.0.0';
		this.versionString = '1.0';
		this.version = 1;
		this.major = 1;
		this.minor = 0;
		this.patch = 0;
		this.build = -1;
		this.buildString = "";
		return;
	}

	if (!v[ 1 ]) v[ 1 ]  = '1';
	if (!v[ 2 ]) v[ 2 ]  = '0';
	if (!v[ 3 ]) v[ 3 ]  = '0';
	if (!v[ 4 ]) v[ 4 ]  = '';

	this.fullVersion = version;
	this.versionString = v[ 1 ] + '.' + v[ 2 ];
	this.version = parseFloat(this.versionString);
	if ( isNaN(this.version) ) this.version = parseFloat(v[ 1 ]);
	if ( isNaN(this.version) ) this.version = 0;
	this.major = parseInt( v[ 1 ] );
	if ( isNaN(this.major) ) this.major = 0;
	this.minor = parseInt( v[ 2 ] );
	if ( isNaN(this.minor) ) this.minor = 0;
	this.patch = parseInt( v[ 3 ] );
	if ( isNaN(this.patch) ) this.patch = 0;
	this.build = parseInt( v[ 4 ] );
	if ( isNaN(this.build) ) this.build = -1;
	this.buildString = v[ 4 ];
}

/**
 * Checks if this version is higher than another.
 * @memberof DuVersion
 * @param {DuVersion|string} otherVersion The version to compare with.
 * @return {bool} true if this version is more recent than otherVersion
*/
DuVersion.prototype.isHigherThan = function( otherVersion )
{
	return DuAEF.DuJS.Version.compare(this, otherVersion);
}

/**
	* Version handling
	* @namespace
	* @memberof DuAEF.DuJS
*/
DuAEF.DuJS.Version = {};

/**
 * Compares two versions of an application
 * @param {string|DuVersion} vA - The first version
 * @param {string|DuVersion} [vB=DuAEF.scriptVersion] - The other version
 * @return {boolean} True if vA is more recent than vB (strict, if they're equal it will return false)
*/
DuAEF.DuJS.Version.compare = function (vA, vB)
{
	vB = def(vB, DuAEF.scriptVersion);

	if (! (vA instanceof DuVersion) ) vA = new DuVersion( vA );
	if (! (vB instanceof DuVersion) ) vB = new DuVersion( vB );

	if ( vA.major > vB.major ) return true;
	if ( vA.major < vB.major ) return false;

	if ( vA.minor > vB.minor ) return true;
	if ( vA.minor < vB.minor ) return false;

	if ( vA.patch > vB.patch ) return true;
	if ( vA.patch < vB.patch ) return false;

	if ( vA.build >= 0 && vB.build >= 0 )
	{
		if ( vA.build > vB.build ) return true;
		if ( vA.build < vB.build ) return false;
	}

	if ( vA.buildString == vB.buildString ) return false;
	if ( vA.buildString == '' && vB.buildString != '') return true;
	if ( vA.buildString != '' && vB.buildString == '') return false;

	var vABuildString = vA.buildString.toLowerCase();
	var vBBuildString = vB.buildString.toLowerCase();

	if ( vABuildString.indexOf('rc') >= 0 )
	{
		if ( vBBuildString.indexOf('rc') < 0 ) return true;
		return vABuildString > vBBuildString ;
	}

	if ( vABuildString.indexOf('gamma') >= 0 )
	{
		if ( vBBuildString.indexOf('rc') >= 0 ) return false;
		if ( vBBuildString.indexOf('gamma') < 0 ) return true;
		return vABuildString > vBBuildString ;
	}

	if ( vABuildString.indexOf('beta') >= 0 )
	{
		if ( vBBuildString.indexOf('rc') >= 0 ) return false;
		if ( vBBuildString.indexOf('gamma') >= 0 ) return false;
		if ( vBBuildString.indexOf('beta') < 0 ) return true;
		return vABuildString > vBBuildString ;
	}

	if ( vABuildString.indexOf('alpha') >= 0 )
	{
		if ( vBBuildString.indexOf('rc') >= 0 ) return false;
		if ( vBBuildString.indexOf('gamma') >= 0 ) return false;
		if ( vBBuildString.indexOf('beta') >= 0 ) return false;
		if ( vBBuildString.indexOf('alpha') < 0 ) return true;
		return vABuildString > vBBuildString ;
	}

	return vABuildString > vBBuildString;
}
// ==================== |--------------| ====================
// ==================== | DuProcessLib | ====================
// ==================== |--------------| ====================

/*
    DuProcessLib
    Library of tools to run command line tools and processes from After Effects scripts
    Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
    https://rainboxprod.coop

    _Contributors:_
    Nicolas Dufresne - Lead developer

    This file is part of DuAEF.

    DuAEF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    DuAEF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
    * Constructs a new DuProcess instance
    * @class DuProcess
    * @classdesc A class to launch and manage processes, using the system command line.
    * @param {string}	  processPath     - The path to the process executable binary
    * @param {string[]}    [args]            - The common arguments used to run the process. You can append arguments each time you run the process with start(args)
    * @param {int}      [timeout=0]         - Waiting timeout after process start, in ms, 0 to avoid waiting, -1 for infinite.
    * If the process times out, process will not be killed, the script will just stop waiting.
    * @property {string}	  processPath     - The path to the process executable binary
    * @property {array}    args            - The common arguments used to run the process. You can append arguments each time you run the process with start(args)
    * @property {int}      timeout         - Waiting timeout after process start, in ms, 0 to avoid waiting, -1 for infinite.
    * If the process times out, process will not be killed, the script will just stop waiting. Default: 0
    * @property {string[]}	queue			- An Array of arguments array.
    Arrays of arguments in the queue will be processed one after each other.
    Update the Array and launch the queue with startQueue()
    * @property {string}	latestCommand	- The latest command which has been run.
    * @property {bool} isAppPackage - True if the process path leads to an application package (.app folder containing at least "/Contents/MacOS") on mac. False otherwise.
*/
function DuProcess( processPath, args, timeout ) {
    processPath = def( processPath, "");
    args = def( args, []);
    timeout = def( timeout, 0);

    this.processPath = processPath;
    this.args = args;
    this.timeout = timeout;
    this.isAppPackage = DuAEF.DuProcess.isAppPackage( processPath );

    this.queue = [];

    this.latestCommand = '';
}

/**
 * Starts the process
 * @memberof DuProcess
 * @param {Array}  args  - Args to append to DuProcess.args before starting
 * @param {int}		[timeout] 	- Overrides the default timeout.
 */
DuProcess.prototype.start = function ( args, timeout ) {
    timeout = def(timeout, this.timeout);

    var cmd = this.buildCmd( args );

    this.startCmd( cmd );
    this.latestCommand = cmd;
    if (timeout > 100) this.waitForFinished( timeout );
}

/**
 * Starts the queue
 * @memberof DuProcess
 * @param {int}		[timeout] 	- Overrides the default timeout.
 */
DuProcess.prototype.startQueue = function ( timeout ) {
    if ( timeout === undefined ) timeout = this.timeout;

    var cmd = this.buildQueueCmd();

    this.startCmd( cmd );
    this.latestCommand = cmd;
    this.queue = [];

    this.waitForFinished( timeout );
}

/**
 * Waits for the process to finish
 * @memberof DuProcess
 * @param {int}		[timeout] 	- Overrides the default timeout.
 */
DuProcess.prototype.waitForFinished = function ( timeout ) {
    if ( timeout === undefined ) timeout = this.timeout;
    var wait = true;
    var currentDate = new Date();
    var timeout = currentDate.getTime() + timeout;
    var checkTime = new Date();

    var checkCmd = '';
    var processName = new File( this.processPath ).name;
    if ( DuAEF.mac ) checkCmd = 'ps -A | grep "' + processName + '"';
    if ( DuAEF.win ) checkCmd = 'tasklist /FO TABLE /NH /FI "Imagename eq ' + processName + '"';

    while ( wait ) {
        var test = system.callSystem( checkCmd );
        if ( test.indexOf( processName ) < 0 ) break;
        $.sleep( 100 );
        checkTime = new Date();

        if ( this.timeout >= 0 ) {
            wait = checkTime.getTime() < timeout;
        }
    }
}

/**
 * Buidls and returns the command line
 * @memberof DuProcess
 * @param {string[]}  [args]  - Args to append to DuProcess.args before starting
 * @return {string}	The command
 */
DuProcess.prototype.buildCmd = function ( args ) {
    if ( args === undefined ) args = [];
    if ( this.processPath.indexOf( '/' ) >= 0 || this.processPath.indexOf( '\\' ) >= 0 ) {
        var processFile = new File( this.processPath );
        this.processPath = processFile.fsName;
        if ( this.processPath.indexOf( ' ' ) > 0 ) {
            this.processPath = '"' + this.processPath + '"';
        }
    }
    var cmd = "";
    if (this.isAppPackage)
    {
        cmd = "open -n " + this.processPath;
        if (args.length > 0 || this.args.length > 0)
        {
            cmd += " --args";
        }
    }
    else
    {
        cmd = this.processPath;
    }

    for ( var a = 0; a < this.args.length; a++ ) {
        var arg = this.args[ a ];
        if (DuAEF.DuJS.typeof(arg) != 'string') arg = arg.toString();
        if ( arg.indexOf( ' ' ) > 0 ) {
            arg = '"' + arg + '"';
        }
        cmd += ' ' + arg;
    }
    for ( var b = 0; b < args.length; b++ ) {
        var arg = args[ b ];
        if (DuAEF.DuJS.typeof(arg) != 'string') arg = arg.toString();
        if ( arg.indexOf( ' ' ) > 0 ) {
            arg = '"' + arg + '"';
        }
        cmd += ' ' + arg;
    }
    
    return cmd;
}

/**
 * Builds and returns the command line to launch the current queue
 * @memberof DuProcess
 * @return {string}	The command
 */
DuProcess.prototype.buildQueueCmd = function () {
    var cmd = '';

    if ( this.queue.length == 0 ) {
        return this.buildCmd();
    }

    for ( var i = 0; i < this.queue.length; i++ ) {
        if ( i > 0 ) {
            if ( DuAEF.mac ) cmd += ' && ';
            if ( DuAEF.win ) cmd += '\r\n';
        }
        cmd += this.buildCmd( this.queue[ i ] );
    }
    return cmd;
}

/**
 * Starts a command (in another thread).
 * @memberof DuProcess
 * @param {string}  cmd  - The command to start
 */
DuProcess.prototype.startCmd = function ( cmd ) {
    if ( DuAEF.mac ) {
        cmd += ' &';
        system.callSystem( cmd );
    }
    if ( DuAEF.win ) {
        var batName = 'DuProcess_' + new Date().getTime() + '.bat'
        var bat = new File( DuAEF.DuJS.Fs.duaefData.absoluteURI + '/' + batName );
        cmd += '\ndel "' + DuAEF.DuJS.Fs.duaefData.fsName + '\\' + batName + '"';
        bat.open( 'w' );
        bat.write( cmd );
        bat.close();
        bat.execute();
    }
}

/**
 * Constructs a queue of different processes
 * @class DuProcessQueue
 * @classdesc A class to launch several processes
 * @param {DuProcess[]}	  [processes]     - The DuProcess Array
 * @property {DuProcess[]}	  processes     - The DuProcess Array
 */
function DuProcessQueue( processes ) {
    if ( processes === undefined ) processes = [];
    this.processes = processes;
}

/**
 * Starts the processes
 * @memberof DuProcessQueue
 */
DuProcessQueue.prototype.start = function () {
    if ( !this.processes.length ) return;
    var cmd = '';
    for ( var i = 0; i < this.processes.length; i++ ) {
        var p = this.processes[ i ];
        if ( i > 0 ) {
            if ( DuAEF.mac ) cmd += ' && ';
            if ( DuAEF.win ) cmd += '\r\n';
        }
        cmd += p.buildQueueCmd();
        p.queue = [];
    }

    this.processes[ 0 ].startCmd( cmd );
}

/**
 * Processes tools
 * @namespace
 * @memberof DuAEF
 */
DuAEF.DuProcess = {}

/**
* Runs a command with some arguments.
* @memberof DuAEF.DuProcess
* @param {string|File} process - The process or a path to the process.
* @param {string[]} [args=[]] - The arguments to pass to the command.
* @return {string}	The output from the command.
*/
DuAEF.DuProcess.run = function( process, args ) {
    var p;
    if (process instanceof File) p = new DuProcess(process.absoluteURI);
    else p = new DuProcess(process);
    var cmd = p.buildCmd(args);
    return system.callSystem( cmd );
}

/**
 * Checks if a given path leads to an Application package on Mac, i.e. it's a path ending with <code>.app</code> containing at least <code>Contents/MacOS/</code>.
 * @memberof DuAEF.DuProcess
 * @param {string|Folder|File} path - The path to the file or folder to check.
 * @return {bool} true if path is an application package.
 */
DuAEF.DuProcess.isAppPackage = function (path) {
    if (DuAEF.win) return false;

    if (path instanceof File || path instanceof Folder) path = path.absoluteURI;
    if (!DuAEF.DuJS.String.endsWith( path, ".app")) return false;
    var testFolder = new Folder(path + "/Contents/MacOS/");
    return testFolder.exists;
}// ==================== |------------| ====================
// ==================== | DuQuantLib | ====================
// ==================== |------------| ====================

/*
DuQuantLib
Library to easily use a pngquant binary executable in After Effects
Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
https://rainboxprod.coop

_Contributors:_
Nicolas Dufresne - Lead developer

_DuQuant makes use of:_

• pngquant
https://pngquant.org/ licensed under BSD by Kornel Lesiński and contributors.

This file is part of DuAEF.

DuAEF is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

DuAEF is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
* Constructs a new PNGQuant instance
* The constructor will try to find the pngquant binary in the same folder as DuQuant, or a (pngquant) subfolder, or in the scripts folder of After Effects.
* If pngquant is not in one of those, the property pngquantPath will be an empty string, and it has to be set by the user.
* @class DuQuant
* @classdesc A class used to easily compress png files using pngquant
* @param {string}   [suffix=_DuQuant]          - The suffix added to compressed files. Using an empty string will overwrite input files.
* @param {int}		[quality=85]			- range 0 (worst) to 100 (perfect), similar to JPEG. pngquant will use the least amount of colors required to meet or exceed the quality.
* @param {string}	  [pngquantPath]		- The path to the pngquant binary. Will try to extract or auto find it if not set
* @property {string}	  pngquantPath		- The path to the pngquant binary. Will try to extract or auto find it if not set
* @property {string}   suffix          - The suffix added to compressed files. Using an empty string will overwrite input files.
* @property {int}			quality					- range 0 (worst) to 100 (perfect), similar to JPEG. pngquant will use the least amount of colors required to meet or exceed the quality.
* @property {File[]|Folder[]}		queue			- An Array of File or Folder objects to compress.
*/
function DuQuant(suffix,quality,pngquantPath)
{
	if (quality === undefined) this.quality = 85;
	else this.quality = quality;

	if (suffix === undefined) this.suffix = "_DuQuant";
	else this.suffix = suffix;

	this.pngquantPath = '';
	this.process = null;

	this.queue = [];
	this.folders = [];

	this.setPngquantPath(pngquantPath);
}

/**
* Launches compression on all files in a given folder
* @memberof DuQuant
* @param {string}  path  - The path to the folder containing files
*/
DuQuant.prototype.compressFolder = function (path)
{
	if (this.process === null) throw 'pngquant not found, cannot compress folder. You should set pngquant path with DuQuant.setPngquantPath()'
	var folder = new Folder(path);
	var pngs = DuJS.fs.getFilesInFolder(folder,"*.png");
	if (pngs.length == 0) return;

	this.compress(pngs);
}

/**
* Launches compression on queue
* @memberof DuQuant
* @param {File[]|Folder[]}  [files=DuQuant.queue]  - The File or Folder objects to compress.
*/
DuQuant.prototype.compress = function (files)
{
	if (files === undefined) files = this.queue;
	else if (!files.length) files = this.queue;
	if (!files.length) return;

	var args = [];

	if (this.suffix != '')
	{
		args.push('--ext');
		args.push(this.suffix + '.png');
	}
	else
	{
		args.push('--ext=.png');
	}
	args.push('--quality');
	args.push('0-' + this.quality);

	for (var i = 0 ; i < files.length ; i++)
	{
		var file = files[i];
		if (DuJS.fs.isFolder(file))
		{
			var filesInFolder = DuJS.fs.getFilesInFolder(file,"*.png");
			for (var j = 0 ; j < filesInFolder.length  ; j++)
			{
				this.process.queue.push(args.concat(filesInFolder[j].fsName));
			}
		}
		else
		{
			this.process.queue.push(args.concat(file.fsName));
		}
	}
	this.process.startQueue();
}

/**
* Sets the path to the pngquant binary executable
* @memberof DuQuant
* @param {pngquantPath}  [path]  - The path to the pngquant binary executable. If not provided, DuAEF will extract the binary if it has been included, or try to find it in common folders.
*/
DuQuant.prototype.setPngquantPath = function (pngquantPath)
{
	if (pngquantPath === undefined) pngquantPath = "";
	var pngquantFile = new File(pngquantPath);
	var pngquantBinName = '';
	if (DuAEF.win) pngquantBinName = 'pngquant.exe';
	else pngquantBinName = 'pngquant';
	if(!pngquantFile.exists)
	{
		if (DuAEF.bin.pngquant != null)
		{
			pngquantFile = DuBinary.toFile(DuAEF.bin.pngquant);
		}
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File($.fileName.substring(0,$.fileName.lastIndexOf('/')) + '/' + pngquantBinName);
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File($.fileName.substring(0,$.fileName.lastIndexOf('/')) + '/(pngquant)/' + pngquantBinName);
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File(Folder.appPackage.absoluteURI + '/Scripts/' + pngquantBinName);
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File(Folder.appPackage.absoluteURI + '/Scripts/(pngquant)/' + pngquantBinName);
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File(Folder.appPackage.absoluteURI + '/Scripts/ScriptUI Panels/' + pngquantBinName);
	}
	if (!pngquantFile.exists)
	{
		pngquantFile = new File(Folder.appPackage.absoluteURI + '/Scripts/ScriptUI Panels/(pngquant)/' + pngquantBinName);
	}

	if (pngquantFile.exists)
	{
		this.pngquantPath = pngquantFile.fsName;
		var timeout = 0;
		var commonArgs = ['--force','--skip-if-larger'];
		this.process = new DuProcess(this.pngquantPath,commonArgs,timeout);
	}
}
// ==================== |---------------| ====================
// ==================== | DuRendererLib | ====================
// ==================== |---------------| ====================

/*
DuRendererLib
Library to manage the After Effects Renderer/RenderQueue
Copyright (c) 2017 Nicolas Dufresne, Rainbox Productions
https://rainboxprod.coop

_Contributors:_
Nicolas Dufresne - Lead developer

This file is part of DuAEF.

DuAEF is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

DuAEF is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

/**
* Constructs a new DuRenderer instance
* @class DuRenderer
* @classdesc A class used to easily manage After Effects Renderer/RenderQueue
* @param {string}             [defaultOutputTemplate]       - The default output module template name to use when adding comp to the queue. Empty string to let default AE OM defaultOutputTemplate.
* @param {PostRenderAction}   [defaultPostRenderAction=PostRenderAction.NONE]     - The default PostRenderAction.
* @param {boolean}				[pngquant=false]					- Compress PNG Sequences using pngquant after render.
* @property {string}             defaultOutputTemplate       - The default output module template name to use when adding comp to the queue. Empty string to let default AE OM defaultOutputTemplate.
* @property {PostRenderAction}   defaultPostRenderAction     - The default PostRenderAction.
* @property {boolean}				pngquant				- Compress PNG Sequences using pngquant after render.
* @property {DuRendererItem[]}              items            - The DuRendererItems in the queue
*/
function DuRenderer(defaultOutputTemplate,defaultPostRenderAction,pngquant)
{
	if (defaultOutputTemplate === undefined) defaultOutputTemplate = '';
	this.defaultOutputTemplate = defaultOutputTemplate;
	if (defaultPostRenderAction === undefined) defaultPostRenderAction = PostRenderAction.NONE;;
	this.defaultPostRenderAction = defaultPostRenderAction;
	if (pngquant === undefined) pngquant = false;
	this.pngquant = pngquant;

	var suffix = '';
	this.pngquantProcess = new DuQuant(suffix);
	if (this.pngquantProcess.pngquantPath == '')
	{
		this.pngquant = false;
	}

	this.items = [];

	this.rqItemsEnabled = [];

	var aerenderBinName = "aerender";
	if (DuAEF.win) aerenderBinName += ".exe";
	this.aerender = new DuProcess(Folder.appPackage.absoluteURI + "/" + aerenderBinName,['-continueOnMissingFootage']);


	pngquantbatchFile = DuBinary.toFile(DuAEF.bin.pngquantbatch);
	this.pngquantbatch = new DuProcess(pngquantbatchFile.fsName,['--force','--skip-if-larger','--ext=.png','--quality','0-85','*.png']);
}

/**
* Adds a comp to the render queue
* @memberof DuRenderer
* @param {CompItem}          comp              - The Composition to add
* @param {string}            outputPath        - The output file path
* @param {string}            [outputTemplate]    - Overrides the default output module template
* @param {PostRenderAction}  [postRenderAction]  - Overrides the default PostRenderAction
*/
DuRenderer.prototype.addComp = function(comp,outputPath,outputTemplate,postRenderAction)
{
	if (outputTemplate === undefined) outputTemplate = this.defaultOutputTemplate;
	if (postRenderAction === undefined) postRenderAction = this.defaultPostRenderAction;
	var item = new DuRendererItem(comp,outputPath,outputTemplate,postRenderAction);
	this.items.push(item);
}

/**
* Adds a DuRendererItem to the After Effects renderQueue
* @memberof DuRenderer
* @param {DuRendererItem}          item              - The Item to add.
* @return {RenderQueueItem}		The item created.
*/
DuRenderer.prototype.addItemToAEQueue = function (item)
{
	var rqItem = app.project.renderQueue.items.add(item.comp);
	var outputModule = rqItem.outputModule(1);
	outputModule.applyTemplate(item.outputTemplate);

	var outputFile = new File(item.outputPath);
	outputModule.file = outputFile;
	outputModule.postRenderAction = item.postRenderAction;
	return rqItem;
}

/**
* Renders a comp in background using aerender.exe
* Automatically manages the existing After Effects render queue to leave it untouched.
* The project will be saved.
* @memberof DuRenderer
* @param {CompItem}          comp              - The Composition to render
* @param {string}            outputPath        - The output file path
* @param {string}            [outputTemplate]    - Overrides Durenderer.defaultOutputTemplate
* @param {PostRenderAction}  [postRenderAction]  - Overrides DuRenderer.defaultPostRenderAction
* @property {bool}				[pngquant]		- Overrides DuRenderer.pngquant
*/
DuRenderer.prototype.backgroundRenderComp = function(comp,outputPath,outputTemplate,postRenderAction,pngquant)
{
	if (outputTemplate === undefined) outputTemplate = this.defaultOutputTemplate;
	if (postRenderAction === undefined) postRenderAction = this.defaultPostRenderAction;
	if (pngquant === undefined) pngquant = this.pngquant;

	this.disableRqItems();
	if (!app.project.file) app.project.save();
	var rqItem = this.addItemToAEQueue(new DuRendererItem(comp,outputPath,outputTemplate,postRenderAction));
	app.project.save();
	var newProjectName = app.project.file.fsName.replace(/\.aep$/gi,"") + "_Durenderer.aep";
	app.project.file.copy(newProjectName);

	this.aerender.queue.push(['-project',newProjectName]);
	if (pngquant)
	{
		var cdProcess = new DuProcess('cd',[rqItem.outputModule(1).file.parent.fsName]);
		var queue = new DuProcessQueue([this.aerender,cdProcess,this.pngquantbatch]);
		queue.start();
	}
	else
	{
		this.aerender.startQueue();
	}

	rqItem.remove();
	this.enableRqItems();
	app.project.save();
}

/**
* Renders a comp in After Effects
* Automatically manages the existing After Effects render queue to leave it untouched.
* @memberof DuRenderer
* @param {CompItem}          comp              - The Composition to render
* @param {string}            outputPath        - The output file path
* @param {string}            [outputTemplate]    - Overrides Durenderer.defaultOutputTemplate
* @param {PostRenderAction}  [postRenderAction]  - Overrides DuRenderer.defaultPostRenderAction
* @property {bool}				[pngquant]		- Overrides DuRenderer.pngquant
*/
DuRenderer.prototype.renderComp = function(comp,outputPath,outputTemplate,postRenderAction,pngquant)
{
	if (outputTemplate === undefined) outputTemplate = this.defaultOutputTemplate;
	if (postRenderAction === undefined) postRenderAction = this.defaultPostRenderAction;
	if (pngquant === undefined) pngquant = this.pngquant;

	this.disableRqItems();

	var rqItem = this.addItemToAEQueue(new DuRendererItem(comp,outputPath,outputTemplate,postRenderAction));
	app.project.renderQueue.render();

	if (rqItem.file.name.toLowerCase().lastIndexOf(".png") == rqItem.file.name.length-4 && pngquant)
	{
		this.pngquantProcess.compressFolder(rqItem.file.parent.fsName);
	}

	rqItem.remove();

	this.enableRqItems();

}

/**
* Renders the queue in background using aerender.exe
* Automatically manages the existing After Effects render queue to leave it untouched.
* The project will be saved.
* @memberof DuRenderer
*/
DuRenderer.prototype.backgroundRender = function()
{
	this.disableRqItems();
	if (!app.project.file) app.project.save();

	var rqItems = [];
	var postProcesses = [];
	for (var i = 0 ; i < this.items.length ; i++)
	{
		var item = this.items[i];
		var rqItem = this.addItemToAEQueue(item);
		var outputFile = rqItem.outputModule(1).file;
		if (this.pngquant)
		{
			var cdProcess = new DuProcess('cd',[rqItem.outputModule(1).file.parent.fsName]);
			postProcesses.push(cdProcess);
			postProcesses.push(this.pngquantbatch);
		}
		rqItems.push(rqItem);
	}

	app.project.save();
	var newProjectName = app.project.file.fsName.replace(/\.aep$/gi,"") + "_Durenderer.aep";
	app.project.file.copy(newProjectName);
	this.aerender.queue.push(['-project',newProjectName]);

	if (this.pngquant)
	{
		var queueProcesses = [this.aerender];
		var queue = new DuProcessQueue(queueProcesses.concat(postProcesses));
		queue.start();
	}
	else
	{
		this.aerender.startQueue();
	}

	this.items = [];

	for (var i = rqItems.length -1 ; i>=0  ; i--)
	{
		rqItems[i].remove();
	}

	this.enableRqItems();
	app.project.save();
}

/**
* Renders the queue in After Effects
* Automatically manages the existing After Effects render queue to leave it untouched.
* @memberof DuRenderer
*/
DuRenderer.prototype.render = function()
{
	this.disableRqItems();
	var rqItems = [];
	for (var i = 0 ; i < this.items.length ; i++)
	{
		var item = this.items[i];
		var rqItem = this.addItemToAEQueue(item);
		var outputFile = rqItem.outputModule(1).file;
		if (outputFile.name.toLowerCase().lastIndexOf(".png") == outputFile.name.length-4 && this.pngquant)
		{
			this.pngquantProcess.queue.push(outputFile.parent);
		}
		rqItems.push(rqItem);
	}
	app.project.renderQueue.render();
	this.pngquantProcess.compress();

	this.items = [];

	for (var i = rqItems.length -1 ; i>=0  ; i--)
	{
		rqItems[i].remove();
	}

	this.enableRqItems();
}

/**
* Disables all previously added Items in the AE renderQueue
* You can re-enable them using DuRenderer.enableRqItems()
*/
DuRenderer.prototype.disableRqItems = function()
{
	for (var i = 1 ; i <= app.project.renderQueue.numItems ; i++)
	{
		var item = app.project.renderQueue.items[i];
		if (item.render) this.rqItemsEnabled.push(i);
		if(item.status != RQItemStatus.RENDERING && item.status != RQItemStatus.DONE &&  item.status != RQItemStatus.WILL_CONTINUE) item.render = false;
	}
}

/**
* Enables all previously added Items in the AE renderQueue, if they were previously disabled by DuRenderer.disableRqItems()
*/
DuRenderer.prototype.enableRqItems = function ()
{
	for (var i = 0 ; i < this.rqItemsEnabled ; i++)
	{
		var item = app.project.renderQueue.items[this.rqItemsEnabled[i]];
		item.render = true;
	}
}

/**
* Constructs a new item to render
* @class DuRendererItem
* @classdesc An item in the Durenderer queue
* @param {CompItem}			comp				- The composition to render
* @param {string}             [outputTemplate]       - The output module template name to use when adding comp to the queue. Empty string to let default AE OM defaultOutputTemplate.
* @param {PostRenderAction}   [postRenderAction]     - The PostRenderAction.
* @param {string}			outputPath			- The output file path.
* @property {CompItem}			comp				- The composition to render
* @property {string}             outputTemplate       - The output module template name to use when adding comp to the queue. Empty string to let default AE OM defaultOutputTemplate.
* @property {PostRenderAction}   postRenderAction     - The PostRenderAction.
* @property {string}			outputPath			- The output file path.
*/
function DuRendererItem(comp,outputPath,outputTemplate,postRenderAction)
{
	this.comp = comp;
	this.outputPath = outputPath;
	this.outputTemplate = outputTemplate;
	this.postRenderAction = postRenderAction;
}

/**
* Renderer tools
* @namespace
* @memberof DuAEF
*/
DuAEF.DuRenderer = {};

/**
 * Loads the outputModules found in the project and recreates them to make them available in the current Ae installation
 * @memberof DuAEF.Renderer
 * @param {file|string} project - An After Effects project file containing one render queue item with the modules to load
 */
DuAEF.DuRenderer.loadOutputModules = function(project)
{
	if (!(project instanceof File)) project = new File(project);
	if (!project.exists) return;
	var importedProject = app.project.importFile(new ImportOptions(project));

	var rqItem = app.project.renderQueue.item(app.project.renderQueue.numItems);

	for (var i = 1, num =  rqItem.outputModules.length; i <= num; i++)
	{
		var om = rqItem.outputModule(i);
		if (DuAEF.DuJS.Array.indexOf(om.templates,om.name) < 0) om.saveAsTemplate(om.name);
	}

	importedProject.remove();
}
// ==================== |---------------| ====================
// ==================== | DuScriptUILib | ====================
// ==================== |---------------| ====================

/*
DuScriptUILib
Library with ScriptUI tools.
Copyright (c) 2017-2019 Nicolas Dufresne, Rainbox Laboratory and Contributors
https://rainboxlab.org

_Contributors:_
Nicolas Dufresne - Lead developer

This file is part of DuAEF.

DuAEF is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

DuAEF is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with DuAEF. If not, see <http://www.gnu.org/licenses/>.
*/

// ==================== |-----------------| ====================
// ==================== | DuScriptUIIcons | ====================
// ==================== |-----------------| ====================

// ==================== |------------| ====================
// ==================== | w14_menu_l | ====================
// ==================== |------------| ====================

var w14_menu_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00TIDAT(\u0091c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\f\f\f,\f\f\f\fO\u009E<!\u00C5\u00DA{222\u00CA\u00E4\u00D8(\b\u00B7\u0091\u0081\u0081\u00C1\u0084\u0081\u0081\u00C1\u0098H\u008Dg\x19\x18\x18\x18\x18\u00C9\r\u009C!\u00E4Grl|\u008Fl\u00E3\x19\x125\n\u0091m#\u00D9\u00D1AvZ\x05\x00+\u00B3\x19Pff\x1C\u00C1\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_menu_l.png","category":""};
w14_menu_l;
// ==================== |------------| ====================
// ==================== | w14_menu_m | ====================
// ==================== |------------| ====================

var w14_menu_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00SIDAT(\u0091c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\f\f\f,\f\f\f\f---\u00A4X{\u00AF\u00A6\u00A6F\u0099\x1C\x1B\x05\u00E16200\u0098000\x18\x13\u00A9\u00F1,\x03\x03\x03\x03#\u00B9\u00813\u0084\u00FCH\u008E\u008D\u00EF\u0091m<C\u00A2F!\u00B2m$;:\u00C8N\u00AB\x00\u00BF\u00A4\x19P\u00CFx\u00CB\u00B2\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_menu_m.png","category":""};
w14_menu_m;
// ==================== |--------------| ====================
// ==================== | w14_layers_m | ====================
// ==================== |--------------| ====================

var w14_layers_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00D7IDAT(\u0091\u009D\u00D2\u00CDQ\x02A\x10\u00C5\u00F1\x1F&\u00E0f\u00A0!l\x06\u00AE\x11\u0088\x11\u0088\x19\x18@\x1F\u00A0\u00AA\u00EF\x12\x02F\u00A0F\u00C0\u0092\x01f\u0080\x19\u0090\u00C1zp\u00B4\x16X\u00F0\u00E3U\u00CDe\u00FA\u00FD\u00A7_\u00CF\u00CC\u00A8\u00EB:\u00FF\u00D1\u00D9\u00B1BfV\u0099y\u00F9'03k\u00AC\u00B1\u00CE\u00CC\u00E6W`fN\u00D0\u00E2\x02\u00E7Xf\u00E6t\u00DF7\u00EA\u00CF\u0098\u0099\x0B\u00DC\x1DI\u00F7\u008AIDlw:ff{\x02\u0082\u009B\x12\u00FF \u00EA\x04o'\u00C0w\u008C\u0087@x\u00C0\u00D3\x00\u00B4*\x07\x7F\u00AB\x0F.\u00B0,q\u00EE{\u00FB3\u00CC\u00F1R\u00D6.\x18\x11M\u00E9\u00F6\u0088\x06\u00D7\u00B8E\u0085g\u009F7]\x7F\u00F9G\u00FB?\u00A7<\u00C7\x1C\x1Blq\u0085YDL\u00FB\u00BE\x03\u00B0\u00C0u\u0089Ua\x1C\x11\u00ED\u00BEg\x10,p\u0085*\"6C\u00F5\u00A3\u00E0O\u00FA\x00!\u00C4H\u00DE\u00C8\u00F9\u00AFt\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_layers_m.png","category":""};
w14_layers_m;
// ==================== |--------------| ====================
// ==================== | w14_layers_l | ====================
// ==================== |--------------| ====================

var w14_layers_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00DAIDAT(\u0091\u009D\u0092\u00D1q\u00C20\x10D\u009F\u00D3@T\u00C0\u00CE\u0084\x12\u00DC\x01\u00A6\x03R\x01\u00A6\u0083\u0094\x00\x15@\tP\x01\u00A1\x02\u009C\x0E\u00A0\x03\u0098\u00D9\x02\u00E8\u00C0\u00F9\u00B0\u009C1\u00C2&!;\u00A3\x0F\u00E9\u00F6\u009D\u00EEN\u00CA\u00EA\u00BA\u00E6?z\x19\n\u00D8\x0E\u00B6GO\u0081\u00B6s\u00E0\b\x1Cm\x17\x7F\x02m\u0097@\x05\u00BC\x01\u00AF\u00C0\u00C1\u00F6\"\u00F5e\u00DD\x1Emo\u0080\u00D9@u{\u00A0\u0094t\u00BD\x01mW\u00C0x\x00ju\u00914JK-\u0081\u00D3#\b\u0098\u00B6\u009B\u00B4\u00C7\x0F`\u00DB\x03}\u00C5\u00C4?\u00EA\u0082\x1B\u00E0@3\u00CDy\u00E7|\t\u00AC\u0081\u00CF\u00B8nAIE\u00BCm\x05\x14\u00C0\x04x\x07\x02\u00B0\u00A3\u0099t\u00DE\u00FA\u00B3\u00F4\u00E7\u00C4\u00E7X\x03g\u00E0J3\u00B0\u00A5\u00A4E\u00D7w\x07F8\u008Fe\x05`*\u00A9J=\u00BD`\u0084\x03\x10$\u009D\u00FB\u00E2\u0083\u00E0o\u00FA\x06\u00E4\u00C0R\u00B0\x14\u00E1\u009C\u00B1\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_layers_l.png","category":""};
w14_layers_l;
// ==================== |--------------| ====================
// ==================== | w14_update_l | ====================
// ==================== |--------------| ====================

var w14_update_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00C3IDAT(\u0091\u009D\u0092\u00C1\r\u0083@\f\x04\x07\u0094\x06\u00F8\u00EF\u008B\u0094\x10ZH\t\u00A4\x04(\x01J\b%\u0084\x16h\u0081\x16h\u0081\u0097\u00FF)\u0081|\u008E\u00C4\u009C\u00E0\x11,\u009D,\u00AFn\u00BD^\u00DF%\u00CB\u00B2p&\u00D2S,\u00E0\x12\x03fv\x03\x1A\u00A0\f\u00D0\b\u00F4!W\u0092:\u0080\u00C4\u008Fjf\x15\u00F0:\x10y\x03\x19p\u00974\u00A6\u008ET:R-)\u0091\u0094\x00u\u00C02\u00DF\u00C5{lBn%\u00F5\x0E\u00AFv\u00947\x1E; _=\u00C4\u00F8ZH\u009Ab\u00C5<\u008C\u00DC\u0098Y\u00E3.\x0E;\u00CD~\u00CB13\u00FF\u00A0\u0093\u00A4b-\u00DC\u00D2fI\u00D7X\u00D1\u00C7\u00E8H%\u00F0\fe{\u00A48{?\u00B1WI_\u00A2Wl\u0081\"\u009C!R\x7Fx\u00D2F\u00F1\u00DF8\u00FDW?\u00FCXH \u00C0\"\u00E5P\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_update_l.png","category":""};
w14_update_l;
// ==================== |--------------| ====================
// ==================== | w14_update_m | ====================
// ==================== |--------------| ====================

var w14_update_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00C4IDAT(\u0091\u009D\u0092\u00C1\r\u00830\fE\x1F\u00A8\x0B\u00B0\x02+\u00B4+t\x04:\x02\u008C\x00\u0087\x7F\u00F4\u00A1\u008CPV`\x05V`\u0085\u00AE\u00D0\x11\u00E8\u00C5T&\u0082C\u00B1\x149\u00F9\u00C9\u00FF\u00DF\u0096\u0093-\u00CB\u00C2\u0099\u00C8O\u00B1\u0080K\n\u0098\u00D9\x15h\u0081\u00CA\u00A1\t\x18<\u00D7\u0092z\u0080,\u0096jf5\u00F0:0\u00F9\x00\x05p\u00974\u00E5\u0081T\x05R#)\u0093\u0094\x01\u008DcET\u0089=\u00B6\u009E;IC\u00C0\u00EB\x1D\u00E7M\u008F=P\u00AE=\u00A4\u00F8z\u00904\u00A7\u008E\u00A5\u0097\u00DC\u009AY\x1B\x1E\u008E;b\x1B\u00C7g\u00D8\u00CF\u00EE\u0084\u008B\u00D5~\u00FF^\u00F1\u00A39N\u0081T\x05\u00D1n\u00C5\x7F\u00E30\u00B3\u00C5\x15K\u00F6\u00A3\u0097\u00F4#F\u00C7\x0E\u00B8\u00F9\x1A\x13\u00F7G$m\x1C\u00FF\u008D\u00D3\x7F\u00F5\x0B\u00A6\u00E6Ee\u00E0\u0089\u00FA\u00DF\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_update_m.png","category":""};
w14_update_m;
// ==================== |---------------| ====================
// ==================== | w14_checked_m | ====================
// ==================== |---------------| ====================

var w14_checked_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u009BIDAT(\u0091\u009D\u00D2Q\r\u00C3 \x10\u00C6\u00F1\x7F\x1B\f\u00CC\u00C2,0\t\u00AB\u0085Y\u00C0\u00C4=\u009E\u0089U\u00C2,\u00B4\x16f\x01+\u00DD\u00C3\u008E\u0086\u0090RH\u00BF\u0084\u0084\x1C\u00DF\u00EF\u00E1\x12\u0086m\u00DB\u00B8\x12\x07\u00A0\u00AAw\u00E0\r\u00F8F\u00FF\x0B\x04\x11\u0089\u00CE\x06\u009F\x0E\x04\u00F0\u00B4\u00EEc\u00B4A\x0FJ\u00F1\x00c\u00ABe\tv\u00F6\u00F4\u00C0IDf\u00FE\u00FBUa\x00\u00A6\x02\u00AD\u00AA\u00EA\u0081\u00E5\fF\x11Y\r\u0097\u00E8\u0096\x17]\x01\x17U\u009D\fSCGp\u00C7\u00E9~\u00F0^\u0085\u00A7 %\u00ED\x18[\u00C5,1\u0087\u00AFN\x1C\u00AD\u00CBp\u00F5\u0093\u00FF\x005\u00BC/\u00CD\f\u00D5\u00AF\x04\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_checked_m.png","category":""};
w14_checked_m;
// ==================== |---------------| ====================
// ==================== | w14_checked_l | ====================
// ==================== |---------------| ====================

var w14_checked_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u009AIDAT(\u0091\u009D\u00D2\u00B1\r\u00C3 \x10\u0085\u00E1\u00DF\x16\x0B\u00A4\u00BF*+\u0090\x11\u00C2\nY\u0081\u0099\u0092\x11\u00BC\u0082\u00BDBV\u00A0\u00BA=H\u0091\u00C3\u00B2,c\u0090\u009F\u0084\u0084\u008E\u00F7\x15'1\u00E4\u009C\u00B9\x12\x07\u00A0\u00AAw\u00E0\r\u00F8F\u00FF\x0BD\x11I\u00CE\x06S\x07\x02xZ\u00F71\u00DA\u00A0\x07\u0095x\u0080\u00B1\u00D5\u00B2D;kz`\x10\u0091\x0F\u00FF\u00FD\u00AA0\x02a\u0087\x16U\u00F5\u00C0|\x06\u0093\u0088,\u0086\u00F7\u00E8\u00B6-\u00BA\x1D\u009CU5\x18\u00A6\u0086\u008E\u00E0\u008A\u00CB\u00FD\u00E0\u00BD\nOAI\u00D91\u00B5\u008A\u009B\u00A4-|u\u00E2d]\u0086\u00AB\u009F\u00FC\x07+\r/\u00CD\u00BF\u008E\u00F5\x06\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_checked_l.png","category":""};
w14_checked_l;
// ==================== |-----------------| ====================
// ==================== | w14_unchecked_l | ====================
// ==================== |-----------------| ====================

var w14_unchecked_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00fIDAT(\u0091\u00ED\u00921\x11\u00800\x10\x047\u0099\u00C8\u00F8\"N\u0088\x04$\u00E0\x04$\u0080\x03$E\u00C4\x0B\u0088\u0083\u00A7IJ&\u0081\u008A\u0082\u00AB\u00FEfn\u00E7\u00AF8gf\u00BCQh\u0087\u00AA.@\u00EC\u00E4\x0Bp\u008AH\t\x15\u00DA\u0080u\u00F0\u00D9\f$_M\x1A/\u00C9\x04\u00E0{\u00A9;\u00FD\u00E0'\u00C1\u00FD\x01s\x00\u00B86rU\u008D\flUD2\u00C0\x05\x07\u00A1\x16\u00F4\u00DE\x11\u0080-\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_unchecked_l.png","category":""};
w14_unchecked_l;
// ==================== |-------------------| ====================
// ==================== | w14_emptysquare_m | ====================
// ==================== |-------------------| ====================

var w14_emptysquare_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u008CIDAT(\u0091\u00ED\u0092A\r\u00C2@\x10E_I\x05\u00E0\u0080:\u00A1\x12\u0090\u0080\u0090\u009F\u0094\u00C3\x17P\x1C\u00D4\x02\x0E\u0090P\tH\u00A8\u0083\u00E5\u00C0.\t\u00B4]6\u009C\u00FB\u0092\u00CD\u00CEa^\u00E6'3U\b\u0081\x7F\u00A8Sa\u00FB\f4?\u00FA'`\u00904\u00D5Q\u00BA\x00]\u00E1\u00B0\x13\u00D0\u00A6\u0089m\u00FCo\u00C0\u0098\u0091:\u00E0\u00F8\x115\u00D2K\u00BA\u00AFY\u00B6\u00DF\u00A9v\u0085\u00F1flb\u0086\u00EFu\f\u00B6\x1F+\u00BD\u00FB%\u00B1\u00E7\u00B5\u00D8C|9\u00AE\x00U:r\u00DB\r\x05\u00B7*i\x04x\x02\u009BT D7\u00D6'\u009B\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_emptysquare_m.png","category":""};
w14_emptysquare_m;
// ==================== |-----------| ====================
// ==================== | w14_url_m | ====================
// ==================== |-----------| ====================

var w14_url_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00AEIDAT(\u0091\u0095\u0092\u00C1\r\u00C20\fE\x1F\u00A8\x0Bt\x05V`\x05\x18\x01V\u00E8\b\\|\u00FC\u0087\u00B2\n\u008C@W\u00E8\be\x04\x18\u00A1\u00C8(\u00A9\u00D4\u0094@\u00F8\u0087(v\u00FC\u00F2m\u00C9\u00ABq\x1CqI\u00DAP 3\u00BB{\u00D5\x1B\u00944\x00E \u00D0\u0099\u00D9\u00BE\nN9\u00A8\x07\u009E\u00E1^\x03[`\u00E7A\u00B5(\u009D\u00AB1\u00B3>f$=\u00C2\x07\u00AC\x17\u00A5s]\u00928\u00BA\x7F\x05\u00BD\u00A8\tNu\u00FA\u0098\x03\x1D:\u009AY'\u00A9\x05\x06I\u0087\u00D8fn\u00C6\x14:\u0085\u00FC\u00AC\u00ED\u00D41\x07-\u0094\u0082E\u00D0\u00C7\x19K W:\u00E3\u00ED\x1709\u0086\u00DD\u00BB\u0096\x02\u00C0\u00D9\u008Fi\u00C9\u00FF\x12\u00F0\x02\u00E6\u008B@\u00CB\u00D9<\u00D2r\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_url_m.png","category":""};
w14_url_m;
// ==================== |-----------| ====================
// ==================== | w14_url_l | ====================
// ==================== |-----------| ====================

var w14_url_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00ADIDAT(\x15\u0095\u0092\u00C1\r\u00C20\fE\x1F\u00A8\x0B\u00F4\u00EE\x13+\u00B0\x02\u008C\x00+t\x04V\u00A0\u00AB\u00C0\bt\u0085\u008EPN\u00FF\f#\x14\x19%\u0095\u009A\x12\b\u00FF\x10\u00C5\u008E_\u00BE-y5\u008E#.I\x1B\ndfw\u00AFz\u0083\u0092\x06\u00A0\b\x04:3\u00DBW\u00C1)\x07\u00F5\u00C03\u00DCk`\x0B\u00EC<\u00A8\x16\u00A5s5f\u00D6\u00C7\u008C\u00A4G\u00F8\u0080\u00F5\u00A2t\u00AEK\x12G\u00F7\u00AF\u00A0\x175\u00C1\u00A9N\x1Fs\u00A0CG3\u00EB$\u009D\u0081A\u00D2!\u00B6\u0099\u009B1\u0085N!?k;u\u00CCA\x0B\u00A5`\x11\u00F4q\u00C6\x12\u00C8\u0095\u00CEx\u00FB\x05L\u008Ea\u00F7\u00AE\u00A5\x00\u00D0\u00FA1-\u00F9_\x02^\u0080#D+\u00F8\u00E3\u00E5\u008F\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_url_l.png","category":""};
w14_url_l;
// ==================== |--------------| ====================
// ==================== | w14_cancel_m | ====================
// ==================== |--------------| ====================

var w14_cancel_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00F3IDAT(\u0091\u008D\u0092\u00C1m\u00C30\fE\u009F\u00BD\u0081WpFHFpFHFhF\u0088\x0F\u00FF\u00F8\x0F\u00CE\b\u00ED\bY\u00A1^\u00C1#4+x\u0084\u00F4P\u00B2P\u0095\x04\u00E8\x07\x04\t\u0094\x1E\u00F9\t\u00AA\u00B9\u00DF\u00EF\u0094\u00B2\u00DD\x03\x03\u00D0\x03+\u00B0H\u009A\u00A9\u00D4\u0094\u00A0\u00EDw\u00E0\u00AD~\x04,\u00C0I\u00D2\u00F2\x00\u00DA\u00FE\u008CJ\u00AF\u00B4\x02\u00FB\u0084\u00DB\u0080\u00A6\x02Zc\u00A5n\u00B1w\u00C05\u0083m\u00EC\u00A5\u00BD\x1D\u00B0\x0Fx\u0094\u00B4\x01\u00B2\u00C7\u00DE\u00F6\x01\u00A0\u00B5=D\u00B6\u00D4!\u00ECl$]lo\u0081mq?d\u00C5\u00BE\u00EAe\u00B2=HJ\u00BB\u00D7*q\u0097\u00E0\u00AD\x02GI\u00B3\u00ED||\u00ACz^\x01\u00DA\u0098Qy1\u0087\u00BD/\u00DB\u00E7\u00B0]&\u009F!\u00C6a\u00FB\fLe\u00C6\u00C2\u00DEZ\u009C\x17I\u00BB\u00B4\u008A\u00A4\x0B\u00F0Q\x00\x0F=E\u00D5c\x06s\x1CH:\x01#\u00CF5\u00F33\u00FC_\u00CB\u00CD\u0093\u00BF\u00DA\u00F1\u00F7\u00AF\u00CE%\u00F0\x12\u00FC\u00AF\u00BE\x01E\u00F7i6V*\x04\x14\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_cancel_m.png","category":""};
w14_cancel_m;
// ==================== |--------------| ====================
// ==================== | w14_cancel_l | ====================
// ==================== |--------------| ====================

var w14_cancel_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00F2IDAT(\u0091\u008D\u0092\u00C1m\u00C30\fE\u009F\u00BD\u0081\u00EF\u00FF\u00E4\u008C\u0090\u008C\u00E0\u008C\u0090\u008C\u00D0\u008C\x10\u008F\u00E0\u008C\u00D0\u008E\u0090\x15\u00EA\x15<Bs\u00FAw\u008F\u0090\x1EJ\x15\u00AC\u0092\x00\u00FD\u0080 \u0081\u00D2#?A5\u00F7\u00FB\u009D,\u00DB=0\x00=\u00B0\x02\u008B\u00A4\u0099JM\x06m\u00BF\x03o\u00F5#`\x01N\u0092\u0096\x07\u00D0\u00F6gTz\u00A5\x15\u00D8\x17\u00B8\rhJ\u00D0\x1A\u00AB\u00E8\x16{\x07\\K\u00B0\u008D=\u00DB\u00DB\x01\u00FB\u0080GI\x1B\u00A0\u00F4\u00D8\u00DB>\x00\u00B4\u00B6\u0087\u00C8Vt\b;\x1BI\x17\u00DB[`\u009B\u00EE\u0087R\u00B1\u00AFz\u0099l\x0F\u0092\u008A\u00DDk\u0095\u00B8+\u00E0\u00AD\x02GI\u00B3\u00ED\u00F2\u00F8X\u00F5\u00BC\x02\u00B41\u00A3|1\u0087\u00BD/\u00DB\u00E7\u00B0\u009D\u0093\u00CF\x10\u00E3\u00B0}\x06\u00A6\u009C1\u00D9[\u00D3y\u0091\u00B4+V\u0091t\x01>\x12\u00F0\u00D0ST=\u0096`\x19\x07\u0092N\u00C0\u00C8s\u00CD\u00FC\f\u00FF\u00D7r\u00F3\u00E4\u00AFv\u00FC\u00FD\u00ABs\x06^\u0082\u00FF\u00D57b\u00A6f\u00F6G\x12\u009Bk\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_cancel_l.png","category":""};
w14_cancel_l;
// ==================== |------------| ====================
// ==================== | w14_comp_l | ====================
// ==================== |------------| ====================

var w14_comp_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0097IDAT(\u0091\u00D5\u0092M\r\u00C2\x00\f\u0085\u00BF.\x13\u0080\u0080z`\x12\u0090\u0080\x04p\u0080\x04\u00EE\\\u00E6\x00\x0E\x130\tH\u00D8\x1C\u0090\u00B4\x02\u0086\u0082r\u00E9\x0E\x1C`?\x07\x12\u00DE\u00A9I\u00FB\u00F2\u00BE\u00A6\u0095\u0088`\u008D\u008AU.\u00A0t\u00F7\rp\x07j\u00A0\u00CDz\u00FB\u00C5\u00D3\x03\u00BB\x128\u00E5\u00E0\x15\u00A8&Ld\u00BF\u0096\u0088\u00C0\u00DDo\u0099\u00B4(\u0091\u00D1\u00A0\u00AA\u0083\u00BB\u009F3\u00F9\u0093:U\x1D\u00C4\u00CC\x0E\u0089\u00D9\x03\x17\u00A0\u0099@\x058\x16@\x07<g\f\u00BFi\u00DC\u00B1\x02\x1E\u0089\u00BA\u009F\u0081\u00DA\u008A\u0099\u00FD\u00C99\u00E4\u00E7\u00BF\u00FA\x02QBH\u00A2\x16\x16\u00F1\u00BB\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_comp_l.png","category":""};
w14_comp_l;
// ==================== |------------| ====================
// ==================== | w14_comp_m | ====================
// ==================== |------------| ====================

var w14_comp_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0098IDAT(\x15c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\f\f\f,---\x02\f\f\f\x07\x18\x18\x18&000l\u0080\u00B2\u00F51T\"\u00C0E\x06\x06\x06\x07\x16\x06\x06\u0086\x02\u00A8\u00C2\u00F9\f\f\f\x06\x0441@\u00E5'\u0080\u00FD\u00D8\u00D2\u00D2\u00B2\x00j\x13I62\u00C04\u00D4\u00D4\u00D4|hiii\u0080\u00DA\u008C\x0B\\\x00\u00A9clnnN\u0080:\x13dR7\x03\x03\u00C3\x12\x1C\x1A\u0090A\"(T/000|\u00C4\u0090\"\x00`~\x049\u00ED\x01\u00D4\u00A9\x01D8u\x03\u00C8\u00A9C$:\u00E8\u009CV\x19\x18\x18\x00\u00B7\u00AAD\"\u00B2\u00E0\u0082\x02\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_comp_m.png","category":""};
w14_comp_m;
// ==================== |------------------| ====================
// ==================== | w14_eyedropper_m | ====================
// ==================== |------------------| ====================

var w14_eyedropper_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00BEIDAT(\x15\u009D\u0092\u00D1\r\u00C2 \x10\u0086?M\x17\u00E8\n8\u0082+\u00D8\x11t\u0084\u00CE\u00D0\u0087{\u00BC\x07W\u00D0\x11t\x04]\u0081Y:\x02\u00E6\f4\u00A4@\x1F\u00FA'$\u00C0\u00FD\x1Fw\x07\x1CB\b\u00EC\u00D1q\x17\x05t\u00C5NE\u00AAz\x05\u00EE12\u0089\u00C8\u00BBY\u00AA\u00AA\u00F6\u00C0\b\u00CC\u00C0#\x0B\u00D9\u00FAT\u00CD\x18\u00A1\x0Fp.\u0082`1\u00D7\u00EA\u00D1\u00C5Q\u00D3WD|\x0B\u00B4L}\u00B1\x0B\x1E\u00B8Q\u00BBUU\x1DcOf\x1AbO\x0B(\"s\x01V \u00B7\u00CA\u00EC\u00D3\u00A4\u00DB\u0080\u00EC\t\u00D2z\u00B2CD\u00E4Y\u0080\u00D1hZCC*/W\x0E\u00A6\u0092^\u00C0e\x0B2\u00FD?\u0080\u00AA\u009A\u00D1\u00DE-\u00EF\u00A5\t\u00E5\x19\u00CD`\u00F5\u00DBwj\u009A\x17\x01?\x0EABN\u00EAi\u00F9b\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_eyedropper_m.png","category":""};
w14_eyedropper_m;
// ==================== |------------------| ====================
// ==================== | w14_eyedropper_l | ====================
// ==================== |------------------| ====================

var w14_eyedropper_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00B4IDAT(\u0091\u009D\u0092\u00C1\r\u00830\fE\x1FU\x17\u00E0\u00EE\x13\x1D\u0081\x15`\x04:\x023\u00B0J\x19\u00A1+\u00B4+d\u0084\u00DE\u00FE=#\u00D0\x03\u00A1\u008A \u0089*\u00BEd)\u0091\u00FD\u00E2\u00EF$\u00D5\u00B2,\u009C\u00D1\u00E5\x14\u00F5/(i\u0090\u00F4\t1\x00T9\u00AB\u0092j`\x04<\u00F0\u0088R\x1E\u00B8]\x0B\u00D0\x0Bh\x13\u00E9\x1AhrV\u009B\x10)\u00BD\u00CD\u00CC\u00E5\u00C06\u009C\u00BC\u0097\x03\u00EE\u0090\u00B8\x1CI#\u00EBL\x0E\u00E8Yg\u00FA\u0081f\u00E6\x0F`\x02jv\u009D\u00DD\u00B6\u00B8\x16\u00A0!\u00DAO@cf\u00F3\x01\f\u0085$\u00A0~\u00B3\x17+\x067KO\u00A0+A\x10>\u0080\u00A4\u008E\u00F5\u00DD\u00E2Y\u00B2P\u00DC\u00D1\x0330\u0095\u008Ac}\x01\u008C*I@\u00A4\x153\u00A2\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_eyedropper_l.png","category":""};
w14_eyedropper_l;
// ==================== |------------| ====================
// ==================== | w14_back_l | ====================
// ==================== |------------| ====================

var w14_back_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00C8IDAT(\u0091\u009D\u0092\u00C1\x11\u0082@\fE\x1F\u008Ew) 3\u00D2\x01\u0096\u00A0\x1D`\x07v \x1D\u0088\x1D\u00D0\x01\u0094@\x0Bv\x00\x1D\u00E8L\n\u00C0\n\u00F0@`2+\x1E$\u00B7M\u00F6\u00ED\u00FF\u00C9&\x1A\u0086\u00815\u00B1\r\x13\u00AA\u009A\x009p\u00B0T\x0F4\"R\u00FB{\u0091WT\u00D5\x12\u00B8\u00FE\x10\u00E9\u0080LD\u009E\x00\x1B\x07\x15\x01\u00F4\x06\x1E\u00EE\u009C\x02\u008D\u00AA\u00C63h\u00F6n\x01t\x04\u008A@5\u00B56f\u00C5l\x01\x02h\x16,_<\x18{HDZ\u00C6\u00A1d\u00C0\t8[\r`\x0F\u00DFS\u00DD1N\u00B3\x05\x12\u00A7\x1C[m\u008E\t\u00EC]\u00AER\u00D5\u00C9fi}\u00F9xy\u00ABa/\u0095\u00D9\u00CC\u00C3\x06\u0081z\x06\u00EDo\u00EE\x0Bp\u00F8`g.\u00D6/@\x14\u00EE\u00EA\u00AA\u0095\u00FB'>\u00DE'L\u0097\u009C?\x7F3\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_back_l.png","category":"14w"};
w14_back_l;
// ==================== |------------| ====================
// ==================== | w14_back_m | ====================
// ==================== |------------| ====================

var w14_back_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00C8IDAT(\u0091\u009D\u0092\u00C1\x11\u0082@\fE\x1F\u008Ew\u00E9@:\u00C0\x12\u00B4\x03\u00EC\u00C0\x0E\u00A4\u0080\u00CC\u00883)\u0080\x0E\u00A0\x04Z\u00B0\x03\u00E8@;\u00C0\n\u00F0@`2+\x1E$\u00B7M\u00F6\u00ED\u00FF\u00C9&\x1A\u0086\u00815\u00B1\r\x13\u00AA\u009A\x009p\u00B0T\x0F4\"R\u00FB{\u0091WT\u00D5\x12\u00B8\u00FE\x10\u00E9\u0080LD\u009E\x00\x1B\x07\x15\x01\u00F4\x06\x1E\u00EE\u009C\x02\u008D\u00AA\u00C63h\u00F6n\x01t\x04\u008A@5\u00B56f\u00C5l\x01\x02h\x16,_<\x18{HDZ\u00C6\u00A1d\u00C0\t8[\r`\x0F\u00DFS\u00DD1N\u00B3\x05\x12\u00A7\x1C[m\u008E\t\u00EC]\u00AER\u00D5\u00C9fi}\u00F9xy\u00ABa/\u0095\u00D9\u00CC\u00C3\x06\u0081z\x06\u00EDo\u00EE\x0Bp\u00F8`g.\u00D6/@\x14\u00EE\u00EA\u00AA\u0095\u00FB'>\x17\rJWp\u00D7\u00A6{\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_back_m.png","category":"14w"};
w14_back_m;
// ==================== |------------| ====================
// ==================== | w14_next_m | ====================
// ==================== |------------| ====================

var w14_next_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00D2IDAT(\x15\u009D\u0092\u008D\t\u00C2@\fF\u009F\u00E2\x00\u00DD@7\u00D0\r\u00EC\x06\u00BA\u0081\u00DD\u00C0\x0E\x10P!\x038\u0082nP'\u00D0\x11t\u0083\u00BAA\u009D\u00A0r\u0092\u0096\u00F4\u00AA \r\x04\u00EEr\u00F7\u00C8\u0097\u009FQ]\u00D7\f\u00B1I\u00CC\u00A8\u00EA\f\u00C8\u0081\u0085\u0085*\u00A0\x10\u0091\u0093\u00FF\u00D7\u00C9\u00A8\u00AAG`\u00FBC\u00C0\x03X\u008BH\x19.c\x07\u00ED\u00BF@Ow\u009E\u0087\u00CC\u00AA\u009A\u00B4\u00A0\u00C9\u00DBE\u00D0\u00D9\u00E4>\"8\u00F7\x19\u00D7=a\u00B0\u00B1x\x1A\u00C1\u0099\x07\x13\u00F7p\x01\x0E\u00E63\x11\u00A9\"x\u00DA\u00A9\u00D1Y(\u00FE\u00E6\x1C\u0083K\u00FF\u00A9\x01+\x17\x0B\r\u00BA\u009Ag\u00D6\u00830\u008A\u0095oX\x03\x16\u00BD\u00BCp\x11\u0091\u00CC\u00A0Poc\u009Fy\u00B6s\u00B4q\u00F8\u00CE\u00BE\u0080;\u00B0t\u00B1Pg\x1A\u00A4\x0F^\u0080\u00DE\u00AE\x0EZ\u00B9\u00BF\rx\x03\x14\u00D6W\u008E\u00A8\u00FC\u00C4\u00AA\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_next_m.png","category":"14w"};
w14_next_m;
// ==================== |------------| ====================
// ==================== | w14_next_l | ====================
// ==================== |------------| ====================

var w14_next_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00D6IDAT(\x15\u009D\u0092\u0081\r\u0082@\fE\u00BF\u00C6\x01\x18\u00A0\u0089l\u00A0\x1B\u00C8\x06\u00B2\u0081l \x1B\u00E8\b\u008E\u00A0\x1B\u00C8\x04:\u0082l\u0080I\x07\u00C0\t05\u00FFH941\u00FC\u00E4\u0092\u00A3\u00DCK\u00DB\u00DF\u00CE\u00BA\u00AE\u00C3\x14-bFUS\x00%\u00805C-\u0080\u00AB\u0088\u009C\u00FD\u00BBAFU=\x01\u00D8\u00FF(\u00A0\x06\u0090\u008BHc\x1Fs\x07\x1D\u00BF@Ow_YfUMz\u0090\u00E5\x1D\"\u00E8\u00C2r\u00EB\b.}\u00C6|T\x18\u00B0c<\u008B\u00E0\x02\u00CE\u009C\u00C4\u00FD\u00A8\x00<xOE\u00A4UU\u0083\u00EF\u00CC\u00B8\x1C\u00F4\u00E8\u00D4\u00F0Q80\u0098\u00F1^\x01l]\u00CC\f\u00BA\u00F1\x14\u00F4\u00C0F\u00B1\u00F5\u0086\x05\u00F0:\u00CA\x0BT\"R\x10\u00B2~\u0083>\u00F3\u00EC\u00E7\u00C8qxg_\u00ECu\u00E3bfRf\u00A5O^\u0080\u00D1\u00AENZ\u00B9\u00BF\x05\u00E0\r\u00A5\u00E4\\hP:\u00AF\u00D3\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_next_l.png","category":"14w"};
w14_next_l;
// ==================== |------------| ====================
// ==================== | w14_news_l | ====================
// ==================== |------------| ====================

var w14_news_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0095IDAT(\x15c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\f\f\f,0\u00C6\u0093'OB\x19\x18\x18\u008C1T`\x07gY\u009E<y\"\u00C8\u00C0\u00C0p\u0086\u0081\u0081A\t\u00AB\x12\u00EC\u00E0,\x0B\u00D4\x16dM\u00AEX\u0095\"\u00C0*\x14\u00A7\"\u0081\x0E\f\x11T \u0088K#\u00B2\u00ED\u0082P\u00FA=\u00BA\"l\x1A\u00F7 \u00B1a\u0081u\x16I,\x14\u0097\u00C6P\f\x11,\x01\u0087Mc'\x12\u00DB\x05\u008B+\u00CAA\x048\u00E5<y\u00F2\u00E4.\u0089\u00D1\u00B1\x1A\u009E\u00E4\u009E<y\x023\u009D \u0090\u0091\u0091\u00D9C\u00E7\u00B4\u00CA\u00C0\u00C0\x00\x00\u00AE1$s4X\u00AE`\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_news_l.png","category":"14w"};
w14_news_l;
// ==================== |------------| ====================
// ==================== | w14_news_m | ====================
// ==================== |------------| ====================

var w14_news_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0093IDAT(\x15c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\f\f\f,0FKKK(\x03\x03\u00831\u0086\n\u00EC\u00E0,KKK\u008B \x03\x03\u00C3\x19\x06\x06\x06%\u00ACJ\u00B0\u0083\u00B3,P[\u00905\u00B9bU\u008A\x00\u00ABP\u009C\u008A\x04:0DP\u0081 .\u008D\u00C8\u00B6\x0BB\u00E9\u00F7\u00E8\u008A\u00B0i\u00DC\u0083\u00C4\u0086\x05\u00D6Y$\u00B1P\\\x1AC1D\u00B0\x04\x1C6\u008D\u009DHl\x17,\u00AE(\x07\x11\u00E0\u0094\u00D3\u00D2\u00D2r\u0097\u00C4\u00E8X\rOr---0\u00D3\t\u0082\u009A\u009A\u009A=tN\u00AB\f\f\f\x00\u00CD(!\x13rv\u00DD\u00FE\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_news_m.png","category":"14w"};
w14_news_m;
// ==================== |------------| ====================
// ==================== | w14_help_m | ====================
// ==================== |------------| ====================

var w14_help_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u008BIDAT(\u0091c\u00FC\u00FF\u00FF?\x039\u0080\u0089,]\u0094hdA\x17hii\x11d``\u0098\u00C9\u00C0\u00C0\x10\n\x15z\u00CF\u00C0\u00C0PQSS3\u008B\u0090\u008D\x1DH\u009A@\x00lPKK\u008B\x0B!\u008D \u0093\u00CF200\u0084100\b!\u0089\x1B#+\u00C2\x19\u00AA--- \u0085\u00BB\u00A16\u0082\u009CkRSSs\x0F\u009F\u008D0\x00\u00D3\x04\u00B2]\x19Y\x13!\u008D\u00EFaN\u00AF\u00A9\u00A9y\u008F.\u0089O\u00A3\x12\u0094\x06\u00D9\u008A\x01\u0088\u00B1\x11+\x18*I\u008E\u0081\u0081\x01\x00\u00A0\u00CB#\u0088\u00C0\u00B4'\u00EE\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_help_m.png","category":"14w"};
w14_help_m;
// ==================== |------------| ====================
// ==================== | w14_help_l | ====================
// ==================== |------------| ====================

var w14_help_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0090IDAT(\u0091\u00BD\u0092\u00C1\r\u00830\fE\x1F\x15\x0B\u00A4\u00E7\x7F\u0082\x11\u00E8\b\u00AC\u00D0\u00CE\u00D2\x11X\x01V\u00E9\f\u00AC\u00D0\u0093\u00EF\x19!\\\x12)B@\x10\u0095\u00FA/\u0096\u00BE\u00FD\u00F4-\u00CBU\b\u0081+\u00BA]\u00A2~\x01\u00EB\u00B5af\x0E\x18\u0081g\u00B4<\u00F0\u00964\u0095\x12\u0087\f\x02p\u00C0hf}\t\u009C\u0080\x19x\x01\u00F7\u00CC\u00EF\u00F2\u00A1j\u00EF\u00AAf\u00D6\x01\u009F\u0098\u00E8\u0081\u0087\u00A4\u00EFQbR\u0082f\u00A0\u00CD\u00A1\x12\u00E8\u00D3\u00EA\u0092\u00FC\u00BAy\x046\u00B1\u00BA\u00AD\u00E6\u0099\u00C4M\u00ED\x1E\u00A7\u00A4\u00FF\u00BF\u00DC\x02<\u00AB\"hN6\u00BD:\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_help_l.png","category":"14w"};
w14_help_l;
// ==================== |---------------| ====================
// ==================== | w14_options_m | ====================
// ==================== |---------------| ====================

var w14_options_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\n\x00\x00\x00\n\b\x06\x00\x00\x00\u008D2\u00CF\u00BD\x00\x00\x00\tpHYs\x00\x00\x03u\x00\x00\x03u\x01\u00D0l\u00A3\u00A1\x00\x00\x00\u00A8IDAT\x18\x19\u0095P\u00C1\r\u00C20\f< \x7F\u00D8\u0082/\x13\x04:\x01t\u00832\x01\x1D\u00E0\x1E<<@7\u0080\r\n#\u00E0\t\u00FAd\f:A\u0090%\u00A7\n|\x10'E\u0096sg\u00EB\u00CE\u00B3\u0094\x12J\u0088\u00C8\u00C6Z\u0092C\u00F9?\tE\u00A4\x01\u00D0\x01X:7\x02hI^'\u00A1\u008B..xx\u00DDz=\u009Ax\u00EEM\u00E7\u00B5\"\u00B9\u00B3\x07\u00A0.\u00B9E\b\u00C1<\u009Dl\x13\u00C9s\u00F6\x14c|\u00AAj\x05`\u00AD\u00AA\u00F7\u00BC\u00D1\u00F0\u00FAH\u00F5\u0085\u00EC\u00D1D\x16\u00A2&y\u00F3p\x07\x00\u00BD\u0085\"\u00B9\n>\u00D8z\u0098^D,\u008C\r\u00EE\x0B\u00EE\u00CF\u00F3\u00FC<8\u00807\x15\u0094L[\x7F\\\u00D76\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w10_circle_m.png","category":"10w"};
w14_options_m;
// ==================== |---------------| ====================
// ==================== | w14_options_r | ====================
// ==================== |---------------| ====================

var w14_options_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\n\x00\x00\x00\n\b\x06\x00\x00\x00\u008D2\u00CF\u00BD\x00\x00\x00\tpHYs\x00\x00\x03u\x00\x00\x03u\x01\u00D0l\u00A3\u00A1\x00\x00\x00\u0099IDAT\x18\u0095c\u00FC\u00FF\u00FF?\x032x+)i\x00\u00E2\n?\x7F~\x01Y\x1C\u00AE\u00F0\u00AD\u00A4d\x02\x03\x03\u00C3\x04\x06\x06\x06~\u00A8\u00DCG\x06\x06\u0086\x02\u00E1\u00E7\u00CF\x17\u00C0\x15B\x15\u00CD\u0087*8\b\u00A5\u00ED\u00A1t\"X1H\u00E1\x1B\t\u0089\x0Fo$$\u00FE\u00BF\u0091\u0090p\x00\u00F1\u00A1b\x01P\u00B1\x0F >\u00E3\x1B\t\t\u0090\u009B\u00CE\u0083L\x12~\u00FE\u00DC\x01\u00CD\u00BD\x07\u00A0&\x1B2!\u0089\x7F@\u00F1\x15:@\u00B3:\x00\u0097\u00D5,P\u008D\x05P\u00CF\u00AC\x7F+)\t\u00F2\f\u00C8t\x7F$9\x12\u0083\u0087`\u0080300\x00\x00v`d\u00AB\u00CE\u00DA\u00CE\u00AA\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w10_circle_r.png","category":"10w"};
w14_options_r;
// ==================== |------------| ====================
// ==================== | w25_back_r | ====================
// ==================== |------------| ====================

var w25_back_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x19\x00\x00\x00\x19\b\x06\x00\x00\x00\u00C4\u00E9\u0085c\x00\x00\x00\tpHYs\x00\x00\b\u00A6\x00\x00\b\u00A6\x01\u00E0\u0081\u00E0\u00E7\x00\x00\x01\u0084IDATH\u0089\u00BD\u0096\u00C1q\u00C20\x10E\x1F\u0099\u00DCa\u00C6\u00A7=\u00E1\x0EB*\u0088K \x15\x00\x1DP\x02\u00A9 \u00E9 N\x07\u00A4\x03\u00E8\u0080T\x10\u00FB\u00A4\u0093fH\x05\u00E4`\u0089\u0091\u00C5Z&\t\u00E4\u009Fly\u00A5'\u00ADV_\x1E\x1C\x0E\x07\u00AE\u00AD\u009B\u00AB\x13\u0080\u00DBs\u0082\u00AC\u00C8\x04\u0098\x02E\u00D0\u00BC\x076\u00C0:3\u00A6J\u00F5\x1F\u00A4\u00D2eE\u00A6\u00C0\x0B0\u00EE\u0099\u00C7\x16Xf\u00C6\u00EC~\x04\u00B1\"%0\u00EB\x19<\u00D6\"3\u00A6\u008C\x1B\u00D5=\u00F9%\x00\u00E0\u00D5\u008A,{!Vd\u0095\x00|\x01\x0B\u00E0=\x01zvi>\u00AA\u0095.+\u0092\x03\u009F\t@\u00E1\u00F3nEv\u00C0]Gl\u009D\x19\u0093\u00FB\u0097x%\u00AB3\x01\u0093\x04\x00`lE\u00E6]\u0090)\u00A7\u00D2\x00\u009B\x04\u00C0\u00EB\x14bE\n`\u00D8\x03\u00C8\x1D \u008E\u00D3\u00F4\u00E0\x1F\u00C2\u00C38R\x02\u008B\u00B0\u00F6\u00DD\u00A1;\u0089\x0BV7\u008C\u00DA\u00F3\u00CC\u0098*L\u00D7$\u00EA[w\x1D\u00AEX.\u00AER>\u00E5\u00D0^I<\u00E0\u00D8\u008A\u0094\u00991\u00F3`f#e2\u00D0\u00EC\u00A5V\bU\f\u00D9+A3+B\b\u00A2\u00B1\u0099Te\x1D\u00E5=\u00ED&h\u00D8\u00D0l\u00B4\x06*]\u00CC\u009E\u00C6$?\u00CE`l\u00FDC\\\u00C2\u00EB\u008E\x0E\x1A\u00A8\u00EE\u0081\u0094]\u0090U\u00A2\u00D3\x11\u00E4\u00A4U\u00A3W\x1D\x1Ae\x0B\u00E2r\u00F8\u00D4\x03\u00DA\u00D1\x14I\u00EA\u00AC\u00B4LR\u00B5\u00FA?\u00B80(v\u00AFZ\u00BD\u00AB\u00A6\u00B7K\x00:!\x01\u00E8\u0091\u00FE\r\u0086\u00A6\u0092\u00EE5\x00\u00F4\\\u00BF^W\u00BD\u00E3/\u00A5\x7F\u00F9%\u00FA\x06\u00E04\u00AC\u00B1\u00C1X\x1B8\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w25_back_r.png","category":""};
w25_back_r;
// ==================== |------------| ====================
// ==================== | w25_back_m | ====================
// ==================== |------------| ====================

var w25_back_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x19\x00\x00\x00\x19\b\x06\x00\x00\x00\u00C4\u00E9\u0085c\x00\x00\x00\tpHYs\x00\x00\b\u00A6\x00\x00\b\u00A6\x01\u00E0\u0081\u00E0\u00E7\x00\x00\x01}IDATH\u0089\u00BD\u0096\u00EDm\u00C20\x10\u0086\x1FP\u00FF\u0097\r\u00A0\x13\x14&(#\u00A4\x13\x00\x13\u0094\x01N*\u0095\u00EE\x7F\u00D9\u00A0\u00E9\x04\u00A5\x13\x146\u00A0\x1B\u0084\r\u00E8\x04\u00F4G\u009C\u00CA1g\u009B~\u00D0W\u008A\x149\u00E7<\u00CE\u00DD\u00F9u:\u0087\u00C3\u0081s\u00AB{v\x02pqJ\u0090\u00AA\x0E\u0081\x02\x18{\u00C3{`\r\u00ACD\u00A4J\u00CD\u00EF\u00A4\u00D2\u00A5\u00AA\x05\u00B0\x04\u00FA\u0099ul\u0080\u00B9\u0088l\u00BF\x05Q\u00D5\x12\u0098d^\x1Ej&\"e8h\u00D6\u00E4\u0087\x00\u0080'U\u009Dg!\u00AA\u00BAH\x00>\u0080\x19\u00F0\u009A\x00=\u00BA4\u00DB\x10U\x1D\x00\u00F7\t\u00C0XDJ\x11)\u0080\u00F7\x04h\x19\u0085\x00\u008B\f`\u00EB\x163\x04\u00AE\x13\u0090\u00BE\u00AANc\u0090\u0082cY\u0080u\x02\u00D0\u00E8\x18\u00A2\u00AAc\u00E02\x03\x188@\x18g\u00E9\u00A6\u00B9\u00F9jaW\u00AC\u0097 p\x14\u00EB}_\u00DE\u00D7\u0085\u00F0+\x11\u00A9\u00FCt\r\u0083\u0080\u00DD)\x00\x00\x17W\x19\u008F\x06\u00D0\u00B6\u0095\u00F0\u0085}U-Ed\u00EA\u00AD\u00B8g,\x06\u00EAZZ\u008DPA\u00BB\u00F0{#h\u00E26\u00A6\u00AF%\u00F0\x16\\w\u00C6\\\x1AO\u00EBz\x03k\u00EABGA\"\u00B2\u00A76\u00C9\u00D4\x1Ei\u00B4in\u00C2\x16^E&X\u00A0]\x06R\u00C6 \u008B\u00C4\u00A40u\u00BDD\u00EC\u00CE7\u00CA\x16\u00C4\u00E5\u00F0!\x03\u00DAR7Ij\u00AF\u00B4L\u00D2\u00B4\u00FA_\u00B80\x18voZ\u00BDk\u00DB\u00E7\u00BF\x00D!\x1E\u00E8\u0096|\u0081\u00A1\u00EE\u00A4\u0091\x05\u0080\u00CC\u00F1\u00DB\u00E8\u00ACg\u00FC_\u00E9_~\u0089>\x01E\u00F9\u00A9\u00ED\x02\u009A\u00F5\u00AF\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w25_back_m.png","category":""};
w25_back_m;
// ==================== |-------------| ====================
// ==================== | w25_check_r | ====================
// ==================== |-------------| ====================

var w25_check_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x19\x00\x00\x00\x19\b\x06\x00\x00\x00\u00C4\u00E9\u0085c\x00\x00\x00\tpHYs\x00\x00\b\u00A6\x00\x00\b\u00A6\x01\u00E0\u0081\u00E0\u00E7\x00\x00\x01\u008BIDATH\u0089\u00BD\u0095\u00C1q\u00C20\x10E\x1F\u00994\u00E0\u00D1IWR\x02)\u00C1\u0094@J0%\u0090\x12\u00D2B\\\x02\u0094\x00%@\t\u00F8\u00AA\u0093\u00C6%\u0090\u0083$\u00CFZ\u0096@\u00C0\u0090\u009Da\x18\u00DBk=\u00ED\u00EE\u00D7\u00F7\u00ECr\u00B9\u00F0\u00EAx{9\u00E1\u00BF \u00EF\u00B7\x12\u00AC\u00D65\u00B0\x02j`\u00EEo\u00F7\u00FE\u00B7\x03ZeLwm\u008DYn&V\u00EB9\u00B0\x05\x16\x05\u009B\u00DD\x01keL\u009Fz\u0098l\u0097\u00D5z\x03\x1C\x0B\x01\u00E0*=[\u00AD\u0093\u00F9\u0093J<\u00E0\u00A7p\u00F18z`\u00A9\u008C9e!\u00BEEG\u00A0z\x10\x02\u00D0\x01\u009F\u00B2uq\u00BB\u00B6O\x02\u00C0\u0089c#o\f\x10\u00AF\u00A2\u00D2\x19\u00C8h\u0081% [\u00D4X\u00AD\u0087\u00CD\u00CAJV\u008F\x00\u00941ke\u00CC\u00C1\u0083\u0082\u0094+\u00A0IA\u00EAh\u0081p\x0E\u0092\u00B2\f\u0080p\u00E1g s\u00C3\u0099\x1AA\u00E4,\u0082J\u00BE\u00FC\x0Ec\u00D0\b\x00`\u00B5\u00FEe\u00DC\u00EEa\u00D39H\x1Bd\u00E8\u00FF%(\x07h\u00C8\u0084\u0084Hk\u00A8\u00E5\u00E0\x04\u00E8\x1E\u00C0\u00F0\u00FEpN\u00AC\u00D6gD\x1FqjY\u00E6\u00AC\u00A2\u00A0\u0082N\x19\u00F3\x11W\u00D2FI\x0B`/+\u00BA\x030ZOB\x0E\u0089\u00C4$\u00A8\x000Zo\u0080\u00F8\u00BE\u00C7\u00D5L@\u0085\u0080V\u00FAW\u00EC]\x15\u00CE\u00BB\u00E6\u0089\x17;\u009C\u00C2n\u00B9\u00C2\u00C4\u00BBR.\u00BC\x00\u00F6<\u00E6aI\x17\u009E|O\u0084\\O\u00F1\u00B3\x1B\x11\u00D48y\u00EF\u00DA\u0097\u00B1\u00C2\u00B9i\u00C3\u00F5\u00AAz\u00DC\f\u00BEs\tYH\x04lps\n&\u00DA\u00F9\u009Dw\u00CA\u0098\u0094X\u00EE\u0087<\x1B\x7F\u00DD\u0083\u00B8\x12\f\u008B7\u00CF\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w25_check_r.png","category":""};
w25_check_r;
// ==================== |-------------| ====================
// ==================== | w25_check_g | ====================
// ==================== |-------------| ====================

var w25_check_g = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x19\x00\x00\x00\x19\b\x06\x00\x00\x00\u00C4\u00E9\u0085c\x00\x00\x00\tpHYs\x00\x00\b\u00A6\x00\x00\b\u00A6\x01\u00E0\u0081\u00E0\u00E7\x00\x00\x01\u0092IDATH\u0089\u00BD\u0095\u00C1q\u00C20\x10E\x1F\u00994\u00E0\u00B3n\u00A4\x04R\u00829\u00A8\x00R\u00829\u00A8\x00RB\x1A\u00F0!.\x01\n\u00F0\x01J\u0080\x12\u00F0\u00CDg\u0097@\x0E\u0092<kY\x02\x03Cv\u0086al\u00AF\u00F5\u00B4\u00BB_\u00DF\u00B3\u00CB\u00E5\u00C2\u00AB\u00E3\u00ED\u00E5\u0084\u00FF\u0082\u00BC\u00DFJ\u00D0m\u0099\x03+ \x07\u00E6\u00EEv\u00E7~;\u00A0\u00AA\u0095i\u00AE\u00AD1K\u00CDD\u00B7\u00E5\x1C\u00D8\x02\u008B\t\u009B\u00DD\x01\u00EBZ\u0099.\u00F60\u00DA.\u00DD\u0096\x1B\u00E08\x11\x00\u00B6\u00D2\u00B3n\u00CBh\u00FE\u00A8\x12\x07\u00F8\u0099\u00B8x\x18\x1D\u00B0\u00AC\u00959%!\u00AEEG {\x10\x02\u00D0\x00\u009F\u00B2ua\u00BB\u00B6O\x02\u00C0\u008Ac#o\u00F4\x10\u00A7\u00A2\u00A93\u0090Q\x01K@\u00B6\u00A8\u00D0m\u00D9oVV\u00B2z\x04P+\u00B3\u00AE\u009598\u0090\u0097r\x06\x141H\x1E,\u00E0\u00CFAT\u0096\x1E\u00E0/\u00DC\fd\u00AE?S\x03\u0088\u009C\u0085W\u00C9\u0097\u00DBa\b\x1A\x00\x00t[\u00FE2lw\u00BF\u00E9\x14\u00A4\u00F22t\u00FF\x12\u0094\x02\x14$BB\u00A45\u00E4rp\x02t\x0F\u00A0\x7F\u00BF?'\u00BA-\u00CF\u0088>b\u00D5\u00B2LY\u00C5\u0084\n\u009AZ\u0099\u008F\u00B0\u0092*HZ\x00{Y\u00D1\x1D\u0080\u00C1z\x12r\u0088$FA\x13\x00\u0083\u00F5z\u0088\u00EB{X\u00CD\b4\x11PI\u00FF\n\u00BD+\u00C3z\u00D7<\u00F2b\u0083U\u00D8-W\x18yW\u00CC\u0085\x17\u00C0\u009E\u00C7<,\u00EA\u00C2\u00A3\u00EF\u0089\u0090\u00EB)|v#\u00BC\x1AG\u00EF]\u00FB2fX7-\u00B8^U\u0087\u009D\u00C1w*!\t\t\u0080\x05vN\u00DED\x1B\u00B7\u00F3\u00A6V&&\u0096\u00FB!\u00CF\u00C6\x1F\x06d\u00B7nH\u00F3\u00FB+\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w25_check_g.png","category":""};
w25_check_g;
// ==================== |---------------| ====================
// ==================== | w18_discord_l | ====================
// ==================== |---------------| ====================

var w18_discord_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00E8IDAT8\u008D\u00CD\u0094\u00E1\r\u00820\x10\u0085\u009F\u0086\u00FF2\u00C0\u00FB\u00E1\b\u008C\u00C2\b\u00B8\x01n\u00E2\x06\u00EA\x06\u00BA\x01\x1B\u00C8\b\u009A\u00BE\x01p\x02L\u00C9A*\u00A9\x06\u00D4\x1F^\u00D2\x14\u008E\u00BE/w\u00AF-\u008B\u00B6m\u00F1\u008BHB\u0086\u00A4\x1C@6\u0081[\u0093<\u0085\u0089\u00A1\"I\x05\u0080\u00FD\u008C\u00E26$\x0F1\u00D0\u00EC\x1EI.\u00FA\u00E7\u00E5\\\u00F1\u00ABH\u00DE|\u00BB\x01\u00A8\x00\\\x01\u00A4\x00r\u009BW\u00B1\u00C5\u00AF@[\u0092\u00BBQ\u00AE\u0094\u00E47\u00E2\x12\x13\u00C4Z\u00BB\u00F7\x10I\u00EB~\u0096\u0094\u0092\u00AC\x01\u009C\u00A7\u0082*\x13\u0097~\u009B\u0083\\_a\x1D\u00D1DA\u00B5U\u00E2\u00C5\u0085\u00E5\u00BC?\x07k\u00AD\u008A\u0081b\x1E\u00E5\u00B6\u00B8;\u009C&\u00F6\u00A3\u00B1\u00AA\u00C6\u00DEu\u00F1\x7F\u00E7(\x04\x1D\u00BF\x01\r\x1E\u0091,$5\x13.\u00AD\u00BF_\u00DE\u00A7\u00E7\u0083\u00E9=\u009A;\u009Cs\u0099s\u00AE\tu\x1F\u0081\f\u00B6\x0E\u00DF\x7F\u00F3c\x03\u00F0\x00\u00F8\u00FE\u00BE}\u00EC\u00FC1\u00F7\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_discord_l.png","category":"18w"};
w18_discord_l;
// ==================== |---------------| ====================
// ==================== | w18_discord_r | ====================
// ==================== |---------------| ====================

var w18_discord_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00EFIDAT8\u008D\u00CD\u0094\u00D1\r\u00820\x10\u0086\x7F\f\u00EF\u0092\u00F4\u0085{c\x04Fa\x04\u00DC@7q\x03q\x03\u00DD\u0080\r\u00EC\b\u00FAt/4\u00C1\t0%\x07\u00A9\u00A4\x18\u00AA<xIS8\u00FA\x7F\u00B9\u00FB\u00DB\x12u]\u00875\"v\x19\u0086\u00A8\x00\u0090/\u00E0j\u00C5|q\x13cE\u0086\u00A8\x04p\n(n\u00A7\u0098+\x1F(\u00B8G\u00C5\x1C\r\u00CF\u009BP\u00F1\\\u00C4\x1F\u00BE=\x00\u00D4\x00\u00EE\x00\x12\x00\u0085\u00CC[\u00DF\u00E29\u00D0A1\x1F'\u00B9\u00BD!\u00B2\x1Bq\u00F3\t|\u00AD=\x07\u0088!\u00CA\u0086\u00D9\x10%\u008AY\x03\u00B8.\x05\u00D5\"\u00DE\u00DBmvrC\u0085\u00DA\u00A3\u00F1\u0082\u00B4Tb\u00C5\u00A5\u00E4\u00AC?\u0095\u00B4V\u00FB@>\u008F\nY\u00DC\x1FN\x11\u00DB\u00D1JUS\u00EF\u00FA\u00F8\u00BFs\u00E4\u0082\u00CE\u00BF\u0080F\u008F\x14si\u0088\u00DA\x05\u0097\u00D6\u00DE/\u00EB\u00D3\u00FB\u00C1\u00B4\x1E\u0085\u008E&M\u00F3&M[W\u00F7\x15H`\u0099\u00FB\u00BE\u00CE\u008F\r\u00C0\x0B\u00AA6\u00B2\x15\u008F\u0093s\u00A1\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_discord_r.png","category":"18w"};
w18_discord_r;
// ==================== |-------------| ====================
// ==================== | w18_forum_l | ====================
// ==================== |-------------| ====================

var w18_forum_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00F7IDAT8\u008D\u00DD\u0093\u00C1\r\u0082@\x10E\u00BF\u00C6\u00BBz\u009FD:\u0090\x12(\u0081\x0E\u00A4\x04\u00EC\u0080\x0E\u00A4\x04\u00EC\x00;\u00A0\x04\u00EC\x00\u0093)\x00*\u00C0\u00AC\u00F9k\x16\x02,\x07O\u00CEe\u00C3\u00EE\u00F2\u00E6\u00CF\u009F\u009DM\u00DF\u00F7\u00F8E\u00EC\u00A6\x18\u00AA\x1A\x028\u00F0\u00B3\x16\u0091\u00D6\u0097k\u00A0HU3\x00)\u0080\u00FD\u00E8\u00DE\x03@&\"\u00F5\"HUM\u00F6\n\u00C0y!i\x07 \u009A\u0083m\u00B9\u00A6\x1E\b\u00A8\u00B2\u009C;\u00B4\x1EE\x1E\u0088\u008D\u0093\u00AA&\u00F4\u00AFp\u00BD\u00B3\u008A\u00BCf:\x11\x00\u00B8\u0099&\u00B0)\x03P\u00B1\x12\u00D2\u00B9\u00EAL\u00A9\u00F4\u00F7\x0B\u00AAV\u0082r\u00FA\u00E9\u00C2b\x17\u0094s}\u00CE\x00\u00CC\u00FE\u0095?\u008D\u009F\u00C6G\u0091m\u00BF\u00A9\u00B5\x15\u0091\u0086RC\u00E7RH_.3I\u008E\u00C6\u00F4\u00C9\x11!\u00AC\u0099\u00C8>\u008E\u00BB\u0088$ni\u0083`[\u00CD\u0093xy@\u00B15\u00DB;\u00B4\u00AA\x1A\x13j\u00CB\u00AD\u00F80\x03\u00EEW\"R\u00FEl\u00FA'K\u00FB\x03\x10\u00807\u00A9hW\u00E3q\u00A9fS\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_forum_l.png","category":"18w"};
w18_forum_l;
// ==================== |-------------| ====================
// ==================== | w18_forum_r | ====================
// ==================== |-------------| ====================

var w18_forum_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00FCIDAT8\u008D\u00DD\u0093\u00C1\x11\u00820\x10E\u00BF\u008Ewur\u00DA\u0093t %P\x02\x1DH\t\u00D8\x01\x1DH\t\u00D8\x01v@\t\u00D8\u0081\u009E\u00F6\u0094\x19\u00A8\x00'\u00CE\u00C6\t\f\x10\x0E\u009C\u00DCK\u0086$\u00BC\u00FD\u00FB7\u00BB\u00E9\u00BA\x0Ek\u00C4n\u008C\u00A1\u0089B\x00\x07\u00F9\u00AC\x15s\u00E3\u00CB\u00D5S\u00A4\u00892\x00)\u0080\u00FD\u00E0\u00DE\x03@\u00A6\u0098\u00EBY\u0090&2\u00D9+\x00\u00E7\u0099\u00A4-\u0080h\n\u00B6\u00955\u00F5@ *\u00CB\u00A9C\u00EBQ\u00E4\u0081\u00D88i\u00A2D\u00FC+\\\u00EF\u00AC\"\u00AF\u0099N\x04\x00n\u00A6\t\u00D2\u0094\x1E\u00A8X\bi]u\u00A6T\u00F1\u00F7\x07\u00AA\x16\u0082r\u00F1\u00D3\u0085\u00C5.(\u0097\u00F59\x010\u00FBW\u00F9i\u00F84\u00BE\u008Al\u00FBM\u00AD\u008Db~\u0089\u00D4\u00D0\u00B9\x14\u008A/\u0097\u0089$Gc\u00FA\u00E8\u0088\b\u00EC5\u0092}\x18w\u00C5\u009C\u00B8\u00A5\u00F5B\u00DAj\u009E\u00C4\u00DB\x03\u008A\u00AD\u00D9\u00DE\u00A1\u00D5D\u00B1@m\u00B9\u0095<\u00CC@\u00F6+\u00C5\\\u00AE6\u00FD\u00A3\u00A5\u00FD\x01\b\u00C0\x07\x0F\x0FT\u00C9\u009AR\u0088\u00C0\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_forum_r.png","category":"18w"};
w18_forum_r;
// ==================== |-----------------| ====================
// ==================== | w18_bugreport_l | ====================
// ==================== |-----------------| ====================

var w18_bugreport_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x01\x0BIDAT8\u008D\u00AD\u0094\u00DBM\u00C3@\x10E\x0F\x11\u00FF\u00B8\u0080\u0091\u0092\x0E\x12*\x00:\u00A0\u0083\u0098\x0E\u00A0\x02D\x07\u00D0\u0081\u00E9\x00* %$\x15`\u00A4[@\u00A8\u00C0h\u00D0.8\u008BG1\u0092\u00EF\u00D7\u00AE\u00BD>s\u00E7\u00B1>\u00E9\u00BA\u008E)4\u009B\u0084\x02\u009C\u00E6\u0085\u00A4\x15\u00B0\x01\u00CEF~\u00FBlfu\u00DE\u00CCF@v\u00C0\u00E7\u00C0\u00F3\u00B5\u00A4\u00E6\x00\x04\\\x07\u0090;3\u00F3 \x0B\u00E0c\bV\u0082J=%\x17\u00B5$w\u00FA\x02T\u009EN\x00\u00FC\u00ADQ\u00A1K ;\u00E9k\u00D1w\u00D1W\u00E4hif\u00AD\u0099mR\u00DA\u00FB\u00B4\u00AE\u0083\u00F3\u0083 \u00B7~\u00D5\u00DB\u00AFRZ\u00AE[\u00E0a,h\x0E\u00BC\u00A5N\u0096z\x04\u00EE\u00FF\u0093\u00DA\u009FvK\u00F2\u00FAl\u0083\u00F3!\u00C8#7\u0092\u00F6)5\u009F\u0097w\u00A0\u008D\u00BA\u00F6}\u00D7$Ui \u0097Q\u00C4@7f\u00D6\u00FC\u0080\u0092\u00F5*E\u00CE\u0085\u00BD(R-\u00D3j2\u00E4\x00TJR~\u00E1W\u00A46\u00B3\u00B0>\u00AEc\u00B7\u00FF\u00D5\u0087\u00F3\x18\u00C4\x15M\u00B6\u00EB|\f k\u009A\x1F\x1B\u00F0\x05\u00FA\x1AV\u00FC\x00\u00FE\u0089\u00BA\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_bugreport_l.png","category":"18w"};
w18_bugreport_l;
// ==================== |-----------------| ====================
// ==================== | w18_bugreport_r | ====================
// ==================== |-----------------| ====================

var w18_bugreport_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x01\x11IDAT8\u008D\u00AD\u0094\u00CDM\u00C3@\x10F\x1FQ\u00EEX\u00DA\u00D3\u009CH\x07\t\x15\x00\x1D\u00A4\x03L\x07P\x01\u00A2\x03\u00E8\u00C0t\x00\x15\u0090\x12H\x05INsZ)\u00A9\u00C0h\u00D0.8\u008BG1\u0092\u00BF\u00D3\u00AE\u00BD~\u00F3\u00CD\u00CF\u00FA\u00ACm[\u00C6\u00D0d\x14\n0\u00CD\u008B(\u00B2\x00V\u00C0\u00F9\u00C0o_\u0083j\u009D7\u0093\x01\u00905p\u00E8y~\x1BE\u009A#\x10\u00B0t \x0FA\u00D5\u0082\u00CC\u0080]\x1F\u00AC\x04\u0095zI.\u00EA(bN\u00DF\u0080\u00CA\u00D2q\u0080\u00BF5*t\rd']\u00CD\u00BA.\u00BA\u00F2\x1C\u00CD\u0083\u00EA6\u00A8\u00AER\u00DA\u00FB\u00B4\u00AE\u009D\u00F3\u00BD \u00B3~\u00D3\u00D9/RZ\u00A6{\u00E0i(\u00E8\x02\u00F8H\u009D,\u00F5\f<\u00FE'\u00B5?\u00ED\u008E\"V\u009FO\u00E7\u00BC\x0B\u00B2\u00C8M\x14\u00D9\u00A7\u00D4l^6\u00C0\u00D6\u00EB\u00DA\u00F7]\u008B\"U\x1A\u00C8\u00B9\x17\u00D1\u00D1]Pm~@\u00C9z\u0095\"\u00E7\u00C2^\x15\u00A9\u0096i5\x19r\x04*\x15E\u00F2\x0B\u00BB\"uPu\u00EBc:u\u00FB\u00DFm8OAL\u00DEd\u009B.\u0087\x00\u00B2\u00C6\u00F9\u00B1\x01_@rV\u00FC\"\u00A2\u00FE\u00D5\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_bugreport_r.png","category":"18w"};
w18_bugreport_r;
// ==================== |----------------------| ====================
// ==================== | w18_featurerequest_r | ====================
// ==================== |----------------------| ====================

var w18_featurerequest_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00CCIDAT8\u008D\u00AD\u0094\u00B1\r\u00C20\x10\x00\u008F\u0088\u009EH\u00AE\u00BE\u0082\r\u0080\t`\x046 l\u00C0(\x19!l\x00\x1B0\x02\u008C@\u00E5\u00CA\x05\x13\x04\x19\u00C5\b\u008C\u009D\x18\u00E1\u00AB\u009C\u00BC|\u00F9\u00F7\u00BF3j\u00DB\u0096\x1C\x14Y,\u00C0\u00D8-\u008C\u00C8\x028\x03\u0093\u00C4\u00BD\x07\u00A5u\u00E5\x1E\u008A\x04\u00C9\x15\u00B8\x05\u00DEo\u008DH\u00F3!\x026\x11\u00C9Mim?R\x05bO\u0099/\u008A1\x1D\u00AE0M\u0094L\u00FE\u00AE\u00C50\"50\u00FB[\x04\u00ACSD)\u00A5\u00D9\u008E\u00EEsdt\u00FC%\u00A3\u00BA\x1B\u00BC\x10\u00F3\u009Ei\u00DF\u00B9\u00C5\u00EB\u00D2\x1A\u0091\x12\u00B0\u0093Zv\u00B1\u00D5\u00DB\u0086;p\u00F1$\u008D\u00D2\u00BA\u00F9\x12\u00F9\x18\x11\x17\u00B0\u0099VJk_\x14,-\u00C6\u00C9vmHb\u00E9;\u00ECe\u008A\u00C0\u0091\u00E7\u00C7\x06<\x00\u00C2<4\x7F\u0096r\u00F7\u00B4\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_featurerequest_r.png","category":"18w"};
w18_featurerequest_r;
// ==================== |----------------------| ====================
// ==================== | w18_featurerequest_l | ====================
// ==================== |----------------------| ====================

var w18_featurerequest_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00C7IDAT8\u008D\u00AD\u0094Q\r\u00C20\x10@\x1F\u0084\x7F&\u00E0\x12p\x00(\x00\t8`8@\u00CA$\f\x07\u00E0\x00\t a\u00C9\x19@\u00C1H\u00C9J\u00A0\u00B4\u00DB\x11\u00FA\u00BE\u00BA]\u00FAv\u00D7\u00BBn\u00D4\u00B6-9\x18g\u00B1\x00\x13\u00BFP\u00D5%p\x01\u00A6\u00C6\u00BDG\x11)\u00FD\u00C3\u00D8 \u00B9\x01M\u00E4\u00FDNU\u00EB\x0F\x11\u00B0MH\x1A\x11q\x1F)#\u00B1\u00A7,\x14\u00A5\u0098\rWh\x13\u0099\u00C9\u00DF\u00B5\x14\u00AAZ\x01\u00F3\u00BFE\u00C0\u00C6\"\u00B2\u0094\u00E6:z\u00C8\u0091\u00D1\u00E9\u0097\u008C\u00AAn\u00F0b,z\u00A6}\u00EF\x17\u00AFK\u00AB\u00AA\x05\u00E0&\u00B5\u00E8b\u00EB\u00B7\rw\u00E0\x1AHj\x11\u00A9\u00BFD!\u00AA\u00EA\x03.\u00D3RDBQ\u00B4\u00B4\x14g\u00D7\u00B5!\u0089\u00A3\u00EF\u00B0W\x16\u0081'\u00CF\u008F\rx\x00\u00C6C4\x7F\u00C8@\u00D2\u00A5\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_featurerequest_l.png","category":"18w"};
w18_featurerequest_l;
// ==================== |----------------| ====================
// ==================== | w18_settings_l | ====================
// ==================== |----------------| ====================

var w18_settings_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00D5IDAT8\u008D\u00AD\u0094\u00CB\r\u00C20\f\u0086?\x10\x0B\u00F4\u00EE\x13\u00B3\u0094\x11X\x01F(#\u00C0,\u008C\x00#\u00D0\x11\u00E0\u00E2\u00FF\f#\u0084K\u0080\u00B4\u00BC\f\u00AA%K\u0096\u00ED|\u00B1\u009D\u00C7(\u00A5\u00C4\x102\x1E\u0084\x02L\u00A2\u0089\u0092*`\x01T@kf\u00DB2>\u008A\u00B4&\u00A9\x06v=\u00F7\u00CC\u00CC\u00F6aP\u00AE\u00E4\\\u00B8\u00F6\u00C0\u00D2\u00CCNe^\u00A4\u00B5ya_\u00CCl\u00F6*)2\u00EC\u00EAE\u0085H\u00AA%\x1D~\x01\u00F5\u00A1GI;z3\u00FB\b\u0092\u00D4\x00\r\u00D0\u00F6`u\u00B6W_A\x19\u00B2\u00CE\x0B\u00AB\f\u00BB\u00E4pK\u00E4\u00D4\nH)+3\u00DB\u00BC\u00DB\u00F8\u00A9\u00A2\x7F O\u00A0\x7F!\x1D\u0090\u00A4E\u0086\u009Cx\f7\x04\u0081\u00EE\u0085\u00BC\rr\u00FA+\x04\u0080\u0094\u00D2]\u00DD\u00BDq\u00F7\u00E4\u00EEM\u00E9\u008Fh\u00E8\u00D1Fd\u00B0\u00FF\u00E8\n\u00AEu\u008A\u00D2f\x11\x19\u00BA\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_settings_l.png","category":""};
w18_settings_l;
// ==================== |----------------| ====================
// ==================== | w18_settings_r | ====================
// ==================== |----------------| ====================

var w18_settings_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00DBIDAT8\u008D\u00AD\u0094\u00CB\r\u00C20\f@\x1F\u0088\x05\u00AA\\\u00E2+\u00B3\u0094\x11X\x01FhG\u0080Y\x18\u00A1\x1D\u0081\u008E\x00W_\x1A\x18!\\\x02\u0084\u00F23\u00A8\u0096,Y\u00B6\u00F3b;\u009FI\u008C\u00911d:\n\x05\u0098Y\x13\u0083H\x01\u00AC\u0080\x02\u00E8\u009C\u00EA.\u008FO,\u00AD\x05\u0091\x12h\x06\u00EE\u0085Sm\u00CD\u00A0T\u00C9)s\u00B5\u00C0\u00DA\u00A9\x1E\u00F3<Kk\u00CB\u00CC>;\u00D5\u00C5\u00AB$\u00CB\u00B0\u008B\x17\x15\x12D\u00CA \u00B2\u00FF\x054\u0084\x1E\u0082H\u00C3`f\x1FAA\u00A4\x02*\u00A0\x1B\u00C0\u00CAd\u00D7_A\t\u00B2I\x0B\u008B\x04;\u00A7p\u0087\u00E5\u00D42H.\u00B5S\u00DD\u00BE\u00DB\u00F8\u00A9\u00A2\x7F O\u00A0\x7F!\x0F\u00A0 \u00B2J\u0090#\u00F7\u00E1\u009A \u00F0x!\u00AF\u0083\u009C\u00FF\n\x01 \u00C6x\u00D3\u00DE\u00FB\u00AA\u00F7>\u00F6\u00DEW\u00B9\u00DF\u00A2\u00A6Gk\u0091\u00D1\u00FE\u00A3\x0B8\u00AD\u0081\u0084D\u00C7r\x19\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_settings_r.png","category":""};
w18_settings_r;
// ==================== |------------| ====================
// ==================== | w18_help_r | ====================
// ==================== |------------| ====================

var w18_help_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00C0IDAT8\u008D\u00CD\u0093\u00B1\r\u00C20\x10E_\x10\x1B\u00B8\u00BA6\u008C\u00E0\x15`\u00840\x02\u00AC\u00C0\n\u008C@F\u0080\x15\x18\u0081\u00AC\u0090\u00F6*+#\u0084&H\u0096\u00B1\x1D\x0B\u00B9\u00E07\u0096\u00EF\u00FE}}\u00FD\u00D35\u00F3<S\x03\u009B**5\u0085\u00B6\u00B9\u00A6\x13\u00B1@\x07\u00B4\u00C0\b\u00F4Fu\u008Cq\u009BTFN\u00E4\x04\u00DC\"\u00AD\u00B3Q\u00ED\u008B\u0084\x16'\u00AF\u008C\u00D9]\u00E8,\u0095\u00D1\b<<\x07\u008D\u00F7\x07\u00D8\u0087\x03\u00D1\u008C\u008C\u00EA\x04\x1C\u009D\u00885\u00AA\u00C3\u00E2\u00D0z\u0094)\u009CIf\u00F4\u0081\x13\u00E9\u0080\u00BBWz\x1A\u00D5C\u00C8+Y\u00BF\x1F\u00F8%&\x02+\u00EB\u00F70\x01\u0083Q\u00BD\u00A6\b%\u008E\u00BE\u00F2\u00F8\u00D5Q\u00BB\u00BC6G\u00AAv\"\u00AB[+\u00C5\u00FF]\x7F5\u00A17\u0086\u00DC;\x15\u00C1\u00BD@y\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_help_r.png","category":""};
w18_help_r;
// ==================== |------------| ====================
// ==================== | w18_help_l | ====================
// ==================== |------------| ====================

var w18_help_l = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x12\x00\x00\x00\x12\b\x06\x00\x00\x00V\u00CE\u008EW\x00\x00\x00\tpHYs\x00\x00\x06:\x00\x00\x06:\x01\rp\u00A5\u009E\x00\x00\x00\u00BBIDAT8\u008D\u00CD\u0093\u00C1\r\u00C20\x10\x04'\u00882\u00F6\x15Jp\x0BPB(\x01Z\u00A0\x05J %@\x0B\u0094@Z\u00C8\u00EB\u00FE)!|\u0082d\x19\u00DB\u00B1\u0090\x1F\u00EC\u00C7\u00F2\u00DD\u00DEj\u00B5\u00A7k\u00E6y\u00A6\x066UTj\nmsM3s@\x07\u00B4\u00C0\b\u00F4\u0092\u00C6\x18\u00B7Iedf'\u00E0\x16i\u009D%\u00F5EB\u008B\u0093W\u00C6\u00EC.t\u0096\u00CAh\x04\x1E\u009E\u0083\u00C6\u00FB\x03\u00EC\u00C3\u0081hF\u0092&\u00E0hfN\u00D2\u00B08t\x1Ee\ng\u0092\x19}`f\x1Dp\u00F7JOI\u0087\u0090W\u00B2~?\u00F0KL\x04V\u00D6\u00EFa\x02\x06I\u00D7\x14\u00A1\u00C4\u00D1W\x1E\u00BF:j\u0097\u00D7\u00E5H\u00D5Nduk\u00A5\u00F8\u00BF\u00EB\u00AF&\u00F4\x06\x14,6n\u00EF\u00D6\u00A0<\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w18_help_l.png","category":""};
w18_help_l;
// ==================== |--------------| ====================
// ==================== | w14_folder_r | ====================
// ==================== |--------------| ====================

var w14_folder_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u0099IDAT(\u0091\u00BD\u00D2\u00B1\r\u00C20\x14\u0084\u00E1\u00DF\u0088\x05\u00C0\u0095\u00EB\u008C\u00C0\n\u00B0\nY\u0081\x11\u00C8\bx\x05f\u00C9\ni\u00AF\u008A<\u00C2\u00A3\u0089E\u00E4@\x14\\p\u009D\u009F\u00F4=\u009D-;3\u00A3&\u00BB*\x05\u00EC\x01\u00C6\x10\x1E\u00C0u6O@\u00E3\u00A5\u00F4\r:3c\f\u00E1S\u00DF~Z\u0090\x13\u00BD\u00F4\u00DC\x02\u00CB$/\x1D\u00F3\u00E1\u0097;\x1E\u00D6\u00AA& \x16\x15\x17\u00F1RW\u00C2\x16\u00B8\u0097\u00DB\u00CB\u00CA@3\u00AF\u00DAm@\x00\x17/\u00A5\fo\u00C0y\x03j\u00BD\u00D4\u00C3\u00FBq\x06\u00E0\u00B4\x02\u0086\t\u00C5<p\x7F\u00FFr\u00D5\u00F0\x05\u00EB\u00AA<2\u00D5?\u00F2\x1C\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_folder_r.png","category":"14w"};
w14_folder_r;
// ==================== |--------------| ====================
// ==================== | w14_folder_m | ====================
// ==================== |--------------| ====================

var w14_folder_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\x04sBIT\b\b\b\b|\bd\u0088\x00\x00\x00\tpHYs\x00\x00\x06v\x00\x00\x06v\x01)&o\u0080\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\u009B\u00EE<\x1A\x00\x00\x00\x0EtEXtTitle\x00folder_rf\u008Fi\u00F7\x00\x00\x00\u00E7IDAT(\u0091\u00BD\u008F1N\u00C3@\x10E\u00DF\u00EC&r\u0093\u008E\x03\u00A4\u00E2\x04H4\u00B9\t7 =\u0091\x0B\u008C\x17\u00AF\u008F\u0080h\u00D3\"\x1A\x10\r}8C\u00A4\u009C!\u008A\x02\b:\u00AFw\u00A8\f\x16\"K\n\u00C4\u00AFF#\u00BD?o\u00E0\u00BF#\u00DD\u00E0\u009C\x1BeY6\x04\x10\u0091\u0098\u00E7\u00F9k\n4\x00u]\u009F[k\u00DFB\b\u00DB\x10\u00C2\u00B6i\u009A\u00E7\u00AA\u00AA\u00A6)p\x00\u00A0\u00AAG\u00DFMD\u00E4\u00CA{?\x11\u0091\u00F7n\u00D9\u00B6\u00ED}Y\u0096\u008F\u009F`\u00E2\u008D\x13U\u00FD\u00D23\u00E6\x18\u00F8\x11\\\u008A\u00C8\u008D\u00AA6;\u00CA6\u00FDV\u00BC\u00F7w\u00C0!\u0090\x03\x17\"r\u00900!\u00C6\u00B8\u00EC_\u009C\x01\u00D7\u00C0\u00B8\u00AF\u00B7#\x0F\x06@DnUu\x02\u008C\x7F#\u0080u\u008C\u00F1r\x00\x10Bx\u00B2\u00D6\u00CE\u00F7\u0080P\u00D53\u00E7\u00DCK\u00A7\u00BA\x01NUu\u0098\u0082\u008C1\u00AB\u00A2(\x16\u00FB\x1C\u00F8\u00FB|\x00\u00EA.R\u00EE\u0086\u00EA\u008A\u00CA\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_folder_m.png","category":"14w"};
w14_folder_m;
// ==================== |-----------| ====================
// ==================== | w14_pin_r | ====================
// ==================== |-----------| ====================

var w14_pin_r = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\tpHYs\x00\x00\x04\u00D8\x00\x00\x04\u00D8\x01\u00AE\u00AFK>\x00\x00\x00\u00BBIDAT(\u0091\u009D\u0092\u00CD\r\u00C20\fF_\x11\x1B\u00E4\x12\u00DF\u00BA\x01l@7\u00A1l\u00C2\b\u00DD\u0080\u00B2IG(\x13\u00C0-\u0097D*\x13\u0098K\u008AB\u009B\u008A\u00C2'\u00F9\u00E0\u009Fg\u00C7V\nU\u00E5\x1Fm\u00D6\x14\x05\u0091\u00F2g0\u0088t\u00C0=\u0088\u00D4\u00AB\u00C1 \u00D2\x00\u0087\u00E8^Rx\u009B)\u00AE\u0080\x06\u00D8ez\u00D5@\u009B\u009Dh\u009C\u00EB\u0080>\x03\u00DD\"\b@\u00B1t\u00D5 \u00D2\x02\u00C7\u00E8>\u0081\u00D287\u008C\u00F9\u00EC\u008E\x11\u00DA\x03\u00D7\x18\u00EAS\b\u00F2;\u008E\u0093N\u00C6\u00B96\u0088\x00<f\u00DDU\u00F5m\u00DE\u00DA\u00B3\u00B7V\u00BD\u00B5\u00F5$^\u00A6\u00BE\u00AA\u00F2\u0091\u00F4\u00D6\x0ESh\u00C9\u00D2\u00A7\u00D6@e\u009C\u00CB]t\u00A6\u00C5\u00AB~\u00D3\u00AA\u00BF\u009A\u00D3\x0B\u00977z\u00D00K!u\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_pin_r.png","category":"14w"};
w14_pin_r;
// ==================== |-----------| ====================
// ==================== | w14_pin_m | ====================
// ==================== |-----------| ====================

var w14_pin_m = {"binAsString":"\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0E\x00\x00\x00\x0E\b\x06\x00\x00\x00\x1FH-\u00D1\x00\x00\x00\x04sBIT\b\b\b\b|\bd\u0088\x00\x00\x00\tpHYs\x00\x00\x06v\x00\x00\x06v\x01)&o\u0080\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\u009B\u00EE<\x1A\x00\x00\x00\x0BtEXtTitle\x00pin_r\u0082\u00A1Q\u00B7\x00\x00\x00\u00EFIDAT(\u0091\u00C5\u0091\u00A1N\x03Q\x10E\u00EF}\x0F\u0083\"\u00FD\x01T\u00EBq\b$\u00D4T\u0092\x10\x04AT\u00A3@\u00BFMf3\u00D9d\u0083XS\u00C5\x07\u00B4\u00FF\u00C0\x0F\x10\x04\u00C1\u00E0\u0090\u00FC@\u00CD\u00BAew0K\u00F2\u00D8\u00BE\u00B4\u008At\u00E4\u00BDs2wf\u0080\u00FF*\x11qeY\x1E\ru\u00B7\x0B\u00F4\u00DE?6M\u00F3Y\x14\u00C5I\u00ACs\x1B\u00A4\u00AA\x17\x00\u009E\u00FB\x01k\u0092\u00B3\x10\u00C2+\x00\x1C$\u00A2\x1D{\u00EF\x0B\x00\u00A7\x00&\u009152\u00B3{\x00\u00D7\u00C9\u00A8\"\u00F2E\u00F2\x03\u00C0x`\u00AD\u00DA\u00B6\u009D\u00EF\u008C\u00AA\u00AAw\x00\x16}\u00CFK\u0096eg\u00B1\u009F<\u008E\u00AA^\x02\u0098\u0090\u00BC\x05\u00F0M\u00F2}\u00D8\u00B3\x01\u00F6\u00D0\x13\u00C9U\baif7f\u00B6\x01\u00FE\u0089\u009A\u00E7\u00F9\u00D49\u00B7\u00EC\u00AF\u00F7\u00F6\u00AB\u009B\x19IZrbUU\u0087\u00CE\u00B9\x073;\u008F!\x00\x18B@\u00F4\u008E\u00BA\u00AE\u00C7]\u00D7]\u0089H\u009D\u00DA{\u00FF\u00F5\x03\u009F\u00D4M\n\u0089\u009Cv\x7F\x00\x00\x00\x00IEND\u00AEB`\u0082","fileName":"w14_pin_m.png","category":"14w"};
w14_pin_m;
// ==================== |--------------------| ====================
// ==================== | DuScriptUIDefaults | ====================
// ==================== |--------------------| ====================

/**
 * ScriptUI tools
 * @namespace
 * @memberof DuAEF
 */
DuAEF.DuScriptUI = {};

/**
 * The default alignment of children of containers with "column" orientation
 * @memberof DuAEF.DuScriptUI
 * @type {String[]}
 * @default ["fill","top"]
 */
DuAEF.DuScriptUI.defaultColumnAlignment = [ "fill", "top" ];

/**
 * The default alignment of children of containers with "row" orientation
 * @memberof DuAEF.DuScriptUI
 * @type {String[]}
 * @default ["left","center"]
 */
DuAEF.DuScriptUI.defaultRowAlignment = [ "left", "center" ];

/**
 * The default alignment of children of containers with "stack" orientation
 * @memberof DuAEF.DuScriptUI
 * @type {String[]}
 * @default ["fill","top"]
 */
DuAEF.DuScriptUI.defaultStackAlignment = [ "fill", "fill" ];

/**
 * The default spacing of containers
 * @memberof DuAEF.DuScriptUI
 * @type {int}
 * @default 2
 */
DuAEF.DuScriptUI.defaultSpacing = 2;

/**
 * The default margins of containers
 * @memberof DuAEF.DuScriptUI
 * @type {int}
 * @default 2
 */
DuAEF.DuScriptUI.defaultMargins = 2;

/**
 * Stores all strings used by the UI.<br />
 * This can be very useful to work with a translation framework.
 */
DuAEF.DuScriptUI.uiStrings = [];
// ==================== |-----------------------| ====================
// ==================== | DuScriptUILowLevelLib | ====================
// ==================== |-----------------------| ====================


DuAEF.DuScriptUI.highlightedControls = [];

DuAEF.DuScriptUI.allTabs = [];

DuAEF.DuScriptUI.uiShown = false;


DuAEF.DuScriptUI.dimControls = function( e )
{
    if ( DuAEF.DuScriptUI.highlightedControls.length == 0 ) return;
    for ( var i = DuAEF.DuScriptUI.highlightedControls.length - 1; i >= 0; i-- )
    {
        try
        {
            DuAEF.DuScriptUI.highlightedControls[ i ].dim();
        }
        catch ( e )
        {};
        DuAEF.DuScriptUI.highlightedControls.pop();
    }
}

// ==================== |--------------------| ====================
// ==================== | DuScriptUIStyleLib | ====================
// ==================== |--------------------| ====================


/**
 * Resets the layout of the whole ui containing a scriptUI item.
 * @memberof DuAEF.DuScriptUI
 * @param {ScriptUI} item - The ScriptUI element which needs to be resized
 */
DuAEF.DuScriptUI.layout = function( item )
{
    item.layout.layout( true );
    item.layout.resize();
}

/**
 * Adjust the color according to the brightness setting of After Effects
 * @memberof DuAEF.DuScriptUI
 * @param {float[]} color - The color [R,V,B,A] Array
 * @return {float[]} - The new color [R,V,B,A] Array
 */
DuAEF.DuScriptUI.adjustColor = function( color )
{
    if ( !DuAEF.DuJS.Color.validateColor(color, true) ) return color;
    if (color.length == 3) color.push(1);
    var q = app.themeColor( 78 )[ 0 ];
    q = q - 0.15000000596046;
    var newColor = color + [ q, q, q, 0 ];
    newColor = DuAEF.DuJS.Math.clamp( newColor );
    return newColor;
}

/**
 * Changes the color of the text of a ScriptUI Object
 * @memberof DuAEF.DuScriptUI
 * @param {ScriptUI}		text	- The ScriptUI Object
 * @param {float[]}				color	- The new color [R,V,B,A] Array
 * @param {bool}				[adjusted=true]	- lightens the color if the brightness setting of Ae is not set on the darkest one
 * @param {bool}				[fauxBold=false]
 */
DuAEF.DuScriptUI.setTextColor = function( text, color, adjusted )
{
    adjusted = def( adjusted, true);
    if ( !text ) throw "You must provide a ScriptUI Control to change the color of the text";
    if ( color.length == 3 ) color.push( 1 );
    if ( adjusted ) color = DuAEF.DuScriptUI.adjustColor( color );
    color = DuAEF.DuJS.Math.clamp( color );
    var g = text.graphics;
    var textPen = g.newPen( g.PenType.SOLID_COLOR, color, 1 );
    g.foregroundColor = textPen;
}

/**
 * Changes the color of the background of a ScriptUI Object
 * @memberof DuAEF.DuScriptUI
 * @param {ScriptUI} uiItem - The ScriptUI Object
 * @param {Array} color - The new color [R,V,B,A] Array
 * @param {bool} [adjusted=true] - lightens the color if the brightness setting of Ae is not set on the darkest one
 */
DuAEF.DuScriptUI.setBackgroundColor = function( uiItem, color, adjusted )
{
    adjusted = def( adjusted, true );
    if ( typeof uiItem === 'undefined' ) throw "You must provide a ScriptUI Control to change the color of the background";
    var c = color;
    if ( adjusted ) c = DuAEF.DuScriptUI.adjustColor( color );
    if ( !DuAEF.DuJS.Color.validateColor(c, true) ) return;
    if (c.length == 3) c.push(1);
    var g = uiItem.graphics;
    var brush = g.newBrush( g.BrushType.SOLID_COLOR, c );
    g.backgroundColor = brush;
}// ==================== |--------------------| ====================
// ==================== | DuScriptUIPanelLib | ====================
// ==================== |--------------------| ====================


/**
 * @class
 * @name DuPanel
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Panel or Window.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.createUI} to create a Panel.<br />
 * The DuPanel inherits the Panel or Window object from ScriptUI and has all of its properties and methods.
 * @property {Group} contents - The ScriptUI group where the new controls must be added. Do not add any control directly inside the DuPanel.
 * @property {DuPanel~refreshUI} refreshUI - A function to reload a script in this panel
 */

/**
 * A function to reload a script in this panel.
 * @callback DuPanel~refreshUI
 * @param {File} file - The script to reload. 
 * @return {boolean} true on success, false otherwise.
 * @memberof DuPanel
 */

/**
 * Creates the main panel of a script
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|null}		container	- The container ('this' in the root of the calling script), either a Panel (when launched from the 'Window' menu) or null (when launched from 'file/scripts/run...')
 * @param {string}	scriptName	- A name for this UI
 * @param {string[]}	[contentAlignment=DuAEF.DuScriptUI.defaultColumnAlignment]	- The alignment of the contents in the panel
 * @param {string}	[borderless=false]	- When true, creates a borderless window if container is not a panel
 * @return {DuPanel}	The panel created, either a ScriptUI Panel or a ScriptUI Window.
 * @example
 * var ui = DuAEF.DuScriptUI.createUI(this,"Test Script");
 * var refreshButton = ui.contents.add('button',undefined,"Refresh");
 * refreshButton.onClick = function() { ui.refreshUI( new File($.fileName) ); }; //reloads the current script
 * DuAEF.DuScriptUI.showUI(ui);
 */
DuAEF.DuScriptUI.createUI = function( container, scriptName, contentAlignment, bless )
{
    scriptName = def(scriptName, DuAEF.scriptName, false);
    contentAlignment = def(contentAlignment, DuAEF.DuScriptUI.defaultColumnAlignment, false);
    bless = def (bless, false);

    if ( scriptName != '' ) DuAEF.DuScriptUI.uiStrings.push( scriptName );
    scriptName = tr( scriptName );

    var myPal = null;
    container instanceof Panel ? myPal = container : myPal = new Window( 'palette', scriptName, undefined,
    {
        resizeable: true,
        borderless: bless
    } );

    if ( myPal == null ) throw "Failed to create User Interface.";

    myPal.margins = 0;
    myPal.spacing = 0;

    var topMargin = myPal.add( 'button' );
    topMargin.onDraw = function() {};
    topMargin.minimumSize.height = DuAEF.DuScriptUI.defaultMargins;
    topMargin.alignment = [ 'fill', 'top' ];
    topMargin.maximumSize.height = topMargin.minimumSize.height = topMargin.preferredSize.height = DuAEF.DuScriptUI.defaultMargins;

    var mainRow = myPal.add( 'group' );
    mainRow.alignment = contentAlignment;
    mainRow.alignChildren = contentAlignment;
    mainRow.margins = 0;
    mainRow.spacing = 0;

    var leftMargin = mainRow.add( 'button' );
    leftMargin.onDraw = function() {};
    leftMargin.maximumSize.width = leftMargin.minimumSize.width = leftMargin.preferredSize.width = DuAEF.DuScriptUI.defaultMargins;
    leftMargin.alignment = [ 'left', 'fill' ];

    myPal.contents = mainRow.add( 'group' );
    myPal.contents.margins = 0;
    myPal.contents.spacing = DuAEF.DuScriptUI.defaultSpacing;
    myPal.contents.alignChildren = DuAEF.DuScriptUI.defaultColumnAlignment;
    myPal.contents.orientation = "column";

    var rightMargin = mainRow.add( 'button' );
    rightMargin.onDraw = function() {};
    rightMargin.maximumSize.width = rightMargin.minimumSize.width = rightMargin.preferredSize.width = DuAEF.DuScriptUI.defaultMargins;
    rightMargin.alignment = [ 'right', 'fill' ];

    var bottomMargin = myPal.add( 'button' );
    bottomMargin.onDraw = function() {};
    bottomMargin.maximumSize.height = bottomMargin.minimumSize.height = bottomMargin.preferredSize.height = DuAEF.DuScriptUI.defaultMargins;
    bottomMargin.alignment = [ 'fill', 'bottom' ];

    myPal.refreshUI = function( scriptFile )
    {

        function refresh ()
        {
            var ok = false;
            DuAEF.DuScriptUI.dimControls();
            for ( var i = myPal.children.length - 1; i >= 0; i-- )
            {
                myPal.remove( this.children[ i ] );
            }

            delete DuAEF;
            delete tr;

            try
            {
                ok = true;
                $.evalFile( scriptFile );
            }
            catch ( err )
            {
                ok = false;
                if ( DuAEF.debug )
                {
                    myPal.add( 'statictext', undefined, err.fileName,
                    {
                        multiline: true
                    } );
                    myPal.add( 'statictext', undefined, err.message,
                    {
                        multiline: true
                    } );
                    myPal.add( 'statictext', undefined, "on line" + err.line );
                    var button = myPal.add( 'button', undefined, "Refresh UI" );
                    button.onClick = function()
                    {
                        myPal.refreshUI( scriptFile )
                    };
                }
            }

            myPal.layout.layout( true );
            myPal.layout.resize();

            return ok;
        }

        return refresh.call( myPal );
    }

    myPal.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    topMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    leftMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    rightMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    bottomMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );

    return myPal;
}

/**
 * @class
 * @name DuPopup
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A borderless popup, to be tied to a ui control.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.createPopup} to create a Popup.<br />
 * The DuPopup inherits the Window object from ScriptUI and has all of its properties and methods.
 * @property {Group} contents - The ScriptUI group where the new controls must be added. Do not add any control directly inside the DuPopup.
 * @property {boolean} pinned - true if this popup is "pinned", which means it won't hide when the user clicks outside of the window.
 */

/**
 * Ties the popup to a ui control. The popup will be shown just above the control when it is clicked.<br />
 * The control must have an addEventListener method.
 * @method
 * @memberof DuPopup
 * @name tieTo
 * @param {ScriptUI} [control] - The control
 */

/**
 * Pins the popup (it won't be hidden anymore when deactivated).
 * @method
 * @memberof DuPopup
 * @name pin
 * @param {boolean} [pinned=true] - true to pin the popup, false to un-pin it.
 */

/**
 * Creates a borderless popup
 * @memberof DuAEF.DuScriptUI
 * @param {string} title The title of the popup
 * @param {string[]} [alignment=DuAEF.DuScriptUI.defaultColumnAlignment] The alignement of this window
 * @return {DuPopup} The popup, a ScriptUI Window which is borderless, with a 'tieTo(control)' method.
 * @example
 * var popup = DuAEF.DuScriptUI.createPopup( );
 * var popupButton = DuAEF.DuScriptUI.addButton( myUI, "My Buttton for the popup" );
 * popup.tieTo( popupButton ); // will show the popup when the button is clicked, just above it.
 */
DuAEF.DuScriptUI.createPopup = function( title, alignment )
{
    alignment = def( alignment, DuAEF.DuScriptUI.defaultColumnAlignment );
    title = def (title, "");

    if (title != "")
    {
        DuAEF.DuScriptUI.uiStrings.push( title );
        title = tr( title );
    }
    
    var popup = new Window( 'palette', title, undefined,
    {
        resizeable: false,
        borderless: true
    } );

    popup.margins = 0;
    popup.spacing = 0;
    popup.pinned = false;

    function drawBorder ( drawState ) {
        var g = this.graphics;
        var c = DuAEF.DuJS.Color.Colors.DARK_GREY;
        c = DuAEF.DuScriptUI.adjustColor( c );

        var pen = g.newPen( g.PenType.SOLID_COLOR, c, 1 );

        g.newPath();
        if (this.side == 0) {
            g.moveTo (0, 0);
            g.lineTo (this.size.width, 0);
        }
        else if (this.side == 2) {
            g.moveTo (this.size.width, 0);
            g.lineTo (this.size.width, this.size.height);
        }
        else if (this.side == 1) {
            g.moveTo (0, 0);
            g.lineTo (0, this.size.height);
        }
        else if (this.side == 3) {
            g.moveTo (0, this.size.height);
            g.lineTo (this.size.width, this.size.height);
        }

        g.strokePath( pen );
    };

    var topMargin = popup.add( 'group' );
    topMargin.onDraw = drawBorder;
    topMargin.side = 0;
    topMargin.minimumSize.height = DuAEF.DuScriptUI.defaultMargins;
    topMargin.alignment = [ 'fill', 'top' ];
    topMargin.maximumSize.height = topMargin.minimumSize.height = topMargin.preferredSize.height = 1;
    DuAEF.DuScriptUI.setBackgroundColor( topMargin, DuAEF.DuJS.Color.Colors.DARK_GREY );
    
    var mainRow = popup.add( 'group' );
    mainRow.alignment = alignment;
    mainRow.alignChildren = alignment;
    mainRow.margins = 0;
    mainRow.spacing = 0;

    var leftMargin = mainRow.add( 'button' );
    leftMargin.onDraw = drawBorder;
    leftMargin.side = 1;
    leftMargin.maximumSize.width = leftMargin.minimumSize.width = leftMargin.preferredSize.width = 1;
    leftMargin.alignment = [ 'left', 'fill' ];

    var mainColumn = mainRow.add( 'group' );
    mainColumn.orientation = 'column';
    mainColumn.spacing = DuAEF.DuScriptUI.defaultMargins;
    mainColumn.margins = 0;
    mainColumn.alignment = ['fill','fill'];

    var titleBar = mainColumn.add( 'group' );
    titleBar.margins = 0;
    titleBar.spacing = 0;
    titleBar.alignment = ['fill','top'];
    DuAEF.DuScriptUI.setBackgroundColor( titleBar, DuAEF.DuJS.Color.Colors.DARK_GREY );
    var pinButton = DuAEF.DuScriptUI.addCheckBox(titleBar, '', DuAEF.DuBinary.toFile(w14_pin_m), 'Pin window', DuAEF.DuBinary.toFile(w14_pin_r));
    pinButton.alignment = [ 'left', 'top' ];
    var titleLabel = titleBar.add('statictext', undefined,  title);
    titleLabel.alignment = [ 'center', 'top' ];
    var closeButton = DuAEF.DuScriptUI.addButton(titleBar, '', DuAEF.DuBinary.toFile(w14_cancel_m), 'Close', DuAEF.DuBinary.toFile(w14_cancel_l));
    closeButton.alignment = [ 'right', 'top' ];

    popup.contents = mainColumn.add( 'group' );
    popup.contents.margins = 0;
    popup.contents.spacing = DuAEF.DuScriptUI.defaultSpacing;
    popup.contents.alignChildren = alignment;
    popup.contents.orientation = "column";

    var rightMargin = mainRow.add( 'button' );
    rightMargin.onDraw = drawBorder;
    rightMargin.side = 2;
    rightMargin.maximumSize.width = rightMargin.minimumSize.width = rightMargin.preferredSize.width = 1;
    rightMargin.alignment = [ 'right', 'fill' ];

    var bottomMargin = popup.add( 'button' );
    bottomMargin.onDraw = drawBorder;
    bottomMargin.side = 3;
    bottomMargin.maximumSize.height = bottomMargin.minimumSize.height = bottomMargin.preferredSize.height = 1;
    bottomMargin.alignment = [ 'fill', 'bottom' ];

    popup.tieTo = function (control)
    {
        control.addEventListener( 'click', function(e) {
            var x = e.screenX - e.clientX;
            var y = e.screenY - e.clientY;
            popup.location = [ x, y ];
            popup.show();
        }, true);
    }

    popup.pin = function(p)
    {
        p = def (p, true);
        popup.pinned = p;
        pinButton.setChecked(p);
    }

    var movingTitle = false;
    var movingPopup = false;
    var startMouseLocation = [0,0];
    var startPopupLocation = [0,0];

    function enterTitleMoveState(e)
    {
        movingTitle = true;
        startMouseLocation = [e.screenX, e.screenY];
        startPopupLocation = [popup.location[0], popup.location[1]];
    }

    function enterPopupMoveState(e)
    {
        movingPopup = true;
        startMouseLocation = [e.screenX, e.screenY];
        startPopupLocation = [popup.location[0], popup.location[1]];
    }

    function movePopup(e)
    {
        if (!movingPopup) return;
        if (movingTitle) return;
        var x = e.screenX - startMouseLocation[0];
        var y = e.screenY - startMouseLocation[1];
        popup.location = [ x, y ] + startPopupLocation;
    }

    function moveTitle(e)
    {
        if (!movingTitle) return;
        var x = e.screenX - startMouseLocation[0];
        var y = e.screenY - startMouseLocation[1];
        popup.location = [ x, y ] + startPopupLocation;
    }

    function endMoveState(e)
    {
        movingTitle = false;
        movingPopup = false;
    }

    function esc(e)
    {
        if ( e.keyName == "Escape") popup.hide();
    }

    popup.onDeactivate = function () { if (!popup.pinned) popup.hide(); };
    closeButton.onClick = function () { popup.hide(); };

    pinButton.onClick = function () { popup.pin(pinButton.checked); };

    popup.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    popup.addEventListener( "keydown", esc );
    topMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    leftMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    rightMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    bottomMargin.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );
    titleBar.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );

    titleBar.addEventListener( "mousedown", enterPopupMoveState );
    titleBar.addEventListener( "mousemove", movePopup);
    titleBar.addEventListener( "mouseup", endMoveState );
    titleBar.addEventListener( "mouseout", endMoveState );

    titleLabel.addEventListener( "mousedown", enterTitleMoveState );
    titleLabel.addEventListener( "mousemove", moveTitle );
    titleLabel.addEventListener( "mouseup", endMoveState );
    titleLabel.addEventListener( "mouseout", endMoveState );

    return popup;
}

/**
 * Resizes and shows the main panel of a script
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window}		ui	- The UI created by Duik.ui.createUI
 * @param {boolean}		[enterRunTime=false]	- Set to true to automatically set DuAEF to runtime state<br />
 * Set this to false if the ui shown is not the actual main panel of the script and it is shown before the main panel has been loaded.
 */
DuAEF.DuScriptUI.showUI = function( ui, enterRunTime )
{
    enterRunTime = def( enterRunTime, true);

    DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI" );

    DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI: Defining layout" );
    ui.layout.layout( true );
    DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI: Resizing" );
    ui.layout.resize();
    ui.onResizing = ui.onResize = function()
    {
        try
        {
            ui.layout.resize();
        }
        catch ( e )
        {}
    }
    DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI: UI Ready" );

    if ( ui instanceof Window )
    {
        DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI: Showing window" );
        ui.show();
        DuAEF.Debug.log( "DuAEF.DuScriptUI.showUI: Window visible." );
    }

    DuAEF.DuScriptUI.uiShown = true;

    if (enterRunTime) DuAEF.enterRunTime();
}

/**
 * @class
 * @name DuMainPanel
 * @extends DuPanel
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Panel or Window.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.createMainPanel} to create a Panel.<br />
 * @property {Group} settingsGroup - The ScriptUI group where to add the UI for the settings of the script.
 * @property {Group} mainGroup - The ScriptUI group where to add the main UI of the script.
 * @property {DuPanel~refreshUI} refreshUI - A function to reload a script in this panel
 */

/**
 * Creates the main panel of a script
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|null} container - The container ('this' in the root of the calling script), either a Panel (when launched from the 'Window' menu) or null (when launched from 'file/scripts/run...')
 * @param {bool} [addSettingsButton=true] - Wether to create a button to open the settings or not
 * @param {bool} [addHelpButton=false] - Wether to create a button to open the help panel or not
 * @param {bool} [helpButtonOpensPanel=false] - The help button opens a help panel instead of the link to the documentation
 * @return {DuMainPanel} The panel created, either a ScriptUI Panel or a ScriptUI Window.
 * @example
 * var ui = DuAEF.DuScriptUI.createUI(this,"Test Script");
 * var refreshButton = ui.contents.add('button',undefined,"Refresh");
 * refreshButton.onClick = function() { ui.refreshUI( new File($.fileName) ); }; //reloads the current script
 * DuAEF.DuScriptUI.showUI(ui);
 */
DuAEF.DuScriptUI.createMainPanel = function( container, addSettingsButton, addHelpButton, helpButtonOpensPanel )
{
    addSettingsButton = def(addSettingsButton, true);
    addHelpButton = def(addHelpButton, false);
    helpButtonOpensPanel = def(helpButtonOpensPanel, false);

    var panel = DuAEF.DuScriptUI.createUI( container, undefined, ['fill','fill'] );
    panel.contents.orientation = 'stack';
    panel.contents.alignment = ['fill','fill'];  

    panel.mainGroup = DuAEF.DuScriptUI.addGroup(panel.contents, 'column');
    panel.mainGroup.alignment = ['fill', 'top'];
    
    var rootSettingsGroup = DuAEF.DuScriptUI.addGroup(panel.contents, 'column');
    rootSettingsGroup.alignment = ['fill', 'fill'];
    rootSettingsGroup.visible = false;
    panel.settingsGroup = DuAEF.DuScriptUI.addGroup(rootSettingsGroup, 'column');
    panel.settingsGroup.alignment = ['fill', 'top'];
    var settingsBackButton = DuAEF.DuScriptUI.addButton(
        rootSettingsGroup,
        "Back",
        DuAEF.DuBinary.toFile(w14_back_m),
        "Close settings",
        DuAEF.DuBinary.toFile(w14_back_l)
    )

    var bottomGroup = DuAEF.DuScriptUI.addGroup(panel.contents, 'row');
    bottomGroup.alignment = ['fill', 'bottom'];
    DuAEF.DuScriptUI.setBackgroundColor(bottomGroup, DuAEF.DuJS.Color.Colors.AE_DARK_GREY, false);

    var versionButton = DuAEF.DuScriptUI.addVersionButton(
        bottomGroup
        );
    versionButton.alignment = ['left', 'bottom'];

    if (DuAEF.bugReportURL != '')
    {
        var bugButton = DuAEF.DuScriptUI.addBugButton( bottomGroup );
        bugButton.alignment = ['right', 'fill'];
    }
    
    if (DuAEF.featureRequestURL != '')
    {
        var featureRequestButton = DuAEF.DuScriptUI.addFeatureRequestButton( bottomGroup );
        featureRequestButton.alignment = ['right', 'fill'];
    }
    
    if (addSettingsButton)
    {
        var settingsButton = DuAEF.DuScriptUI.addButton(
        bottomGroup,
        '',
        DuAEF.DuBinary.toFile(w18_settings_l),
        "Change the settings",
        DuAEF.DuBinary.toFile(w18_settings_r)
        );
        settingsButton.alignment = ['right', 'fill'];

        settingsButton.onClick = function()
        {
            if (panel.mainGroup.visible)
            {
                panel.mainGroup.visible = false;
                rootSettingsGroup.visible = true;
            }
            else
            {
                panel.mainGroup.visible = true;
                rootSettingsGroup.visible = false;
            }
        }

        settingsBackButton.onClick = function()
        {
            panel.mainGroup.visible = true;
            rootSettingsGroup.visible = false;
        }

    }

    if (addHelpButton)
    {
        var helpButton = DuAEF.DuScriptUI.addHelpButton( bottomGroup, false, helpButtonOpensPanel );
        helpButton.alignment = ['right', 'fill'];
    }
    
    return panel;
}// ==================== |---------------------| ====================
// ==================== | DuScriptUILayoutLib | ====================
// ==================== |---------------------| ====================


/**
 * Adds a group in a container, using  DuAEF.DuScriptUI default alignments, and DuAEF.DuScriptUI.defaultSpacing. Margins are set to 0.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group}		container	- Where to create the group
 * @param {string}					[orientation] - The orientation to use. One of "column", "row" or "stack". By default, "column" if added in a row, "row" if added in a column.
 * @return {Group}	The group created
 */
DuAEF.DuScriptUI.addGroup = function( container, orientation )
{
    var group = container.add( "group" );
    group.spacing = 2;
    group.margins = 0;
    if ( orientation !== undefined ) group.orientation = orientation;
    if ( group.orientation === "row" )
    {
        group.alignChildren = DuAEF.DuScriptUI.defaultRowAlignment;
    }
    else if ( group.orientation === "column" )
    {
        group.alignChildren = DuAEF.DuScriptUI.defaultColumnAlignment;
    }
    else
    {
        group.alignChildren = DuAEF.DuScriptUI.defaultStackAlignment;
    }

    group.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );

    return group;
}

/**
 * @class
 * @name Separator
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Separator.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addSeparator} to create a Separator.<br />
 * The Separator inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {StaticText|CheckBox} label - the label
 * @property {boolean} checkable - Read-Only | true if a checkbox is displayed
 */

/**
 * Adds separator with an optionnal name in the group
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group} container - Where to create the separator
 * @param {string} [name] - The name displayed
 * @param {boolean} [checkable=false] - When true, adds a checkbox to the separator
 * @param {boolean} [drawLine=true] - Draws a line when there is no name. When false, the separator is an empty space
 * @return {Separator} The separator
 */
DuAEF.DuScriptUI.addSeparator = function( container, name, checkable, drawLine )
{
    if ( name == undefined ) name = '';
    if ( checkable == undefined ) checkable = false;
    if ( drawLine == undefined ) drawLine = true;

    if ( name != '' ) DuAEF.DuScriptUI.uiStrings.push( name );
    name = tr( name );

    var separator = DuAEF.DuScriptUI.addGroup( container, "row" );
    separator.margins = DuAEF.DuScriptUI.defaultMargins;
    separator.margins.bottom = DuAEF.DuScriptUI.defaultMargins * 2;
    separator.alignment = [ 'fill', 'top' ];
    separator.checkable = checkable;

    separator.label = null;
    if ( name != '' || checkable )
    {
        DuAEF.DuScriptUI.uiStrings.push( name );
        name = tr( name );
        if ( checkable ) separator.label = separator.add( 'checkbox', undefined, name );
        else separator.label = separator.add( 'statictext', undefined, name );
        separator.label.alignment = [ 'center', 'bottom' ];
        if ( drawLine ) DuAEF.DuScriptUI.setBackgroundColor( separator, DuAEF.DuJS.Color.Colors.DARK_GREY );
    }
    else if ( drawLine )
    {
        DuAEF.DuScriptUI.setBackgroundColor( separator, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
    }

    separator.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );

    return separator;
}
// ==================== |---------------------| ====================
// ==================== | DuScriptUIButtonLib | ====================
// ==================== |---------------------| ====================


/**
 * @class
 * @name DuButton
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * An Image Button.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addButton} to create an Image Button.<br />
 * The Image Button inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {string} standardImage - The path to the image (or a PNG as a string representation)
 * @property {string} imageOver - The path to the image (or a PNG as a string representation) to display when mouseover
 * @property {Image} image - The scriptui object representing the image
 * @property {StaticText} label - The label
 * @property {DuPopup} optionsPanel - A panel for options
 * @property {DuButton~onClick} onClick - The function to execute when the button is clicked
 * @property {DuButton~onAltClick} onClick - The function to execute when the button is Alt + clicked
 * @property {DuButton~onCtrlClick} onClick - The function to execute when the button is Ctrl + clicked
 * @property {DuButton~onCtrlAltClick} onClick - The function to execute when the button is Ctrl + Alt + clicked
 */

/**
 * The function to execute when the button is clicked.
 * @callback DuButton~onClick
 * @memberof DuButton
 */

/**
 * The function to execute when the button is Alt + clicked.
 * @callback DuButton~onAltClick
 * @memberof DuButton
 */

/**
 * The function to execute when the button is Ctrl + clicked.
 * @callback DuButton~onCtrlClick
 * @memberof DuButton
 */

/**
 * The function to execute when the button is Ctrl + Alt + clicked.
 * @callback DuButton~onCtrlAltClick
 * @memberof DuButton
 */

/**
 * Creates a button with an optionnal icon. Must have at least an icon or a text, or both.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group}			container	- The ScriptUI Object which will contain and display the button.
 * @param {string}					[text]		- The label of the button. Default: empty string
 * @param {string}					[image]		- The path to the icon. Default: empty string
 * @param {string}					[helpTip]		- The helptip. Default: empty string
 * @param {string}					[imageOver=image]	- The path to an icon displayed when the mouse is over the button.
 * @param {bool}					[addOptionsPanel=false]	- Adds a panel for options and a button to access it.
 * @param {bool}					[optionsButtonUnder]	- When true, the options button appears under the button instead of next to it.
 * @param {string}					[imageDisabled=image]	- The path to an icon displayed when the button is disabled.
 * @return {DuButton}			The image button created.
 */
DuAEF.DuScriptUI.addButton = function( container, text, image, helpTip, imageOver, addOptionsPanel, optionsButtonUnder, imageDisabled )
{
    if (DuAEF.DuJS.typeof(container) != 'Group' && DuAEF.DuJS.typeof(container) != 'Panel' && DuAEF.DuJS.typeof(container) != 'Window' )
    {
        throw 'DuScriptUI: DuAEF.DuScriptUI.addButton(container, text, image, helpTip, imageOver):\nTypeError.\n\ncontainer has to be a Group/Panel/Window.\n\ncontainer is ' + DuAEF.DuJS.typeof(container) + ' with value ' + container.toString();
    }

    text = def(text, '');
    image = def(image, '');
    helpTip = def(helpTip, '');
    imageOver = def(imageOver, '');
    imageDisabled = def(imageDisabled, '');
    addOptionsPanel = def(addOptionsPanel, false);
    optionsButtonUnder = def(optionsButtonUnder, text == '');
    
    if ( imageOver != '' && !DuAEF.DuJS.Fs.fileExists( imageOver ) ) imageOver = '';
    if ( image != '' && !DuAEF.DuJS.Fs.fileExists( image ) ) image = '';
    if ( imageDisabled != '' && !DuAEF.DuJS.Fs.fileExists( imageDisabled ) ) imageDisabled = '';

    if ( text != '' )
    {
        DuAEF.DuScriptUI.uiStrings.push( text );
        text = tr( text );
    }
    if ( helpTip != '' )
    {
        DuAEF.DuScriptUI.uiStrings.push( helpTip );
        helpTip = tr( helpTip );
    }

    if ( image == '' && text == '' ) text = 'o';

    var rootGroup = container.add( 'group' );
    var imageButton = rootGroup;
    imageButton.group = rootGroup; // needed for retro-compatibility
    if (optionsButtonUnder) imageButton.orientation = 'column';
    else imageButton.orientation = 'row';

    imageButton.margins = 0;
    imageButton.alignment = [ 'fill', 'fill' ];
    if (addOptionsPanel) imageButton.spacing = 2;
    else imageButton.spacing = 0;

    var mainGroup = imageButton.add( 'group' );
    mainGroup.orientation = 'row';
    mainGroup.margins = 2;
    if ( image == '' ) mainGroup.margins = 5;
    mainGroup.alignment = [ 'fill', 'fill' ];
    mainGroup.spacing = 0;

    var optionsButton;
    var optionsValidButton;
    if (addOptionsPanel) {
        optionsButton = DuAEF.DuScriptUI.addButton(
            imageButton,
            '',
            DuAEF.DuBinary.toFile(w14_options_m),
            text + '\nOptions',
            DuAEF.DuBinary.toFile(w14_options_r)
        )
        if (optionsButtonUnder) optionsButton.alignment = ['center', 'bottom'];
        else optionsButton.alignment = ['right', 'center'];

        var optionsPanel = DuAEF.DuScriptUI.createPopup(text == '' ? 'Options' : text);
        optionsPanel.tieTo(optionsButton);
        imageButton.optionsPanel = DuAEF.DuScriptUI.addGroup( optionsPanel.contents, 'column');

        optionsValidButton = DuAEF.DuScriptUI.addButton(
            optionsPanel.contents,
            text,
            DuAEF.DuBinary.toFile(w25_check_g),
            text,
            DuAEF.DuBinary.toFile(w25_check_r)
        )
    }

    imageButton.standardImage = image;
    imageButton.imageOver = imageOver;
    imageButton.onClick = function() {};
    imageButton.onAltClick = function() {};
    imageButton.onCtrlAltClick = function() {};
    imageButton.onCtrlClick = function() {};
    imageButton.image = null;
    imageButton.label = null;

    if ( text != '' )
    {
        imageButton.fillerL = mainGroup.add( 'statictext', undefined, "" );
        imageButton.fillerL.alignment = [ 'left', 'fill' ];
        if ( image != '' ) imageButton.fillerL.size = [ 20, 0];
    }

    if ( image != '' )
    {
        var icon = mainGroup.add( 'image', undefined, imageButton.standardImage );
        icon.alignment = [ 'left', 'center' ];
        icon.helpTip = helpTip;
        imageButton.image = icon;
        imageButton.icon = icon;
    }

    if ( text != '' )
    {
        imageButton.fillerM = mainGroup.add( 'statictext', undefined, "" );
        imageButton.fillerM.alignment = [ 'left', 'fill' ];
        if ( image != '' ) imageButton.fillerM.size = [ 20, 0];
    }

    if ( text != '' )
    {
        var label = mainGroup.add( 'statictext', undefined, text );
        label.helpTip = helpTip;
        label.alignment = [ 'left', 'center' ];
        imageButton.label = label;
        DuAEF.DuScriptUI.setBackgroundColor( mainGroup, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
        imageButton.alignment = [ 'fill', 'top' ];
    }

    if ( text != '' )
    {
        imageButton.fillerR = mainGroup.add( 'statictext', undefined, "" );
        imageButton.fillerR.alignment = [ 'fill', 'fill' ];
    }

    imageButton.clicked = function()
    {
        DuAEF.Debug.safeRun(imageButton.onClick);
    }

    imageButton.shiftClicked = function()
    {
        DuAEF.DuScriptUI.updateHelpPopup( imageButton.help.title, imageButton.help.text, imageButton.help.link );

        if ( imageButton.help.text != '' )
        {
            DuAEF.DuScriptUI.showHelp();
        }
        else if (imageButton.help.link != '')
        {
            DuAEF.DuSystem.openURL(imageButton.help.link);
        }
    }

    imageButton.altClicked = function()
    {
        DuAEF.Debug.safeRun(imageButton.onAltClick);
    }

    imageButton.ctrlAltClicked = function()
    {
        DuAEF.Debug.safeRun(imageButton.onCtrlAltClick);
    }

    imageButton.ctrlClicked = function()
    {
        DuAEF.Debug.safeRun(imageButton.onCtrlClick);
    }

    imageButton.highlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();
        if ( icon )
            if ( imageButton.imageOver != '' ) icon.image = imageButton.imageOver;
        if ( label )
        {
            DuAEF.DuScriptUI.setTextColor( imageButton.label, DuAEF.DuJS.Color.Colors.VERY_LIGHT_GREY );
            DuAEF.DuScriptUI.setBackgroundColor( mainGroup, DuAEF.DuJS.Color.Colors.DARK_GREY );
        }
        DuAEF.DuScriptUI.highlightedControls.push( imageButton );
    }

    imageButton.dim = function()
    {
        if ( icon )
            if ( imageButton.standardImage != '' ) icon.image = imageButton.standardImage;
        if ( label )
        {
            DuAEF.DuScriptUI.setTextColor( imageButton.label, DuAEF.DuJS.Color.Colors.LIGHT_GREY );
            DuAEF.DuScriptUI.setBackgroundColor( mainGroup, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
        }
    }

    mainGroup.addEventListener( 'click', function( e )
    {
        if ( e.shiftKey ) imageButton.shiftClicked();
        else if ( e.altKey && e.ctrlKey ) imageButton.ctrlAltClicked();
        else if ( e.altKey ) imageButton.altClicked();
        else if ( e.ctrlKey ) imageButton.ctrlClicked();
        else imageButton.clicked();
    }, true );

    if (addOptionsPanel) {
        optionsValidButton.onClick = imageButton.clicked;
        optionsValidButton.shiftClicked = imageButton.shiftClicked;
        optionsValidButton.altClicked = imageButton.altClicked;
        optionsValidButton.ctrlAltClicked = imageButton.ctrlAltClicked;
        optionsValidButton.ctrlClicked = imageButton.ctrlClicked;
    }
    
    if ( label )
    {
        imageButton.label.addEventListener( "mouseover", imageButton.highlight );
        imageButton.fillerL.addEventListener( "mouseover", imageButton.highlight );
        imageButton.fillerR.addEventListener( "mouseover", imageButton.highlight );
        imageButton.fillerM.addEventListener( "mouseover", imageButton.highlight );
    }
    
    if ( DuAEF.DuAE.App.version.version > 11 && icon )
    {
        imageButton.icon.addEventListener( "mouseover", imageButton.highlight );
    }

    imageButton.help = {};
    imageButton.help.title = '';
    imageButton.help.text = '';
    imageButton.help.link = '';

    imageButton.setHelp = function( title, text, link )
    {
        if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( title );
        title = tr( title );
        imageButton.help.title = title;
        imageButton.help.text = text;
        imageButton.help.link = link;
    }

    imageButton.resize = function()
    {
        imageButton.fillerL.size = [ mainGroup.size.width / 4, mainGroup.size.height ];
    }

    return imageButton;
}

/**
 * @class
 * @name DuSmallButton
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * An Small Button.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addSmallButton} to create a Small Button.<br />
 * The Small Button inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {StaticText} label - The label
 * @property {any} value - A user value stored in the button, which is passed to the onClick method
 * @property {DuSmallButton~onClick} onClick - The function to execute when the button is clicked
 */

/**
 * The function to execute when the button is clicked.<br />
 * The implementation of this function can take one parameter which is the used defined value of the button.
 * @callback DuSmallButton~onClick
 * @memberof DuSmallButton
 * @param {any} value - The used defined value of the button
 */

/**
 * Creates a small button.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group}			container	- The ScriptUI Object which will contain and display the button.
 * @param {string}					text		- The label of the button. Default: empty string
 * @param {string}					[helpTip]		- The helptip. Default: empty string
 * @param {any}					[value]		- A user value stored in the button, which is passed to the onClick method
 * @return {DuButton}			The image button created.
 */
DuAEF.DuScriptUI.addSmallButton = function( container, text, helpTip, value )
{
    if ( typeof helpTip === 'undefined' ) helpTip = '';

    DuAEF.DuScriptUI.uiStrings.push( text );
    text = tr( text );
    if ( helpTip != '' )
    {
        DuAEF.DuScriptUI.uiStrings.push( helpTip );
        helpTip = tr( helpTip );
    }

    var smallButton = container.add( 'group' );
    smallButton.orientation = 'row';
    smallButton.margins = 0;
    smallButton.alignment = [ 'fill', 'top' ];
    smallButton.alignChildren = [ 'fill', 'fill' ];
    smallButton.spacing = 0;

    smallButton.onClick = function() {};
    smallButton.onAltClick = function() {};
    smallButton.onCtrlAltClick = function() {};
    smallButton.onCtrlClick = function() {};
    smallButton.label = smallButton.add( 'statictext', undefined, text );
    smallButton.label.helpTip = helpTip;
    smallButton.label.justify = 'center';
    DuAEF.DuScriptUI.setBackgroundColor( smallButton, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );

    smallButton.value = value;

    smallButton.clicked = function()
    {
        DuAEF.Debug.safeRun(smallButton.onClick, smallButton.value);
    }

    smallButton.shiftClicked = function()
    {
        DuAEF.DuScriptUI.updateHelpPopup( smallButton.help.title, smallButton.help.text, smallButton.help.link );

        if ( smallButton.help.text != '' )
        {
            DuAEF.DuScriptUI.showHelp();
        }
    }

    smallButton.altClicked = function()
    {
        DuAEF.Debug.safeRun(smallButton.onAltClick);
    }

    smallButton.ctrlAltClicked = function()
    {
        DuAEF.Debug.safeRun(smallButton.onCtrlAltClick);
    }

    smallButton.ctrlClicked = function()
    {
        DuAEF.Debug.safeRun(smallButton.onCtrlClick);
    }

    smallButton.highlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();

        DuAEF.DuScriptUI.setTextColor( smallButton.label, DuAEF.DuJS.Color.Colors.VERY_LIGHT_GREY );
        DuAEF.DuScriptUI.setBackgroundColor( smallButton, DuAEF.DuJS.Color.Colors.DARK_GREY );

        DuAEF.DuScriptUI.highlightedControls.push( smallButton );
    }

    smallButton.dim = function()
    {
        DuAEF.DuScriptUI.setTextColor( smallButton.label, DuAEF.DuJS.Color.Colors.LIGHT_GREY );
        DuAEF.DuScriptUI.setBackgroundColor( smallButton, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
    }

    smallButton.addEventListener( 'click', function( e )
    {
        if ( e.shiftKey ) smallButton.shiftClicked();
        else if ( e.altKey && e.ctrlKey ) smallButton.ctrlAltClicked();
        else if ( e.altKey ) smallButton.altClicked();
        else if ( e.ctrlKey ) smallButton.ctrlClicked();
        else smallButton.clicked();
    }, true );


    smallButton.addEventListener( "mouseover", smallButton.highlight );


    smallButton.help = {};
    smallButton.help.title = '';
    smallButton.help.text = '';
    smallButton.help.link = '';

    smallButton.setHelp = function( title, text, link )
    {
        if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( title );
        title = tr( title );
        smallButton.help.title = title;
        smallButton.help.text = text;
        smallButton.help.link = link;
    }

    return smallButton;
}
// ==================== |-----------------------| ====================
// ==================== | DuScriptUICheckboxLib | ====================
// ==================== |-----------------------| ====================


/**
 * @class
 * @name DuCheckBox
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * An Image Checkbox.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addCheckBox} to create an Image Checkbox.<br />
 * The Image Checkbox inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {Group} group - The scriptUI Group containing the label and the image.
 * @property {string} standardImage - The path to the image (or a PNG as a string representation)
 * @property {string} imageOver - The path to the image (or a PNG as a string representation) to display when mouseover
 * @property {string} imageChecked - The path to the image (or a PNG as a string representation) to display when the button is checked
 * @property {Image}	image	- The scriptui object representing the image, if any
 * @property {StaticText}	label	- The label, if any
 * @property {string} text - The current text
 * @property {string} textChecked - The text to display when the checkbox is checked
 * @property {string} defaultText - The text to display when the checkbox is unchecked
 * @property {boolean}	checked 	- The checked state of the button
 * @property {DuCheckBox~onClick} onClick - The function to execute when the button is clicked
 */

/**
 * The function to execute when the button is clicked.
 * @callback DuCheckBox~onClick
 * @memberof DuCheckBox
 */

/**
 * Sets the checked state of the button
 * @method
 * @memberof DuCheckBox
 * @name setChecked
 * @param {boolean} [checked=true] - The state
 */

/**
 * Sets the help information for this button
 * @method
 * @memberof DuCheckBox
 * @name setHelp
 * @param {string} title - The title
 * @param {string} text - The content
 * @param {string} link - A URL to an online help
 */

/**
 * Creates a checkbox with an optionnal icon. Must have at least an icon or a text, or both.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group}			container		- The ScriptUI Object which will contain and display the button.
 * @param {string}					text			- The label of the button. Default: empty string
 * @param {string}					image			- The path to the icon. Default: empty string
 * @param {string}					helpTip			- The helptip. Default: empty string
 * @param {string}					imageChecked	- The path to an icon displayed when the button is checked. Default: empty string
 * @param {string}					imageOver		- The path to an icon displayed when the mouse is over the button. Default: same as imageChecked
 * @param {string}					[textChecked]			- The label of the button displayed when it is checked.
 * @return {DuCheckBox}					The image checkbox created.
 */
DuAEF.DuScriptUI.addCheckBox = function( container, text, image, helpTip, imageChecked, imageOver, textChecked, isTab )
{
    isTab = def(isTab, false);
    if ( !container ) return null;
    text = def(text, '');
    image = def(image, '');
    helpTip = def(helpTip, '');
    imageChecked = def(imageChecked, '');
    imageOver = def(imageOver, imageChecked);
    textChecked = def(textChecked, '');

    if ( imageOver != '' && !DuAEF.DuJS.Fs.fileExists( imageOver ) ) imageOver = '';
    if ( image != '' && !DuAEF.DuJS.Fs.fileExists( image ) ) image = '';
    if ( imageChecked != '' && !DuAEF.DuJS.Fs.fileExists( imageChecked ) ) imageChecked = '';

    if ( image == '' && text == '' ) text = '#';

    if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( text );
    if ( helpTip != '' ) DuAEF.DuScriptUI.uiStrings.push( helpTip );
    text = tr( text );
    helpTip = tr( helpTip );

    var duCheckBox = container.add( 'group' );
    duCheckBox.orientation = 'column';
    duCheckBox.margins = 2;
    if ( isTab ) duCheckBox.spacing = 3;
    else duCheckBox.spacing = 0;

    duCheckBox.group = duCheckBox.add( 'group' );
    duCheckBox.group.orientation = 'row';
    duCheckBox.group.margins = 0;
    duCheckBox.group.spacing = 3;

    var outLine;
    if ( isTab && text != '' )
    {
        outLine = duCheckBox.add( 'group' );
        outLine.margins = 0;
        outLine.minimumSize.height = 2;
        outLine.alignment = [ 'fill', 'top' ];
    }

    duCheckBox.standardImage = image;
    duCheckBox.imageOver = imageOver;
    duCheckBox.imageChecked = imageChecked;
    duCheckBox.onClick = function() {};
    duCheckBox.onAltClick = function() {};
    duCheckBox.checked = duCheckBox.value = false;
    duCheckBox.textChecked = textChecked;
    duCheckBox.defaultText = text;
    duCheckBox.text = text;

    iconChecked = DuAEF.DuBinary.toFile( w14_checked_m );
    iconCheckedOver = DuAEF.DuBinary.toFile( w14_checked_l );
    iconUnchecked = DuAEF.DuBinary.toFile( w14_emptysquare_m );
    iconUncheckedOver = DuAEF.DuBinary.toFile( w14_unchecked_l );
    var checkbox; //the icon checkbox

    if ( text != '')
    {
        if ( !isTab && DuAEF.DuAE.App.hasFilesAndNetworkAccess )
        {
            checkbox = duCheckBox.group.add( 'image', undefined, iconUnchecked );
            checkbox.alignment = [ 'left', 'center' ];
            checkbox.helpTip = helpTip;
        }
        DuAEF.DuScriptUI.setBackgroundColor( duCheckBox, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
        duCheckBox.alignment = [ 'fill', 'top' ];
        duCheckBox.alignChildren = [ 'fill', 'center' ];
    }

    if ( image != '' && DuAEF.DuAE.App.hasFilesAndNetworkAccess )
    {
        duCheckBox.image = duCheckBox.group.add( 'image', undefined, image );
        if ( isTab ) duCheckBox.image.alignment = [ 'center', 'center' ];
        else duCheckBox.image.alignment = [ 'left', 'center' ];
        duCheckBox.image.helpTip = helpTip;
    }

    if ( text != '')
    {
        duCheckBox.label = duCheckBox.group.add( 'statictext', undefined, text );
        duCheckBox.label.helpTip = helpTip;
        if ( isTab ) duCheckBox.label.alignment = [ 'center', 'center' ];
        else duCheckBox.label.alignment = [ 'left', 'center' ];
        if ( text.length < textChecked.length ) duCheckBox.label.characters = textChecked.length;
        else duCheckBox.label.characters = text.length;
    }

    /**
     * Checks or unchecks the button
     * @memberof DuCheckBox
     * @param {boolean} c - The checked state
     */
    duCheckBox.setChecked = function( c )
    {
        c = def(c, true);
        duCheckBox.checked = duCheckBox.value = c;

        if ( c )
        {
            if ( duCheckBox.label && duCheckBox.textChecked != '' )
            {
                duCheckBox.label.text = duCheckBox.textChecked;
                duCheckBox.text = duCheckBox.textChecked;
            }
            if ( checkbox ) checkbox.image = iconChecked;
            if ( duCheckBox.image && duCheckBox.imageChecked != '' ) duCheckBox.image.image = duCheckBox.imageChecked;
            if (outLine) DuAEF.DuScriptUI.setBackgroundColor( outLine, DuAEF.DuJS.Color.Colors.RAINBOX_RED, true );
        }
        else 
        {
            if ( duCheckBox.label)
            {
                duCheckBox.label.text = duCheckBox.defaultText;
                duCheckBox.text = duCheckBox.defaultText;
            }
            if ( checkbox ) checkbox.image = iconUnchecked;
            if ( duCheckBox.image && duCheckBox.standardImage != '' ) duCheckBox.image.image = duCheckBox.standardImage;
            if (outLine) DuAEF.DuScriptUI.setBackgroundColor( outLine, DuAEF.DuJS.Color.Colors.DARK_GREY, true );
        }
    }

    duCheckBox.clicked = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.updateHelpPopup( duCheckBox.help.title, duCheckBox.help.text, duCheckBox.help.link );
        if ( e.shiftKey )
        {
            if ( duCheckBox.help.text != '' )
            {
                DuAEF.DuScriptUI.showHelp();
            }
            return;
        }

        duCheckBox.setChecked( !duCheckBox.checked );
        DuAEF.Debug.safeRun(duCheckBox.onClick);
    }

    duCheckBox.altClicked = function()
    {
        DuAEF.Debug.safeRun(duCheckBox.onAltClick);
    }

    duCheckBox.highlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();
        if ( duCheckBox.image && duCheckBox.imageOver != '' ) duCheckBox.image.image = duCheckBox.imageOver;
        if ( duCheckBox.label ) DuAEF.DuScriptUI.setBackgroundColor( duCheckBox, DuAEF.DuJS.Color.Colors.DARK_GREY );
        if ( checkbox && duCheckBox.checked ) checkbox.image = iconCheckedOver;
        else if ( checkbox ) checkbox.image = iconUncheckedOver;
        if ( outLine ) DuAEF.DuScriptUI.setBackgroundColor( outLine, DuAEF.DuJS.Color.Colors.LIGHT_GREY, true );

        DuAEF.DuScriptUI.highlightedControls.push( duCheckBox );
    }

    duCheckBox.dim = function( e )
    {
        if ( duCheckBox.image && duCheckBox.imageChecked != '' && duCheckBox.checked ) duCheckBox.image.image = duCheckBox.imageChecked;
        else if ( duCheckBox.image && duCheckBox.imageChecked != '' ) duCheckBox.image.image = duCheckBox.standardImage;
        if ( duCheckBox.label ) DuAEF.DuScriptUI.setBackgroundColor( duCheckBox, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
        if ( checkbox && duCheckBox.checked ) checkbox.image = iconChecked;
        else if ( checkbox ) checkbox.image = iconUnchecked;
        if ( outLine && duCheckBox.checked ) DuAEF.DuScriptUI.setBackgroundColor( outLine, DuAEF.DuJS.Color.Colors.RAINBOX_RED, true );
        else if ( outLine ) DuAEF.DuScriptUI.setBackgroundColor( outLine, DuAEF.DuJS.Color.Colors.DARK_GREY, true );
    }

    duCheckBox.group.addEventListener( "mousedown", function(e)
    {
        if ( e.altKey ) duCheckBox.altClicked();
        else duCheckBox.clicked(e);
    }, true );
    if ( DuAEF.DuAE.App.version.version >= 11 && DuAEF.DuAE.App.version.version < 12 )
    {
        if ( duCheckBox.label ) duCheckBox.label.addEventListener( "mouseover", duCheckBox.highlight );
    }
    else
    {
        duCheckBox.addEventListener( "mouseover", duCheckBox.highlight );
    }

    duCheckBox.help = {};
    duCheckBox.help.title = '';
    duCheckBox.help.text = '';
    duCheckBox.help.link = '';

    duCheckBox.setHelp = function( title, text, link )
    {
        duCheckBox.help.title = title;
        duCheckBox.help.text = text;
        duCheckBox.help.link = link;
    }

    return duCheckBox;
}

/**
 * @class
 * @name SimpleCheckBox
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Nice Checkbox.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addSimpleCheckBox} to create an Nice Checkbox.<br />
 * The Nice Checkbox inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {StaticText} label - The statictext used as a label
 * @property {CheckBox} checkbox - The box
 * @property {float[]} color - The color [R,G,B,A]
 * @property {NiceCheckbox~onClick} onClick - Function to execute when clicked
 */

/**
 * The function to execute when the button is clicked.
 * @callback NiceCheckbox~onClick
 * @memberof NiceCheckbox
 */

/**
 * Creates a checkbox which can be colored, and changes color on hover
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group}		container		- The ScriptUI Object which will contain and display the button.
 * @param {string}					[text]			- The label of the button.
 * @param {string}					[helpTip]			- The helptip.
 * @param {color}					[color=DuAEF.DuJS.Color.Colors.LIGHT_GREY]			- The color of the text
 * @return {SimpleCheckBox}					The image checkbox created.
 */
DuAEF.DuScriptUI.addSimpleCheckBox = function( container, text, helpTip, color )
{
    if ( color == undefined ) color = DuAEF.DuJS.Color.Colors.LIGHT_GREY;
    if ( helpTip == undefined ) helpTip = '';
    if ( text == undefined ) text = '';

    if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( text );
    if ( helpTip != '' ) DuAEF.DuScriptUI.uiStrings.push( helpTip );
    text = tr( text );
    helpTip = tr( helpTip );

    var niceCheckBox = container.add( 'group' );
    niceCheckBox.orientation = 'row';
    niceCheckBox.alignChildren = [ 'left', 'center' ];
    niceCheckBox.spacing = DuAEF.DuScriptUI.defaultSpacing;
    niceCheckBox.margins = 0;
    niceCheckBox.checkBox = niceCheckBox.add( 'checkbox', undefined, '' );
    niceCheckBox.label = niceCheckBox.add( 'statictext', undefined, text );
    niceCheckBox.onClick = function() {};
    niceCheckBox.checked = niceCheckBox.value = false;
    niceCheckBox.color = color;

    niceCheckBox.checkBox.helpTip = helpTip;
    niceCheckBox.label.helpTip = helpTip;

    DuAEF.DuScriptUI.setTextColor( niceCheckBox.label, niceCheckBox.color );

    /**
     * Checks or unchecks the button
     * @memberof SimpleCheckBox
     * @param {boolean} c	- The checked state
     */
    niceCheckBox.setChecked = function( c )
    {
        niceCheckBox.checked = niceCheckBox.value = c;
        niceCheckBox.checkBox.value = c;
    }

    niceCheckBox.labelClicked = function( e )
    {
        niceCheckBox.setChecked( !niceCheckBox.checked );
        DuAEF.Debug.safeRun(niceCheckBox.onClick);
    }

    niceCheckBox.checkBoxClicked = function( e )
    {
        niceCheckBox.checked = niceCheckBox.value = niceCheckBox.checkBox.value;
        DuAEF.Debug.safeRun(niceCheckBox.onClick);
    }

    niceCheckBox.highlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();
        DuAEF.DuScriptUI.setTextColor( niceCheckBox.label, DuAEF.DuJS.Color.Colors.RAINBOX_RED );
        DuAEF.DuScriptUI.highlightedControls.push( niceCheckBox );
    }

    niceCheckBox.dim = function( e )
    {
        DuAEF.DuScriptUI.setTextColor( niceCheckBox.label, niceCheckBox.color );
    }

    niceCheckBox.label.addEventListener( "mousedown", niceCheckBox.labelClicked, false );
    niceCheckBox.checkBox.onClick = niceCheckBox.checkBoxClicked;
    niceCheckBox.addEventListener( "mouseover", niceCheckBox.highlight );

    return niceCheckBox;
}
// ==================== |---------------------------| ====================
// ==================== | DuScriptUIFileSelectorLib | ====================
// ==================== |---------------------------| ====================


/**
 * @class
 * @name DuFolderSelector
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A "Browse" button for folders only, with an optional text field for the path.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addFolderSelector} to create a selector.<br />
 * The DuFolderSelector inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {string} path - The folder path, initialized with an empty string. Note that this may not point to an existing folder if the user entered an incorrect path in the text field.<br />
 * To be sure to get an existing folder, you can use the getFolder() method.
 * @property {DuEditText|null} editText - The text field, if any.
 * @property {DuButton} button - The "Browse" button.
 */

/**
 * Gets the selected folder.
 * @method
 * @memberof DuFolderSelector
 * @name getFolder
 * @return {Folder|null} The new Folder, if any. null if the Folder does not exist or the user has input an incorrect path.
 */

/**
 * Creates a folder selector with a field for the path and a browse button<br />
 * @memberof DuAEF.DuScriptUI
 * @param {Window|Panel|Group} container - The ScriptUI Object which will contain and display the panel.
 * @param {string} [text="Browse..."] - The text to display on the button.
 * @param {boolean} [textField=true] - Wether to show the text field for the path.
 * @param {string} [helpTip=''] - The helptip for this control.
 * @return {TabPanel} The panel.
 */
DuAEF.DuScriptUI.addFolderSelector = function ( container, text, textField, helpTip )
{
    text = def(text, "Browse...");
    textField = def(textField, true);
    helpTip = def(helpTip, '');

    var folderSelector = container.add('group');
    folderSelector.orientation = 'row';
    folderSelector.margins = 2;
    folderSelector.spacing = 0;

    folderSelector.path = '';

    folderSelector.button = DuAEF.DuScriptUI.addButton(
        folderSelector,
        text,
        DuAEF.DuBinary.toFile(w14_folder_m),
        helpTip,
        DuAEF.DuBinary.toFile(w14_folder_r)
        );
    folderSelector.button.alignment = ['left','fill'];

    folderSelector.editText = null;
    if (textField) {
        folderSelector.editText = DuAEF.DuScriptUI.addEditText(
            folderSelector,
            '',
            '',
            '',
            'Path...',
            helpTip,
            false
            );
        folderSelector.editText.alignment = ['fill','center'];

        folderSelector.editText.onChange = function () {
            folderSelector.path = folderSelector.editText.text;
        }
    }

    folderSelector.button.onClick = function () {
        var folder = Folder.selectDialog ("Select Folder");
        if (!folder) return;
        folderSelector.editText.setText(folder.fsName);
        folderSelector.path = folder.absoluteURI;
    }

    folderSelector.getFolder = function () {
        var folder = new Folder(folderSelector.path);
        if (folder.exists) return folder;
        else return null;
    }

    return folderSelector;
}// ==================== |-------------------| ====================
// ==================== | DuScriptUIFormLib | ====================
// ==================== |-------------------| ====================


/**
 * @class
 * @name Form
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Form.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addForm} to create a Form.<br />
 * The Form inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {Group} labels - The left vertical group
 * @property {Group} buttons - The right vertical group
 */

/**
 * Adds a field to the form
 * example: form.addField('Composition:','dropdownlist',['Composition1','Composition2'],'Select a composition')
 * @method
 * @memberof Form
 * @name addField
 * @param {string}			label		- The label text.
 * @param {string}			type		- The type of ScriptUI object to add (like 'button','edittext', etc.).
 * @param {object}			[value]		- The default value or content of the field added, depends on the type.
 * @param {string}			[helpTip]		- The helpTip of the form control.
 * @return {ScriptUI[]}		An array with at 0 the StaticText label, and at 1 the ScriptUI object of the type type, added to the form
 */

/**
 * Creates a layout to add forms to a UI, using ScriptUI groups.<br />
 * You can easily add controls/fields to this form using DuAEF.DuScriptUI.addField
 * @memberof DuAEF.DuScriptUI
 * @param {Window|Panel|Group}	container		- The ScriptUI Object which will contain and display the form.
 * @return {Form}		The custom Group containing the form.
 */
DuAEF.DuScriptUI.addForm = function( container )
{
    var mainGroup = container.add( 'group' );
    mainGroup.orientation = 'row';
    mainGroup.margins = 0;
    mainGroup.spacing = DuAEF.DuScriptUI.defaultSpacing;

    var labelsGroup = mainGroup.add( 'group' );
    labelsGroup.alignment = [ 'left', 'top' ];
    labelsGroup.orientation = 'column';
    labelsGroup.alignChildren = [ 'left', 'bottom' ];
    labelsGroup.spacing = DuAEF.DuScriptUI.defaultSpacing;

    var buttonsGroup = mainGroup.add( 'group' );
    buttonsGroup.alignment = [ 'fill', 'top' ];
    buttonsGroup.orientation = 'column';
    buttonsGroup.alignChildren = [ 'fill', 'fill' ];
    buttonsGroup.spacing = DuAEF.DuScriptUI.defaultSpacing;

    mainGroup.labels = labelsGroup;
    mainGroup.buttons = buttonsGroup;

    mainGroup.addEventListener( "mouseover", DuAEF.DuScriptUI.dimControls );

    mainGroup.addField = function( label, type, value, helpTip )
    {
        if ( helpTip == undefined ) helpTip = '';

        if ( label != '' ) DuAEF.DuScriptUI.uiStrings.push( label );
        if ( helpTip != '' ) DuAEF.DuScriptUI.uiStrings.push( helpTip );
        label = tr( label );
        helpTip = tr( helpTip );

        var control = null;
        var height = 20;
        if ( type == "DuButton" )
        {
            control = DuAEF.DuScriptUI.addButton( mainGroup.buttons, '', value[ 0 ], helpTip, value[ 1 ] );
            height = control.image.preferredSize[ 1 ];
        }
        else
        {
            control = mainGroup.buttons.add( type, undefined, value );
            control.helpTip = helpTip;
            height = control.preferredSize[ 1 ];
        }

        var l = mainGroup.labels.add( 'statictext', undefined, label );
        l.helpTip = helpTip;

        l.minimumSize.height = l.maximumSize.height = height;
        return [ l, control ];
    }

    return mainGroup;
}
// ==================== |-------------------| ====================
// ==================== | DuScriptUIHelpLib | ====================
// ==================== |-------------------| ====================


/**
 * The panel where the help is displayed
 */
DuAEF.DuScriptUI.helpPanel = DuAEF.DuScriptUI.createPopup( "Help" );

DuAEF.DuScriptUI.helpPanel.initialized = false;

DuAEF.DuScriptUI.initHelpPanel = function()
{
    if ( DuAEF.DuScriptUI.helpPanel.initialized ) return;

    DuAEF.DuScriptUI.helpPanel.pin(true);

    DuAEF.DuScriptUI.helpPanel.initialized = true;

    DuAEF.DuScriptUI.helpPanel.link = '';
    DuAEF.DuScriptUI.helpPanel.news = {};
    DuAEF.DuScriptUI.helpPanel.about = {};

    DuAEF.DuScriptUI.helpPanel.contents.margins = 2;
    DuAEF.DuScriptUI.helpPanel.contents.spacing = 0;
    DuAEF.DuScriptUI.helpPanel.contents.maximumSize.height = 500;
    DuAEF.DuScriptUI.helpPanel.contents.alignChildren = [ 'fill', 'fill' ];

    var tabPanel = DuAEF.DuScriptUI.addTabPanel( DuAEF.DuScriptUI.helpPanel.contents );

    var helpTab = tabPanel.addTab(
        "Help",
        DuAEF.DuBinary.toFile( w14_help_m ),
        '',
        DuAEF.DuBinary.toFile( w14_help_l )
    );
    var newsTab = tabPanel.addTab(
        "News",
        DuAEF.DuBinary.toFile( w14_news_m ),
        '',
        DuAEF.DuBinary.toFile( w14_news_l )
    );
    var aboutTab = tabPanel.addTab(
        "About",
        DuAEF.DuBinary.toFile( w14_help_m ),
        '',
        DuAEF.DuBinary.toFile( w14_help_l )
    );

    helpTab.build = function ( helpGroup ) {
        DuAEF.DuScriptUI.helpPanel.title = DuAEF.DuScriptUI.addStaticText( helpGroup, '', DuAEF.DuJS.Color.Colors.VERY_LIGHT_GREY );
        DuAEF.DuScriptUI.helpPanel.title.alignment = [ 'fill', 'top' ];

        DuAEF.DuScriptUI.helpPanel.help = helpGroup.add( 'edittext', undefined, '',
        {
            multiline: true
        } );
        DuAEF.DuScriptUI.helpPanel.help.alignment = [ 'fill', 'fill' ];

        DuAEF.DuScriptUI.helpPanel.helpMoreButton = DuAEF.DuScriptUI.addButton( helpGroup, "More...", DuAEF.DuBinary.toFile( w14_url_m ), "Read more details online", DuAEF.DuBinary.toFile( w14_url_l ) );
        DuAEF.DuScriptUI.helpPanel.helpMoreButton.alignment = ['fill','bottom'];

        DuAEF.DuScriptUI.helpPanel.helpMoreButton.onClick = function () { DuAEF.DuSystem.openURL( DuAEF.DuScriptUI.helpPanel.link ); };
        DuAEF.DuScriptUI.helpPanel.helpMoreButton.onAltClick = function () { DuAEF.DuSystem.openURL( 'https://bat-ultra-bunny.tumblr.com/' ); };
    }

    newsTab.build = function ( newsGroup ) {
        DuAEF.DuScriptUI.helpPanel.newsPanel = DuAEF.DuScriptUI.addRSSPanel(
            newsGroup,
            3600*24,
            DuAEF.newsServer,
            DuAEF.DuJS.Color.Colors.VERY_LIGHT_GRAY,
            DuAEF.newsArgs,
            DuAEF.newsUserAgentVersion
            );
    }

    aboutTab.build = function ( aboutGroup ) {
        DuAEF.DuScriptUI.helpPanel.title = DuAEF.DuScriptUI.addStaticText( aboutGroup, DuAEF.scriptName + " (v" + DuAEF.scriptVersion.fullVersion + ")", DuAEF.DuJS.Color.Colors.VERY_LIGHT_GREY );
        DuAEF.DuScriptUI.helpPanel.title.alignment = [ 'fill', 'top' ];

        DuAEF.DuScriptUI.helpPanel.about.help = aboutGroup.add( 'edittext', undefined, DuAEF.scriptAbout,
        {
            multiline: true
        } );
        DuAEF.DuScriptUI.helpPanel.about.help.alignment = [ 'fill', 'fill' ];

        DuAEF.DuScriptUI.helpPanel.moreButton = DuAEF.DuScriptUI.addButton( aboutGroup, "More...", DuAEF.DuBinary.toFile( w14_url_m ), "Read more details online", DuAEF.DuBinary.toFile( w14_url_l ) );
        DuAEF.DuScriptUI.helpPanel.moreButton.alignment = ['fill','bottom'];

        DuAEF.DuScriptUI.helpPanel.moreButton.onClick = function () { DuAEF.DuSystem.openURL( DuAEF.aboutURL ); };
        DuAEF.DuScriptUI.helpPanel.moreButton.onAltClick = function () { DuAEF.DuSystem.openURL( 'https://bat-ultra-bunny.tumblr.com/' ); };
    }

    var urlButtonsGroup = DuAEF.DuScriptUI.addGroup( DuAEF.DuScriptUI.helpPanel.contents, 'row' );
    urlButtonsGroup.alignment = [ 'fill', 'bottom' ];

    var socialButtonsGroup1 = DuAEF.DuScriptUI.addGroup( urlButtonsGroup, 'column' );
    socialButtonsGroup1.alignment= ['fill','bottom'];
    if (DuAEF.forumURL != '')
    {
        DuAEF.DuScriptUI.helpPanel.forumButton = DuAEF.DuScriptUI.addButton( socialButtonsGroup1, "Forum", DuAEF.DuBinary.toFile( w18_forum_l ), "Visit our forum", DuAEF.DuBinary.toFile( w18_forum_r ) );
        DuAEF.DuScriptUI.helpPanel.forumButton.onClick = function ()
        {
            DuAEF.DuSystem.openURL( DuAEF.forumURL );
        }
    }
    if (DuAEF.featureRequestURL != '') DuAEF.DuScriptUI.addFeatureRequestButton(socialButtonsGroup1, true);

    var socialButtonsGroup2 = DuAEF.DuScriptUI.addGroup( urlButtonsGroup, 'column' );
    socialButtonsGroup2.alignment= ['fill','bottom'];
    if (DuAEF.chatURL != '')
    {
        DuAEF.DuScriptUI.helpPanel.discordButton = DuAEF.DuScriptUI.addButton( socialButtonsGroup2, "Live chat", DuAEF.DuBinary.toFile( w18_discord_l ), "Come and have a chat!", DuAEF.DuBinary.toFile( w18_discord_r ) );
        DuAEF.DuScriptUI.helpPanel.discordButton.onClick = function ()
        {
            DuAEF.DuSystem.openURL( DuAEF.chatURL );
        }
    }
    if (DuAEF.bugReportURL != '') DuAEF.DuScriptUI.addBugButton(socialButtonsGroup2, true);
       

    DuAEF.DuScriptUI.helpPanel.setPanel = function( panel )
    {
        if ( typeof panel === 'undefined' ) panel = 0;

        tabPanel.setCurrentIndex( panel )

        if ( panel == 0 )
        {
            if ( DuAEF.DuScriptUI.helpPanel.link != '' ) DuAEF.DuScriptUI.helpPanel.helpMoreButton.show();
            else DuAEF.DuScriptUI.helpPanel.helpMoreButton.hide();
        }
        else if ( panel == 2 )
        {
            if ( DuAEF.aboutURL != '' ) DuAEF.DuScriptUI.helpPanel.moreButton.show();
            else DuAEF.DuScriptUI.helpPanel.moreButton.hide();
        }
    }
}

/**
 * Updates the helpPopup with new information
 * @memberof DuAEF.DuScriptUI
 * @param {string} title - A title.
 * @param {string} text - The help text.
 * @param {string} link - The http link to a webpage
 */
DuAEF.DuScriptUI.updateHelpPopup = function( title, text, link )
{
    DuAEF.DuScriptUI.initHelpPanel();
    if ( typeof link === 'undefined' ) link = '';

    if ( text == '' ) return;

    if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( text );
    if ( title != '' ) DuAEF.DuScriptUI.uiStrings.push( title );
    text = tr( text );
    title = tr( title );

    DuAEF.DuScriptUI.helpPanel.setPanel( 0 );

    DuAEF.DuScriptUI.helpPanel.title.text = title;
    DuAEF.DuScriptUI.helpPanel.help.text = text;
    DuAEF.DuScriptUI.helpPanel.link = link;

    DuAEF.DuScriptUI.helpPanel.layout.layout( true );
    DuAEF.DuScriptUI.helpPanel.layout.resize();
}

/**
 * Shows the help popup
 * @memberof DuAEF.DuScriptUI
 */
DuAEF.DuScriptUI.showHelp = function()
{
    DuAEF.DuScriptUI.initHelpPanel();
    DuAEF.DuScriptUI.helpPanel.setPanel( 0 );
    DuAEF.DuScriptUI.helpPanel.show();
}

/**
 * Shows the news popup
 * @memberof DuAEF.DuScriptUI
 */
DuAEF.DuScriptUI.showNews = function()
{
    DuAEF.DuScriptUI.initHelpPanel();
    DuAEF.DuScriptUI.helpPanel.setPanel( 1 );
    DuAEF.DuScriptUI.helpPanel.newsPanel.updateRSS();
    DuAEF.DuScriptUI.helpPanel.show();
}

/**
 * Shows the about popup
 * @memberof DuAEF.DuScriptUI
 */
DuAEF.DuScriptUI.showAbout = function()
{
    DuAEF.DuScriptUI.initHelpPanel();
    DuAEF.DuScriptUI.helpPanel.setPanel( 2 );
    DuAEF.DuScriptUI.helpPanel.show();
}

/**
 * @class
 * @name DuVersionButton
 * @extends DuButton
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A Button displaying the version of the script and redirecting to its website.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addVersionButton} to create a Version Button.<br />
 */

/**
 * Creates a button displaying the version of the script and redirecting to the about url.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group} container - The ScriptUI Object which will contain and display the button.
 * @param {string} [image=DuAEF.scriptIcon] - The path to the icon. Default: empty string
 * @param {string} [imageOver==DuAEF.scriptIconOver] - The path to an icon displayed when the mouse is over the button.
 * @return {DuVersionButton} The version button created.
 */
DuAEF.DuScriptUI.addVersionButton = function( container, image, imageOver )
{
    image = def(image, DuAEF.scriptIcon);
    imageOver = def(imageOver, DuAEF.scriptIconOver);

    if (image == '') image = null;
    if (imageOver == '') imageOver = null;

    var button = DuAEF.DuScriptUI.addButton(
        container,
        image ? '' : 'v' + DuAEF.scriptVersion.fullVersion,
        image,
        DuAEF.companyName + '\n' + DuAEF.scriptName + ' v' + DuAEF.scriptVersion.fullVersion,
        imageOver,
        false,
        false
    )

    if (image) button.add('statictext', undefined, 'v' + DuAEF.scriptVersion.fullVersion);

    if (DuAEF.aboutURL != '') button.onClick = function() {
        DuAEF.DuSystem.openURL(DuAEF.aboutURL);
        };

    return button;
}

/**
 * Creates a button opening the bug report url.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group} container - The ScriptUI Object which will contain and display the button.
 * @param {bool} [showLabel=false] - When true, the button includes a "Bug Report" label.
 * @return {DuButton} The bug button created.
 */
DuAEF.DuScriptUI.addBugButton = function( container, showLabel )
{
    showLabel = def(showLabel, false);

    var label = "Bug Report";
    var helpTip = "Bug Report\nTell us what's wrong!";
    DuAEF.DuScriptUI.uiStrings.push(label);
    DuAEF.DuScriptUI.uiStrings.push(helpTip);
    label = tr(label);
    helpTip = tr(helpTip);

    var button = DuAEF.DuScriptUI.helpPanel.bugReportButton = DuAEF.DuScriptUI.addButton(
        container,
        showLabel ? label : "",
        DuAEF.DuBinary.toFile( w18_bugreport_l ),
        helpTip,
        DuAEF.DuBinary.toFile( w18_bugreport_r ) );
    button.onClick = function ()
    {
        DuAEF.DuSystem.openURL( DuAEF.bugReportURL );
    }
    return button;
}

/**
 * Creates a button opening the feature request url.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group} container - The ScriptUI Object which will contain and display the button.
 * @param {bool} [showLabel=false] - When true, the button includes a "Feature Request" label.
 * @return {DuButton} The feature request button created.
 */
DuAEF.DuScriptUI.addFeatureRequestButton = function( container, showLabel )
{
    showLabel = def(showLabel, false);

    var label = "Feature Request";
    var helpTip = "Feature Request\nRequest something new";
    DuAEF.DuScriptUI.uiStrings.push(label);
    DuAEF.DuScriptUI.uiStrings.push(helpTip);
    label = tr(label);
    helpTip = tr(helpTip);

    var button = DuAEF.DuScriptUI.helpPanel.bugReportButton = DuAEF.DuScriptUI.addButton(
        container,
        showLabel ? label : "",
        DuAEF.DuBinary.toFile( w18_featurerequest_l ),
        helpTip,
        DuAEF.DuBinary.toFile( w18_featurerequest_r ) );
    button.onClick = function ()
    {
        DuAEF.DuSystem.openURL( DuAEF.featureRequestURL );
    }
    return button;
}

/**
 * Creates a button opening the help panel.
 * @memberof DuAEF.DuScriptUI
 * @param {Panel|Window|Group} container - The ScriptUI Object which will contain and display the button.
 * @param {bool} [showLabel=false] - When true, the button includes a "Help" label.
 * @param {bool} [opensPanel=false] - The help button opens a help panel instead of the link to the documentation
 * @return {DuButton} The help button created.
 */
DuAEF.DuScriptUI.addHelpButton = function( container, showLabel, opensPanel )
{
    showLabel = def(showLabel, false);
    opensPanel = def(opensPanel, false);

    var label = "Help";
    var helpTip = "Get Help";
    DuAEF.DuScriptUI.uiStrings.push(label);
    DuAEF.DuScriptUI.uiStrings.push(helpTip);
    label = tr(label);
    helpTip = tr(helpTip);

    var button = DuAEF.DuScriptUI.helpPanel.bugReportButton = DuAEF.DuScriptUI.addButton(
        container,
        showLabel ? label : "",
        DuAEF.DuBinary.toFile( w18_help_l ),
        helpTip,
        DuAEF.DuBinary.toFile( w18_help_r )
    );

    button.onClick = function ()
    {
        if (opensPanel) DuAEF.DuScriptUI.showAbout();
        else DuAEF.DuSystem.openURL( DuAEF.docURL );
    }
    return button;
}// ==================== |--------------------------| ====================
// ==================== | DuScriptUILayerPickerLib | ====================
// ==================== |--------------------------| ====================


/**
 * @class
 * @name LayerPicker
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A picker for layers with labels.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.createLayerPicker} to create a picker.<br />
 * The picker inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {LayerSelector[]} selectors  - The layer selectors
 * @property {string[]} inputs - The labels texts
 */

/**
 * Empties the LayerPicker
 * @method
 * @memberof LayerPicker
 * @name removeAll
 */

/**
 * Adds a new line on the LayerPicker
 * @method
 * @memberof LayerPicker
 * @name addSelector
 * @return {LayerSelector} The added LayerSelector
 */

/**
 * Creates a two-columns group to allow the user to pick layers
 * @memberof DuAEF.DuScriptUI
 * @param {Window|Panel|Group} container - The ScriptUI Object which will contain and display the selector.
 * @return {LayerPicker} The picker.
 */
DuAEF.DuScriptUI.addLayerPicker = function( container )
{
    var name = "Select layers";
    DuAEF.DuScriptUI.uiStrings.push( name );
    name = tr( name );
    var layerPicker = container.add( 'group' );
    layerPicker.orientation = 'row';
    layerPicker.margins = 0;
    layerPicker.spacing = DuAEF.DuScriptUI.defaultSpacing;
    layerPicker.alignment = [ 'fill', 'top' ];

    layerPicker.labelsGroup = layerPicker.add( 'group' );
    layerPicker.labelsGroup.orientation = 'column';
    layerPicker.labelsGroup.margins = 0;
    layerPicker.labelsGroup.spacing = DuAEF.DuScriptUI.defaultSpacing;
    layerPicker.labelsGroup.alignment = [ 'left', 'fill' ];
    layerPicker.labelsGroup.alignChildren = [ 'left', 'fill' ];

    layerPicker.selectorsGroup = layerPicker.add( 'group' );
    layerPicker.selectorsGroup.orientation = 'column';
    layerPicker.selectorsGroup.margins = 0;
    layerPicker.selectorsGroup.spacing = DuAEF.DuScriptUI.defaultSpacing;
    layerPicker.selectorsGroup.alignment = [ 'fill', 'fill' ];

    layerPicker.selectors = [];
    layerPicker.inputs = [];

    layerPicker.removeAll = function()
    {
        layerPicker.selectors = [];
        layerPicker.inputs = [];
        for ( var i = layerPicker.labelsGroup.children.length - 1; i >= 0; i-- )
        {
            layerPicker.labelsGroup.remove( layerPicker.labelsGroup.children[ i ] );
            layerPicker.selectorsGroup.remove( layerPicker.selectorsGroup.children[ i ] );
        }
    }

    layerPicker.addSelector = function( inputLabel )
    {
        DuAEF.DuScriptUI.uiStrings.push( inputLabel );
        inputLabel = tr( inputLabel );
        var l = layerPicker.labelsGroup.add( 'statictext', undefined, inputLabel );

        var sel = DuAEF.DuScriptUI.addLayerSelector( layerPicker.selectorsGroup );
        layerPicker.selectors.push( sel );
        sel.alignment = [ 'fill', 'fill' ];


        return sel;
    }

    return layerPicker;
}

/**
 * @class
 * @name LayerPickerDialog
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A picker for layers with labels.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.createLayerPicker} to create a picker.<br />
 * The picker inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {LayerPicker} layerPicker The layer picker inside the dialog.
 * @property {bool} accepted This property is true if the user has clicked the OK button, false otherwise.
 */

/**
 * Empties the LayerPicker<br />
 * This is a convenience function equivalent to {@link LayerPickerDialog.layerPicker.removeAll}.
 * @method
 * @memberof LayerPickerDialog
 * @name removeAll
 */

/**
 * Adds a new line on the LayerPicker
 * This is a convenience function equivalent to {@link LayerPickerDialog.layerPicker.addSelector}.
 * @method
 * @memberof LayerPickerDialog
 * @name addSelector
 * @return {LayerSelector} The added LayerSelector
 */

/**
 * Gets the layers picked by the user.
 * @method
 * @memberof LayerPickerDialog
 * @name getLayers
 * @return {Layer[]} The layers picked (null if the user has set none in the selector), in the display order.
 */

/**
 * Gets the layers picked by the user.
 * @method
 * @memberof LayerPickerDialog
 * @name getLayers
 * @return {Layer[]} The layers picked (null if the user has set none in the selector), in the display order.
 */

/**
 * The function called when the dialog is accepted.
 * @callback LayerPickerDialog~onAccept
 * @memberof LayerPickerDialog
 */

/**
 * Creates a dialog with a LayerPicker<br />
 * Use {@link DuAEF.DuScriptUI.showUI} to show it after creation.
 * @memberof DuAEF.DuScriptUI
 * @param {string} title - The title of the dialog.
 * @return {LayerPickerDialog} The dialog window.
 */
DuAEF.DuScriptUI.createLayerPickerDialog = function( title )
{
    var dialog = new Window( 'palette', title, undefined,
    {
        resizeable: true
    } );
    dialog.minimumSize.width = 300;

    dialog.margins = DuAEF.DuScriptUI.defaultMargins;
    dialog.orientation = 'column';

    dialog.layerPicker = DuAEF.DuScriptUI.addLayerPicker( dialog );

    dialog.onAccept = function() {};
    dialog.removeAll = dialog.layerPicker.removeAll;
    dialog.addSelector = dialog.layerPicker.addSelector;
    dialog.getLayers = function()
    {
        var layers = [];
        for ( var i = 0, num = dialog.layerPicker.selectors.length; i < num; i++ )
        {
            var sel = dialog.layerPicker.selectors[ i ];
            layers.push( sel.getLayer() );
        }
        return layers;
    }

    dialog.accepted = false;

    var validGroup = dialog.add( 'group' );
    validGroup.alignment = [ 'fill', 'bottom' ];
    var validGroupCancelButton = DuAEF.DuScriptUI.addButton( validGroup, "Cancel", DuAEF.DuBinary.toFile( w25_back_m ), "Cancel", DuAEF.DuBinary.toFile( w25_back_r ) );
    var validGroupValidButton = DuAEF.DuScriptUI.addButton( validGroup, "OK", DuAEF.DuBinary.toFile( w25_check_g ), "OK", DuAEF.DuBinary.toFile( w25_check_r ) );

    validGroupValidButton.onClick = function()
    {
        dialog.accepted = true;
        dialog.hide();
        dialog.onAccept();
    };
    validGroupCancelButton.onClick = function()
    {
        dialog.hide();
    };

    return dialog;
}
// ==================== |-----------------------| ====================
// ==================== | DuScriptUISelectorLib | ====================
// ==================== |-----------------------| ====================


/**
 * @class
 * @name Selector
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A drop down selector.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addSelector} to create a Selector.<br />
 * The Selector inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {string} image - The path to the current image (or a PNG as a string representation)
 * @property {Image} icon - The Image currently displayed
 * @property {StaticText} label - The current text
 * @property {DuButton[]} items  - The buttons
 * @property {int} index  - The current index
 * @property {string} text  - The current text
 * @property {Selector~onChange} onChange  - The function to execute when the index changes.<br />
 * You can set your own function here, which must take no argument.<br />
 * The method is called after the index has changed.
 * @property {Selector~onRefresh} onRefresh  - The function to execute when the refresh button is clicked.<br />
 * You can set your own function here, which must take no argument.
 */

/**
 * The function to execute when the index changes.<br />
 * The method is called after the index has changed.
 * @callback Selector~onChange
 * @memberof Selector
 */

/**
 * The function to execute when the refresh button is clicked.
 * @callback Selector~onRefresh
 * @memberof Selector
 */

/**
 * Adds a new button to the selector
 * @method
 * @memberof Selector
 * @name addButton
 * @param {string} text - The text displayed by the button
 * @param {string} image - The icon, either a path to the file or a PNG represented as a string.
 * @param {string} helpTip - The help tip
 * @param {string} imageOver - The roll over icon, either a path to the file or a PNG represented as a string.
 * @param {string[][]} items - The items in the selector in the form [text, image, helpTip, imageOver].
 */

/**
 * Removes all buttons from the selector. This is the same as {@link Selector.clear}.
 * @method
 * @memberof Selector
 * @name removeAll
 */

/**
 * Removes all buttons from the selector. This is the same as {@link Selector.removeAll}.
 * @method
 * @memberof Selector
 * @name clear
 */

/**
 * Changes the selection and the current index of the selector
 * @method
 * @memberof Selector
 * @name setCurrentIndex
 * @param {int} index - The new index
 */

/**
 * Changes the selection and the current index of the selector, using the text of the selection
 * @method
 * @memberof Selector
 * @name setCurrentText
 * @param {string} text - The text to select
 */

/**
 * Creates a drop down selector, using image buttons
 * @memberof DuAEF.DuScriptUI
 * @param {Window|Panel|Group} container - The ScriptUI Object which will contain and display the selector.
 * @param {bool} [addRefreshButton=false] - When true, the selector includes a refresh button. Add your function to refresh it with the onRefresh callback.
 * @return {Selector} - The selector
 */
DuAEF.DuScriptUI.addSelector = function( container, addRefreshButton )
{
    var selector = container.add( 'group' );
    selector.orientation = 'row';
    selector.margins = 2;
    selector.spacing = 0;
    selector.alignment = [ 'fill', 'top' ];
    selector.alignChildren = [ 'center', 'center' ];
    selector.mainGroup = selector.add( 'group' );
    selector.mainGroup.orientation = 'row';
    selector.mainGroup.margins = 0;
    selector.mainGroup.spacing = 5;
    selector.mainGroup.alignment = [ 'fill', 'fill' ];
    selector.mainGroup.alignChildren = [ 'center', 'center' ];
    DuAEF.DuScriptUI.setBackgroundColor( selector, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );

    if (addRefreshButton)
    {
        selector.refreshImage = DuAEF.DuBinary.toFile( w14_update_m );
        selector.refreshImageOver = DuAEF.DuBinary.toFile( w14_update_l );
        if ( DuAEF.DuAE.App.hasFilesAndNetworkAccess ) selector.refreshButton = selector.add( 'image', undefined, selector.refreshImage );
        else selector.refreshButton = selector.add( 'statictext', undefined, 'R' );
        selector.refreshButton.alignment = [ 'right', 'center' ];
    }


    selector.addButton = function( text, image, helpTip, imageOver )
    {
        if ( !text ) text = '-';
        if ( !image ) image = '';
        if ( !helpTip ) helpTip = '';
        if ( !imageOver ) imageOver = '';

        if ( text != '' ) DuAEF.DuScriptUI.uiStrings.push( text );
        if ( helpTip != '' ) DuAEF.DuScriptUI.uiStrings.push( helpTip );
        text = tr( text );
        helpTip = tr( helpTip );

        var size = text.length * 7;
        if ( selector.label.minimumSize.width < size ) selector.label.minimumSize.width = size;

        var index = selector.items.length;
        selector.items.push( [ text, image, helpTip, imageOver ] );
        var button = DuAEF.DuScriptUI.addButton( selector.popup.buttons, text, image, helpTip, imageOver );
        button.onClick = function()
        {
            selector.setCurrentIndex( index );
            selector.popup.hide();
        };
        if ( button.icon ) button.icon.alignment = [ 'left', 'center' ];
    }

    selector.removeAll = function()
    {
        selector.items = [];
        selector.setCurrentIndex( 0 );
        for ( var i = selector.popup.buttons.children.length - 1; i >= 0; i-- )
        {
            selector.popup.buttons.remove( selector.popup.buttons.children[ i ] );
        }
    }
    selector.clear = selector.removeAll;

    selector.setCurrentIndex = function( index )
    {
        if ( index < 0 ) return;
        if ( index >= selector.items.length ) return;

        var item = selector.items[ index ];

        if ( !item ) return;

        selector.image = item[ 1 ];
        if ( selector.image != '' )
        {
            selector.icon.image = selector.image;
            selector.icon.helpTip = item[ 2 ];
        }
        selector.label.helpTip = item[ 2 ];
        selector.label.text = item[ 0 ];
        selector.imageOver = item[ 3 ];

        selector.index = index;

        selector.text = item[ 0 ];

        selector.onChange();
    }

    selector.setCurrentText = function( text )
    {
        for (var i = 0, n = selector.items.length; i < n; i++)
        {
            if (selector.items[i][0] == text)
            {
                selector.setCurrentIndex(i);
                break;
            }
        }
    }

    selector.menuImage = DuAEF.DuBinary.toFile( w14_menu_m );
    selector.menuImageOver = DuAEF.DuBinary.toFile( w14_menu_l );
    if ( DuAEF.DuAE.App.hasFilesAndNetworkAccess ) selector.menuButton = selector.mainGroup.add( 'image', undefined, selector.menuImage );
    else selector.menuButton = selector.mainGroup.add( 'statictext', undefined, 'M' );
    selector.menuButton.alignment = [ 'left', 'center' ];

    selector.image = '';
    selector.icon = selector.mainGroup.add( 'image' );
    selector.icon.alignment = [ 'left', 'center' ];

    selector.label = selector.mainGroup.add( 'statictext', undefined, '' );
    selector.label.helpTip = '';
    selector.label.alignment = [ 'fill', 'center' ];

    if ( DuAEF.DuAE.App.version.version > 11 )
    {
        selector.fillerR = selector.mainGroup.add( 'statictext', undefined, "" );
        selector.fillerR.alignment = [ 'fill', 'fill' ];
    }

    selector.imageOver = '';

    selector.popup = new Window( 'palette', '', undefined,
    {
        borderless: true
    } );
    selector.popup.margins = 2;
    selector.popup.spacing = 0;
    selector.popup.closeButton = DuAEF.DuScriptUI.addButton( selector.popup, "Cancel" );
    selector.popup.closeButton.onClick = function()
    {
        selector.popup.hide();
    };
    selector.popup.buttons = selector.popup.add( 'group' );
    selector.popup.buttons.orientation = 'column';
    selector.popup.buttons.margins = 0;
    selector.popup.buttons.spacing = 0;
    selector.popup.onDeactivate = function()
    {
        try
        {
            selector.popup.hide();
        }
        catch ( e )
        {}
    };

    selector.items = [];
    selector.index = -1;


    selector.clicked = function( e )
    {
        var popup = false;

        if ( e.target === selector.menuButton ) popup = true;
        if ( e.altKey ) popup = true;

        if ( popup )
        {
            if ( DuAEF.DuAE.App.version.version < 11 || DuAEF.DuAE.App.version.version >= 12 )
            {
                var x = e.screenX - e.clientX;
                var y = e.screenY - e.clientY;
                selector.popup.location = [ x, y ];
            }
            selector.popup.show();
        }
        else
        {
            var index = selector.index;
            if ( index == selector.items.length - 1 ) index = 0;
            else index++;
            selector.setCurrentIndex( index );
        }
    }

    selector.refreshed = function ( e )
    {
        selector.onRefresh();
    }

    selector.highlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();
        selector.menuButton.image = selector.menuImageOver;
        DuAEF.DuScriptUI.setTextColor( selector.label, DuAEF.DuJS.Color.Colors.VERY_LIGHT_GREY );
        DuAEF.DuScriptUI.setBackgroundColor( selector, DuAEF.DuJS.Color.Colors.DARK_GREY );
        if ( selector.imageOver != '' ) selector.icon.image = selector.imageOver;
        DuAEF.DuScriptUI.highlightedControls.push( selector );
    }

    selector.refreshHighlight = function( e )
    {
        e.stopPropagation();
        DuAEF.DuScriptUI.dimControls();
        if ( DuAEF.DuAE.App.hasFilesAndNetworkAccess ) selector.refreshButton.image = selector.refreshImageOver;
        DuAEF.DuScriptUI.highlightedControls.push( selector );
    }

    selector.dim = function( e )
    {
        selector.menuButton.image = selector.menuImage;
        DuAEF.DuScriptUI.setTextColor( selector.label, DuAEF.DuJS.Color.Colors.LIGHT_GREY );
        DuAEF.DuScriptUI.setBackgroundColor( selector, DuAEF.DuJS.Color.Colors.VERY_DARK_GREY );
        if ( selector.image != '' ) selector.icon.image = selector.image;
        if ( DuAEF.DuAE.App.hasFilesAndNetworkAccess ) selector.refreshButton.image = selector.refreshImage;
    }

    if ( DuAEF.DuAE.App.version.version >= 11 && DuAEF.DuAE.App.version.version < 12 )
    {
        selector.label.addEventListener( "mouseover", selector.highlight );
    }
    else
    {
        selector.mainGroup.addEventListener( "mouseover", selector.highlight );
        if (addRefreshButton) selector.refreshButton.addEventListener( "mouseover", selector.refreshHighlight );
    }
    selector.mainGroup.addEventListener( "click", selector.clicked, true );
    if (addRefreshButton) selector.refreshButton.addEventListener( "click", selector.refreshed );

    selector.onChange = function() {};
    selector.onRefresh = function (){};

    return selector;
}

/**
 * @class
 * @name LayerSelector
 * @classdesc For use with {@link DuAEF.DuScriptUI}.<br />
 * A drop down selector.<br />
 * This is not a real class, and cannot be instanciated.<br />
 * Use {@link DuAEF.DuScriptUI.addLayerSelector} to create a Selector.<br />
 * The Selector inherits the Group object from ScriptUI and has all of its properties and methods.
 * @property {int} [index=0]  - The current layer index, 0 if None
 * @property {CompItem|null} [comp=null] - The composition linked to the selector.<br />
 * If set to null, the seletor will use the current active composition.
 * @property {boolean} [selectedOnly=false] - True to list only selected layers in the composition
 * @property {Selector~onChange} onChange  - The function to execute when the index changes.<br />
 * You can set your own function here, which must take no argument.<br />
 * The method is called after the index has changed.
 */

/**
 * The function to execute when the index changes.<br />
 * The method is called after the index has changed.
 * @callback LayerSelector~onChange
 * @memberof LayerSelector
 */

/**
 * Changes the selection and the current layer index of the selector
 * @method
 * @memberof LayerSelector
 * @name setCurrentIndex
 * @param {int} index - The new layer index
 */

/**
 * Force the refresh of the layer list
 * @method
 * @memberof LayerSelector
 * @name refresh
 */

/**
 * Creates a drop down selector for layers
 * @memberof DuAEF.DuScriptUI
 * @param {Window|Panel|Group} container - The ScriptUI Object which will contain and display the selector.
 * @return {Selector} - The selector
 */
DuAEF.DuScriptUI.addLayerSelector = function( container )
{
    var selector = container.add( 'group' );
    selector.orientation = 'row'