diff --git a/archived/daemon-test.sh b/archived/daemon-test.sh
deleted file mode 100644
index f1e4e469f5a27ac7f57f1466343fc262e7244b7e..0000000000000000000000000000000000000000
--- a/archived/daemon-test.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/bash
-# pacman -S cdrkit qemu-base
-
-workdir=./data
-mkdir -p "$workdir"
-cd "$workdir"
-mkdir -p base vm tmp
-
-function generate_metadata () {
-    local name=$1
-    echo "local-hostname: $name"
-}
-function generate_userdata () {
-    local username=$1
-    local password=$2
-    local name=$3
-    # TODO: allow public key?
-    echo "#cloud-config
-system_info:
-  default_user:
-    name: $username
-    home: /home/$username
-
-password: $password
-chpasswd: { expire: False }
-hostname: $name
-
-# configure sshd to allow users logging in using password 
-# rather than just keys
-ssh_pwauth: True
-"
-}
-
-function create_vm_from () {
-    local name=$1
-    local cores=$2
-    local ram=$3
-    local disk=$4
-    local cloudimg=$5
-    local username=$6
-    local password=$7
-    local vnc=$8
-    local ports="$9"
-
-    [[ -f "base/focal-server-cloudimg-amd64.img" ]] || aria2c -o "base/focal-server-cloudimg-amd64.img" https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img || ! echo "Failed to download ubuntu cloudimg" || return $?
-
-    if [[ -f "vm/$name/disk.img" ]]; then
-        # simply start it
-        :
-    else
-        rm -rf "vm/$name" ; mkdir -p "vm/$name"
-        # create and start it
-        generate_metadata "$name" > "vm/$name/meta-data" || return $?
-        generate_userdata "$username" "$password" "$name" > "vm/$name/user-data" || return $?
-        ( cd "vm/$name" ; genisoimage  -output initimg.iso -volid cidata -joliet -rock user-data meta-data ) || return $?
-        qemu-img create -f qcow2 -F qcow2 -o backing_file="../../base/focal-server-cloudimg-amd64.img" "vm/$name/disk.img" || return $?
-        qemu-img resize "vm/$name/disk.img" "$disk" || return $?
-    fi
-    # start it
-    qemu-system-x86_64 -drive file="vm/$name/disk.img",if=virtio -cdrom "vm/$name/initimg.iso" -m "$ram" -cpu host -smp "$cores" -vnc "$vnc" --enable-kvm -bios /usr/share/edk2-ovmf/x64/OVMF.fd -net nic,model=rtl8139 -net user,hostfwd=tcp::30472-:22 &
-    pid=$!
-    echo PID=$pid
-    # TODO
-}
-
-[[ $2 = "" ]] && echo "Temp script to create VM. Usage: $0 MY_GOOD_VM11 :11" && exit 1
-create_vm_from "$1" 2 4G 50G __hardcoded__ r 1 "$2" __hardcoded__ || exit $?
-echo "DEBUG: sshpass -p 1 ssh -p 30472 r@localhost"
-
diff --git a/archived/http-root/base64zip.js b/archived/http-root/base64zip.js
deleted file mode 100644
index 26c293c5f55cf4aa3673d2e2cd431a35a2e32cf8..0000000000000000000000000000000000000000
--- a/archived/http-root/base64zip.js
+++ /dev/null
@@ -1,6986 +0,0 @@
-            // SRC: https://github.com/beatgammit/base64-js
-            (function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,n;return function(){function r(e,n,t){function o(f,i){if(!n[f]){if(!e[f]){var u="function"==typeof require&&require;if(!i&&u)return u(f,!0);if(a)return a(f,!0);var v=new Error("Cannot find module '"+f+"'");throw v.code="MODULE_NOT_FOUND",v}var d=n[f]={exports:{}};e[f][0].call(d.exports,function(r){var n=e[f][1][r];return o(n||r)},d,d.exports,r,e,n,t)}return n[f].exports}for(var a="function"==typeof require&&require,f=0;f<t.length;f++)o(t[f]);return o}return r}()({"/":[function(r,e,n){"use strict";n.byteLength=d;n.toByteArray=h;n.fromByteArray=p;var t=[];var o=[];var a=typeof Uint8Array!=="undefined"?Uint8Array:Array;var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,u=f.length;i<u;++i){t[i]=f[i];o[f.charCodeAt(i)]=i}o["-".charCodeAt(0)]=62;o["_".charCodeAt(0)]=63;function v(r){var e=r.length;if(e%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var n=r.indexOf("=");if(n===-1)n=e;var t=n===e?0:4-n%4;return[n,t]}function d(r){var e=v(r);var n=e[0];var t=e[1];return(n+t)*3/4-t}function c(r,e,n){return(e+n)*3/4-n}function h(r){var e;var n=v(r);var t=n[0];var f=n[1];var i=new a(c(r,t,f));var u=0;var d=f>0?t-4:t;for(var h=0;h<d;h+=4){e=o[r.charCodeAt(h)]<<18|o[r.charCodeAt(h+1)]<<12|o[r.charCodeAt(h+2)]<<6|o[r.charCodeAt(h+3)];i[u++]=e>>16&255;i[u++]=e>>8&255;i[u++]=e&255}if(f===2){e=o[r.charCodeAt(h)]<<2|o[r.charCodeAt(h+1)]>>4;i[u++]=e&255}if(f===1){e=o[r.charCodeAt(h)]<<10|o[r.charCodeAt(h+1)]<<4|o[r.charCodeAt(h+2)]>>2;i[u++]=e>>8&255;i[u++]=e&255}return i}function s(r){return t[r>>18&63]+t[r>>12&63]+t[r>>6&63]+t[r&63]}function l(r,e,n){var t;var o=[];for(var a=e;a<n;a+=3){t=(r[a]<<16&16711680)+(r[a+1]<<8&65280)+(r[a+2]&255);o.push(s(t))}return o.join("")}function p(r){var e;var n=r.length;var o=n%3;var a=[];var f=16383;for(var i=0,u=n-o;i<u;i+=f){a.push(l(r,i,i+f>u?u:i+f))}if(o===1){e=r[n-1];a.push(t[e>>2]+t[e<<4&63]+"==")}else if(o===2){e=(r[n-2]<<8)+r[n-1];a.push(t[e>>10]+t[e>>4&63]+t[e<<2&63]+"=")}return a.join("")}},{}]},{},[])("/")});
-            // SRC: https://github.com/solderjs/TextEncoderLite
-            function TextEncoderLite() {
-            }
-            function TextDecoderLite() {
-            }
-            
-            (function () {
-            'use strict';
-            
-            // Taken from https://github.com/feross/buffer/blob/master/index.js
-            // Thanks Feross et al! :-)
-            
-            function utf8ToBytes (string, units) {
-              units = units || Infinity
-              var codePoint
-              var length = string.length
-              var leadSurrogate = null
-              var bytes = []
-              var i = 0
-            
-              for (; i < length; i++) {
-                codePoint = string.charCodeAt(i)
-            
-                // is surrogate component
-                if (codePoint > 0xD7FF && codePoint < 0xE000) {
-                  // last char was a lead
-                  if (leadSurrogate) {
-                    // 2 leads in a row
-                    if (codePoint < 0xDC00) {
-                      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-                      leadSurrogate = codePoint
-                      continue
-                    } else {
-                      // valid surrogate pair
-                      codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
-                      leadSurrogate = null
-                    }
-                  } else {
-                    // no lead yet
-            
-                    if (codePoint > 0xDBFF) {
-                      // unexpected trail
-                      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-                      continue
-                    } else if (i + 1 === length) {
-                      // unpaired lead
-                      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-                      continue
-                    } else {
-                      // valid lead
-                      leadSurrogate = codePoint
-                      continue
-                    }
-                  }
-                } else if (leadSurrogate) {
-                  // valid bmp char, but last char was a lead
-                  if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-                  leadSurrogate = null
-                }
-            
-                // encode utf8
-                if (codePoint < 0x80) {
-                  if ((units -= 1) < 0) break
-                  bytes.push(codePoint)
-                } else if (codePoint < 0x800) {
-                  if ((units -= 2) < 0) break
-                  bytes.push(
-                    codePoint >> 0x6 | 0xC0,
-                    codePoint & 0x3F | 0x80
-                  )
-                } else if (codePoint < 0x10000) {
-                  if ((units -= 3) < 0) break
-                  bytes.push(
-                    codePoint >> 0xC | 0xE0,
-                    codePoint >> 0x6 & 0x3F | 0x80,
-                    codePoint & 0x3F | 0x80
-                  )
-                } else if (codePoint < 0x200000) {
-                  if ((units -= 4) < 0) break
-                  bytes.push(
-                    codePoint >> 0x12 | 0xF0,
-                    codePoint >> 0xC & 0x3F | 0x80,
-                    codePoint >> 0x6 & 0x3F | 0x80,
-                    codePoint & 0x3F | 0x80
-                  )
-                } else {
-                  throw new Error('Invalid code point')
-                }
-              }
-            
-              return bytes
-            }
-            
-            function utf8Slice (buf, start, end) {
-              var res = ''
-              var tmp = ''
-              end = Math.min(buf.length, end || Infinity)
-              start = start || 0;
-            
-              for (var i = start; i < end; i++) {
-                if (buf[i] <= 0x7F) {
-                  res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
-                  tmp = ''
-                } else {
-                  tmp += '%' + buf[i].toString(16)
-                }
-              }
-            
-              return res + decodeUtf8Char(tmp)
-            }
-            
-            function decodeUtf8Char (str) {
-              try {
-                return decodeURIComponent(str)
-              } catch (err) {
-                return String.fromCharCode(0xFFFD) // UTF 8 invalid char
-              }
-            }
-            
-            TextEncoderLite.prototype.encode = function (str) {
-              var result;
-            
-              if ('undefined' === typeof Uint8Array) {
-                result = utf8ToBytes(str);
-              } else {
-                result = new Uint8Array(utf8ToBytes(str));
-              }
-            
-              return result;
-            };
-            
-            TextDecoderLite.prototype.decode = function (bytes) {
-              return utf8Slice(bytes, 0, bytes.length);
-            }
-            
-            }());
-            
-            if(typeof module === "object" && module) {
-              module.exports.TextDecoderLite = TextDecoderLite;
-              module.exports.TextEncoderLite = TextEncoderLite;
-            }
-            // SRC: https://github.com/nodeca/pako
-            /* pako 1.0.10 nodeca/pako */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.pako = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-            'use strict';
-            
-            
-            var zlib_deflate = require('./zlib/deflate');
-            var utils        = require('./utils/common');
-            var strings      = require('./utils/strings');
-            var msg          = require('./zlib/messages');
-            var ZStream      = require('./zlib/zstream');
-            
-            var toString = Object.prototype.toString;
-            
-            /* Public constants ==========================================================*/
-            /* ===========================================================================*/
-            
-            var Z_NO_FLUSH      = 0;
-            var Z_FINISH        = 4;
-            
-            var Z_OK            = 0;
-            var Z_STREAM_END    = 1;
-            var Z_SYNC_FLUSH    = 2;
-            
-            var Z_DEFAULT_COMPRESSION = -1;
-            
-            var Z_DEFAULT_STRATEGY    = 0;
-            
-            var Z_DEFLATED  = 8;
-            
-            /* ===========================================================================*/
-            
-            
-            /**
-             * class Deflate
-             *
-             * Generic JS-style wrapper for zlib calls. If you don't need
-             * streaming behaviour - use more simple functions: [[deflate]],
-             * [[deflateRaw]] and [[gzip]].
-             **/
-            
-            /* internal
-             * Deflate.chunks -> Array
-             *
-             * Chunks of output data, if [[Deflate#onData]] not overridden.
-             **/
-            
-            /**
-             * Deflate.result -> Uint8Array|Array
-             *
-             * Compressed result, generated by default [[Deflate#onData]]
-             * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
-             * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you
-             * push a chunk with explicit flush (call [[Deflate#push]] with
-             * `Z_SYNC_FLUSH` param).
-             **/
-            
-            /**
-             * Deflate.err -> Number
-             *
-             * Error code after deflate finished. 0 (Z_OK) on success.
-             * You will not need it in real life, because deflate errors
-             * are possible only on wrong options or bad `onData` / `onEnd`
-             * custom handlers.
-             **/
-            
-            /**
-             * Deflate.msg -> String
-             *
-             * Error message, if [[Deflate.err]] != 0
-             **/
-            
-            
-            /**
-             * new Deflate(options)
-             * - options (Object): zlib deflate options.
-             *
-             * Creates new deflator instance with specified params. Throws exception
-             * on bad params. Supported options:
-             *
-             * - `level`
-             * - `windowBits`
-             * - `memLevel`
-             * - `strategy`
-             * - `dictionary`
-             *
-             * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-             * for more information on these.
-             *
-             * Additional options, for internal needs:
-             *
-             * - `chunkSize` - size of generated data chunks (16K by default)
-             * - `raw` (Boolean) - do raw deflate
-             * - `gzip` (Boolean) - create gzip wrapper
-             * - `to` (String) - if equal to 'string', then result will be "binary string"
-             *    (each char code [0..255])
-             * - `header` (Object) - custom header for gzip
-             *   - `text` (Boolean) - true if compressed data believed to be text
-             *   - `time` (Number) - modification time, unix timestamp
-             *   - `os` (Number) - operation system code
-             *   - `extra` (Array) - array of bytes with extra data (max 65536)
-             *   - `name` (String) - file name (binary string)
-             *   - `comment` (String) - comment (binary string)
-             *   - `hcrc` (Boolean) - true if header crc should be added
-             *
-             * ##### Example:
-             *
-             * ```javascript
-             * var pako = require('pako')
-             *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
-             *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
-             *
-             * var deflate = new pako.Deflate({ level: 3});
-             *
-             * deflate.push(chunk1, false);
-             * deflate.push(chunk2, true);  // true -> last chunk
-             *
-             * if (deflate.err) { throw new Error(deflate.err); }
-             *
-             * console.log(deflate.result);
-             * ```
-             **/
-            function Deflate(options) {
-              if (!(this instanceof Deflate)) return new Deflate(options);
-            
-              this.options = utils.assign({
-                level: Z_DEFAULT_COMPRESSION,
-                method: Z_DEFLATED,
-                chunkSize: 16384,
-                windowBits: 15,
-                memLevel: 8,
-                strategy: Z_DEFAULT_STRATEGY,
-                to: ''
-              }, options || {});
-            
-              var opt = this.options;
-            
-              if (opt.raw && (opt.windowBits > 0)) {
-                opt.windowBits = -opt.windowBits;
-              }
-            
-              else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
-                opt.windowBits += 16;
-              }
-            
-              this.err    = 0;      // error code, if happens (0 = Z_OK)
-              this.msg    = '';     // error message
-              this.ended  = false;  // used to avoid multiple onEnd() calls
-              this.chunks = [];     // chunks of compressed data
-            
-              this.strm = new ZStream();
-              this.strm.avail_out = 0;
-            
-              var status = zlib_deflate.deflateInit2(
-                this.strm,
-                opt.level,
-                opt.method,
-                opt.windowBits,
-                opt.memLevel,
-                opt.strategy
-              );
-            
-              if (status !== Z_OK) {
-                throw new Error(msg[status]);
-              }
-            
-              if (opt.header) {
-                zlib_deflate.deflateSetHeader(this.strm, opt.header);
-              }
-            
-              if (opt.dictionary) {
-                var dict;
-                // Convert data if needed
-                if (typeof opt.dictionary === 'string') {
-                  // If we need to compress text, change encoding to utf8.
-                  dict = strings.string2buf(opt.dictionary);
-                } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
-                  dict = new Uint8Array(opt.dictionary);
-                } else {
-                  dict = opt.dictionary;
-                }
-            
-                status = zlib_deflate.deflateSetDictionary(this.strm, dict);
-            
-                if (status !== Z_OK) {
-                  throw new Error(msg[status]);
-                }
-            
-                this._dict_set = true;
-              }
-            }
-            
-            /**
-             * Deflate#push(data[, mode]) -> Boolean
-             * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be
-             *   converted to utf8 byte sequence.
-             * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
-             *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
-             *
-             * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
-             * new compressed chunks. Returns `true` on success. The last data block must have
-             * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
-             * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you
-             * can use mode Z_SYNC_FLUSH, keeping the compression context.
-             *
-             * On fail call [[Deflate#onEnd]] with error code and return false.
-             *
-             * We strongly recommend to use `Uint8Array` on input for best speed (output
-             * array format is detected automatically). Also, don't skip last param and always
-             * use the same type in your code (boolean or number). That will improve JS speed.
-             *
-             * For regular `Array`-s make sure all elements are [0..255].
-             *
-             * ##### Example
-             *
-             * ```javascript
-             * push(chunk, false); // push one of data chunks
-             * ...
-             * push(chunk, true);  // push last chunk
-             * ```
-             **/
-            Deflate.prototype.push = function (data, mode) {
-              var strm = this.strm;
-              var chunkSize = this.options.chunkSize;
-              var status, _mode;
-            
-              if (this.ended) { return false; }
-            
-              _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
-            
-              // Convert data if needed
-              if (typeof data === 'string') {
-                // If we need to compress text, change encoding to utf8.
-                strm.input = strings.string2buf(data);
-              } else if (toString.call(data) === '[object ArrayBuffer]') {
-                strm.input = new Uint8Array(data);
-              } else {
-                strm.input = data;
-              }
-            
-              strm.next_in = 0;
-              strm.avail_in = strm.input.length;
-            
-              do {
-                if (strm.avail_out === 0) {
-                  strm.output = new utils.Buf8(chunkSize);
-                  strm.next_out = 0;
-                  strm.avail_out = chunkSize;
-                }
-                status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
-            
-                if (status !== Z_STREAM_END && status !== Z_OK) {
-                  this.onEnd(status);
-                  this.ended = true;
-                  return false;
-                }
-                if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {
-                  if (this.options.to === 'string') {
-                    this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
-                  } else {
-                    this.onData(utils.shrinkBuf(strm.output, strm.next_out));
-                  }
-                }
-              } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
-            
-              // Finalize on the last chunk.
-              if (_mode === Z_FINISH) {
-                status = zlib_deflate.deflateEnd(this.strm);
-                this.onEnd(status);
-                this.ended = true;
-                return status === Z_OK;
-              }
-            
-              // callback interim results if Z_SYNC_FLUSH.
-              if (_mode === Z_SYNC_FLUSH) {
-                this.onEnd(Z_OK);
-                strm.avail_out = 0;
-                return true;
-              }
-            
-              return true;
-            };
-            
-            
-            /**
-             * Deflate#onData(chunk) -> Void
-             * - chunk (Uint8Array|Array|String): output data. Type of array depends
-             *   on js engine support. When string output requested, each chunk
-             *   will be string.
-             *
-             * By default, stores data blocks in `chunks[]` property and glue
-             * those in `onEnd`. Override this handler, if you need another behaviour.
-             **/
-            Deflate.prototype.onData = function (chunk) {
-              this.chunks.push(chunk);
-            };
-            
-            
-            /**
-             * Deflate#onEnd(status) -> Void
-             * - status (Number): deflate status. 0 (Z_OK) on success,
-             *   other if not.
-             *
-             * Called once after you tell deflate that the input stream is
-             * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
-             * or if an error happened. By default - join collected chunks,
-             * free memory and fill `results` / `err` properties.
-             **/
-            Deflate.prototype.onEnd = function (status) {
-              // On success - join
-              if (status === Z_OK) {
-                if (this.options.to === 'string') {
-                  this.result = this.chunks.join('');
-                } else {
-                  this.result = utils.flattenChunks(this.chunks);
-                }
-              }
-              this.chunks = [];
-              this.err = status;
-              this.msg = this.strm.msg;
-            };
-            
-            
-            /**
-             * deflate(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to compress.
-             * - options (Object): zlib deflate options.
-             *
-             * Compress `data` with deflate algorithm and `options`.
-             *
-             * Supported options are:
-             *
-             * - level
-             * - windowBits
-             * - memLevel
-             * - strategy
-             * - dictionary
-             *
-             * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-             * for more information on these.
-             *
-             * Sugar (options):
-             *
-             * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
-             *   negative windowBits implicitly.
-             * - `to` (String) - if equal to 'string', then result will be "binary string"
-             *    (each char code [0..255])
-             *
-             * ##### Example:
-             *
-             * ```javascript
-             * var pako = require('pako')
-             *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
-             *
-             * console.log(pako.deflate(data));
-             * ```
-             **/
-            function deflate(input, options) {
-              var deflator = new Deflate(options);
-            
-              deflator.push(input, true);
-            
-              // That will never happens, if you don't cheat with options :)
-              if (deflator.err) { throw deflator.msg || msg[deflator.err]; }
-            
-              return deflator.result;
-            }
-            
-            
-            /**
-             * deflateRaw(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to compress.
-             * - options (Object): zlib deflate options.
-             *
-             * The same as [[deflate]], but creates raw data, without wrapper
-             * (header and adler32 crc).
-             **/
-            function deflateRaw(input, options) {
-              options = options || {};
-              options.raw = true;
-              return deflate(input, options);
-            }
-            
-            
-            /**
-             * gzip(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to compress.
-             * - options (Object): zlib deflate options.
-             *
-             * The same as [[deflate]], but create gzip wrapper instead of
-             * deflate one.
-             **/
-            function gzip(input, options) {
-              options = options || {};
-              options.gzip = true;
-              return deflate(input, options);
-            }
-            
-            
-            exports.Deflate = Deflate;
-            exports.deflate = deflate;
-            exports.deflateRaw = deflateRaw;
-            exports.gzip = gzip;
-            
-            },{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(require,module,exports){
-            'use strict';
-            
-            
-            var zlib_inflate = require('./zlib/inflate');
-            var utils        = require('./utils/common');
-            var strings      = require('./utils/strings');
-            var c            = require('./zlib/constants');
-            var msg          = require('./zlib/messages');
-            var ZStream      = require('./zlib/zstream');
-            var GZheader     = require('./zlib/gzheader');
-            
-            var toString = Object.prototype.toString;
-            
-            /**
-             * class Inflate
-             *
-             * Generic JS-style wrapper for zlib calls. If you don't need
-             * streaming behaviour - use more simple functions: [[inflate]]
-             * and [[inflateRaw]].
-             **/
-            
-            /* internal
-             * inflate.chunks -> Array
-             *
-             * Chunks of output data, if [[Inflate#onData]] not overridden.
-             **/
-            
-            /**
-             * Inflate.result -> Uint8Array|Array|String
-             *
-             * Uncompressed result, generated by default [[Inflate#onData]]
-             * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
-             * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
-             * push a chunk with explicit flush (call [[Inflate#push]] with
-             * `Z_SYNC_FLUSH` param).
-             **/
-            
-            /**
-             * Inflate.err -> Number
-             *
-             * Error code after inflate finished. 0 (Z_OK) on success.
-             * Should be checked if broken data possible.
-             **/
-            
-            /**
-             * Inflate.msg -> String
-             *
-             * Error message, if [[Inflate.err]] != 0
-             **/
-            
-            
-            /**
-             * new Inflate(options)
-             * - options (Object): zlib inflate options.
-             *
-             * Creates new inflator instance with specified params. Throws exception
-             * on bad params. Supported options:
-             *
-             * - `windowBits`
-             * - `dictionary`
-             *
-             * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-             * for more information on these.
-             *
-             * Additional options, for internal needs:
-             *
-             * - `chunkSize` - size of generated data chunks (16K by default)
-             * - `raw` (Boolean) - do raw inflate
-             * - `to` (String) - if equal to 'string', then result will be converted
-             *   from utf8 to utf16 (javascript) string. When string output requested,
-             *   chunk length can differ from `chunkSize`, depending on content.
-             *
-             * By default, when no options set, autodetect deflate/gzip data format via
-             * wrapper header.
-             *
-             * ##### Example:
-             *
-             * ```javascript
-             * var pako = require('pako')
-             *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
-             *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
-             *
-             * var inflate = new pako.Inflate({ level: 3});
-             *
-             * inflate.push(chunk1, false);
-             * inflate.push(chunk2, true);  // true -> last chunk
-             *
-             * if (inflate.err) { throw new Error(inflate.err); }
-             *
-             * console.log(inflate.result);
-             * ```
-             **/
-            function Inflate(options) {
-              if (!(this instanceof Inflate)) return new Inflate(options);
-            
-              this.options = utils.assign({
-                chunkSize: 16384,
-                windowBits: 0,
-                to: ''
-              }, options || {});
-            
-              var opt = this.options;
-            
-              // Force window size for `raw` data, if not set directly,
-              // because we have no header for autodetect.
-              if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
-                opt.windowBits = -opt.windowBits;
-                if (opt.windowBits === 0) { opt.windowBits = -15; }
-              }
-            
-              // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
-              if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
-                  !(options && options.windowBits)) {
-                opt.windowBits += 32;
-              }
-            
-              // Gzip header has no info about windows size, we can do autodetect only
-              // for deflate. So, if window size not set, force it to max when gzip possible
-              if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
-                // bit 3 (16) -> gzipped data
-                // bit 4 (32) -> autodetect gzip/deflate
-                if ((opt.windowBits & 15) === 0) {
-                  opt.windowBits |= 15;
-                }
-              }
-            
-              this.err    = 0;      // error code, if happens (0 = Z_OK)
-              this.msg    = '';     // error message
-              this.ended  = false;  // used to avoid multiple onEnd() calls
-              this.chunks = [];     // chunks of compressed data
-            
-              this.strm   = new ZStream();
-              this.strm.avail_out = 0;
-            
-              var status  = zlib_inflate.inflateInit2(
-                this.strm,
-                opt.windowBits
-              );
-            
-              if (status !== c.Z_OK) {
-                throw new Error(msg[status]);
-              }
-            
-              this.header = new GZheader();
-            
-              zlib_inflate.inflateGetHeader(this.strm, this.header);
-            
-              // Setup dictionary
-              if (opt.dictionary) {
-                // Convert data if needed
-                if (typeof opt.dictionary === 'string') {
-                  opt.dictionary = strings.string2buf(opt.dictionary);
-                } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
-                  opt.dictionary = new Uint8Array(opt.dictionary);
-                }
-                if (opt.raw) { //In raw mode we need to set the dictionary early
-                  status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);
-                  if (status !== c.Z_OK) {
-                    throw new Error(msg[status]);
-                  }
-                }
-              }
-            }
-            
-            /**
-             * Inflate#push(data[, mode]) -> Boolean
-             * - data (Uint8Array|Array|ArrayBuffer|String): input data
-             * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
-             *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
-             *
-             * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
-             * new output chunks. Returns `true` on success. The last data block must have
-             * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
-             * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
-             * can use mode Z_SYNC_FLUSH, keeping the decompression context.
-             *
-             * On fail call [[Inflate#onEnd]] with error code and return false.
-             *
-             * We strongly recommend to use `Uint8Array` on input for best speed (output
-             * format is detected automatically). Also, don't skip last param and always
-             * use the same type in your code (boolean or number). That will improve JS speed.
-             *
-             * For regular `Array`-s make sure all elements are [0..255].
-             *
-             * ##### Example
-             *
-             * ```javascript
-             * push(chunk, false); // push one of data chunks
-             * ...
-             * push(chunk, true);  // push last chunk
-             * ```
-             **/
-            Inflate.prototype.push = function (data, mode) {
-              var strm = this.strm;
-              var chunkSize = this.options.chunkSize;
-              var dictionary = this.options.dictionary;
-              var status, _mode;
-              var next_out_utf8, tail, utf8str;
-            
-              // Flag to properly process Z_BUF_ERROR on testing inflate call
-              // when we check that all output data was flushed.
-              var allowBufError = false;
-            
-              if (this.ended) { return false; }
-              _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
-            
-              // Convert data if needed
-              if (typeof data === 'string') {
-                // Only binary strings can be decompressed on practice
-                strm.input = strings.binstring2buf(data);
-              } else if (toString.call(data) === '[object ArrayBuffer]') {
-                strm.input = new Uint8Array(data);
-              } else {
-                strm.input = data;
-              }
-            
-              strm.next_in = 0;
-              strm.avail_in = strm.input.length;
-            
-              do {
-                if (strm.avail_out === 0) {
-                  strm.output = new utils.Buf8(chunkSize);
-                  strm.next_out = 0;
-                  strm.avail_out = chunkSize;
-                }
-            
-                status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
-            
-                if (status === c.Z_NEED_DICT && dictionary) {
-                  status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);
-                }
-            
-                if (status === c.Z_BUF_ERROR && allowBufError === true) {
-                  status = c.Z_OK;
-                  allowBufError = false;
-                }
-            
-                if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
-                  this.onEnd(status);
-                  this.ended = true;
-                  return false;
-                }
-            
-                if (strm.next_out) {
-                  if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {
-            
-                    if (this.options.to === 'string') {
-            
-                      next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
-            
-                      tail = strm.next_out - next_out_utf8;
-                      utf8str = strings.buf2string(strm.output, next_out_utf8);
-            
-                      // move tail
-                      strm.next_out = tail;
-                      strm.avail_out = chunkSize - tail;
-                      if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
-            
-                      this.onData(utf8str);
-            
-                    } else {
-                      this.onData(utils.shrinkBuf(strm.output, strm.next_out));
-                    }
-                  }
-                }
-            
-                // When no more input data, we should check that internal inflate buffers
-                // are flushed. The only way to do it when avail_out = 0 - run one more
-                // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
-                // Here we set flag to process this error properly.
-                //
-                // NOTE. Deflate does not return error in this case and does not needs such
-                // logic.
-                if (strm.avail_in === 0 && strm.avail_out === 0) {
-                  allowBufError = true;
-                }
-            
-              } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);
-            
-              if (status === c.Z_STREAM_END) {
-                _mode = c.Z_FINISH;
-              }
-            
-              // Finalize on the last chunk.
-              if (_mode === c.Z_FINISH) {
-                status = zlib_inflate.inflateEnd(this.strm);
-                this.onEnd(status);
-                this.ended = true;
-                return status === c.Z_OK;
-              }
-            
-              // callback interim results if Z_SYNC_FLUSH.
-              if (_mode === c.Z_SYNC_FLUSH) {
-                this.onEnd(c.Z_OK);
-                strm.avail_out = 0;
-                return true;
-              }
-            
-              return true;
-            };
-            
-            
-            /**
-             * Inflate#onData(chunk) -> Void
-             * - chunk (Uint8Array|Array|String): output data. Type of array depends
-             *   on js engine support. When string output requested, each chunk
-             *   will be string.
-             *
-             * By default, stores data blocks in `chunks[]` property and glue
-             * those in `onEnd`. Override this handler, if you need another behaviour.
-             **/
-            Inflate.prototype.onData = function (chunk) {
-              this.chunks.push(chunk);
-            };
-            
-            
-            /**
-             * Inflate#onEnd(status) -> Void
-             * - status (Number): inflate status. 0 (Z_OK) on success,
-             *   other if not.
-             *
-             * Called either after you tell inflate that the input stream is
-             * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
-             * or if an error happened. By default - join collected chunks,
-             * free memory and fill `results` / `err` properties.
-             **/
-            Inflate.prototype.onEnd = function (status) {
-              // On success - join
-              if (status === c.Z_OK) {
-                if (this.options.to === 'string') {
-                  // Glue & convert here, until we teach pako to send
-                  // utf8 aligned strings to onData
-                  this.result = this.chunks.join('');
-                } else {
-                  this.result = utils.flattenChunks(this.chunks);
-                }
-              }
-              this.chunks = [];
-              this.err = status;
-              this.msg = this.strm.msg;
-            };
-            
-            
-            /**
-             * inflate(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to decompress.
-             * - options (Object): zlib inflate options.
-             *
-             * Decompress `data` with inflate/ungzip and `options`. Autodetect
-             * format via wrapper header by default. That's why we don't provide
-             * separate `ungzip` method.
-             *
-             * Supported options are:
-             *
-             * - windowBits
-             *
-             * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-             * for more information.
-             *
-             * Sugar (options):
-             *
-             * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
-             *   negative windowBits implicitly.
-             * - `to` (String) - if equal to 'string', then result will be converted
-             *   from utf8 to utf16 (javascript) string. When string output requested,
-             *   chunk length can differ from `chunkSize`, depending on content.
-             *
-             *
-             * ##### Example:
-             *
-             * ```javascript
-             * var pako = require('pako')
-             *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
-             *   , output;
-             *
-             * try {
-             *   output = pako.inflate(input);
-             * } catch (err)
-             *   console.log(err);
-             * }
-             * ```
-             **/
-            function inflate(input, options) {
-              var inflator = new Inflate(options);
-            
-              inflator.push(input, true);
-            
-              // That will never happens, if you don't cheat with options :)
-              if (inflator.err) { throw inflator.msg || msg[inflator.err]; }
-            
-              return inflator.result;
-            }
-            
-            
-            /**
-             * inflateRaw(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to decompress.
-             * - options (Object): zlib inflate options.
-             *
-             * The same as [[inflate]], but creates raw data, without wrapper
-             * (header and adler32 crc).
-             **/
-            function inflateRaw(input, options) {
-              options = options || {};
-              options.raw = true;
-              return inflate(input, options);
-            }
-            
-            
-            /**
-             * ungzip(data[, options]) -> Uint8Array|Array|String
-             * - data (Uint8Array|Array|String): input data to decompress.
-             * - options (Object): zlib inflate options.
-             *
-             * Just shortcut to [[inflate]], because it autodetects format
-             * by header.content. Done for convenience.
-             **/
-            
-            
-            exports.Inflate = Inflate;
-            exports.inflate = inflate;
-            exports.inflateRaw = inflateRaw;
-            exports.ungzip  = inflate;
-            
-            },{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(require,module,exports){
-            'use strict';
-            
-            
-            var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
-                            (typeof Uint16Array !== 'undefined') &&
-                            (typeof Int32Array !== 'undefined');
-            
-            function _has(obj, key) {
-              return Object.prototype.hasOwnProperty.call(obj, key);
-            }
-            
-            exports.assign = function (obj /*from1, from2, from3, ...*/) {
-              var sources = Array.prototype.slice.call(arguments, 1);
-              while (sources.length) {
-                var source = sources.shift();
-                if (!source) { continue; }
-            
-                if (typeof source !== 'object') {
-                  throw new TypeError(source + 'must be non-object');
-                }
-            
-                for (var p in source) {
-                  if (_has(source, p)) {
-                    obj[p] = source[p];
-                  }
-                }
-              }
-            
-              return obj;
-            };
-            
-            
-            // reduce buffer size, avoiding mem copy
-            exports.shrinkBuf = function (buf, size) {
-              if (buf.length === size) { return buf; }
-              if (buf.subarray) { return buf.subarray(0, size); }
-              buf.length = size;
-              return buf;
-            };
-            
-            
-            var fnTyped = {
-              arraySet: function (dest, src, src_offs, len, dest_offs) {
-                if (src.subarray && dest.subarray) {
-                  dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
-                  return;
-                }
-                // Fallback to ordinary array
-                for (var i = 0; i < len; i++) {
-                  dest[dest_offs + i] = src[src_offs + i];
-                }
-              },
-              // Join array of chunks to single array.
-              flattenChunks: function (chunks) {
-                var i, l, len, pos, chunk, result;
-            
-                // calculate data length
-                len = 0;
-                for (i = 0, l = chunks.length; i < l; i++) {
-                  len += chunks[i].length;
-                }
-            
-                // join chunks
-                result = new Uint8Array(len);
-                pos = 0;
-                for (i = 0, l = chunks.length; i < l; i++) {
-                  chunk = chunks[i];
-                  result.set(chunk, pos);
-                  pos += chunk.length;
-                }
-            
-                return result;
-              }
-            };
-            
-            var fnUntyped = {
-              arraySet: function (dest, src, src_offs, len, dest_offs) {
-                for (var i = 0; i < len; i++) {
-                  dest[dest_offs + i] = src[src_offs + i];
-                }
-              },
-              // Join array of chunks to single array.
-              flattenChunks: function (chunks) {
-                return [].concat.apply([], chunks);
-              }
-            };
-            
-            
-            // Enable/Disable typed arrays use, for testing
-            //
-            exports.setTyped = function (on) {
-              if (on) {
-                exports.Buf8  = Uint8Array;
-                exports.Buf16 = Uint16Array;
-                exports.Buf32 = Int32Array;
-                exports.assign(exports, fnTyped);
-              } else {
-                exports.Buf8  = Array;
-                exports.Buf16 = Array;
-                exports.Buf32 = Array;
-                exports.assign(exports, fnUntyped);
-              }
-            };
-            
-            exports.setTyped(TYPED_OK);
-            
-            },{}],4:[function(require,module,exports){
-            // String encode/decode helpers
-            'use strict';
-            
-            
-            var utils = require('./common');
-            
-            
-            // Quick check if we can use fast array to bin string conversion
-            //
-            // - apply(Array) can fail on Android 2.2
-            // - apply(Uint8Array) can fail on iOS 5.1 Safari
-            //
-            var STR_APPLY_OK = true;
-            var STR_APPLY_UIA_OK = true;
-            
-            try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
-            try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
-            
-            
-            // Table with utf8 lengths (calculated by first byte of sequence)
-            // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
-            // because max possible codepoint is 0x10ffff
-            var _utf8len = new utils.Buf8(256);
-            for (var q = 0; q < 256; q++) {
-              _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
-            }
-            _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
-            
-            
-            // convert string to array (typed, when possible)
-            exports.string2buf = function (str) {
-              var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
-            
-              // count binary size
-              for (m_pos = 0; m_pos < str_len; m_pos++) {
-                c = str.charCodeAt(m_pos);
-                if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
-                  c2 = str.charCodeAt(m_pos + 1);
-                  if ((c2 & 0xfc00) === 0xdc00) {
-                    c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
-                    m_pos++;
-                  }
-                }
-                buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
-              }
-            
-              // allocate buffer
-              buf = new utils.Buf8(buf_len);
-            
-              // convert
-              for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
-                c = str.charCodeAt(m_pos);
-                if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
-                  c2 = str.charCodeAt(m_pos + 1);
-                  if ((c2 & 0xfc00) === 0xdc00) {
-                    c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
-                    m_pos++;
-                  }
-                }
-                if (c < 0x80) {
-                  /* one byte */
-                  buf[i++] = c;
-                } else if (c < 0x800) {
-                  /* two bytes */
-                  buf[i++] = 0xC0 | (c >>> 6);
-                  buf[i++] = 0x80 | (c & 0x3f);
-                } else if (c < 0x10000) {
-                  /* three bytes */
-                  buf[i++] = 0xE0 | (c >>> 12);
-                  buf[i++] = 0x80 | (c >>> 6 & 0x3f);
-                  buf[i++] = 0x80 | (c & 0x3f);
-                } else {
-                  /* four bytes */
-                  buf[i++] = 0xf0 | (c >>> 18);
-                  buf[i++] = 0x80 | (c >>> 12 & 0x3f);
-                  buf[i++] = 0x80 | (c >>> 6 & 0x3f);
-                  buf[i++] = 0x80 | (c & 0x3f);
-                }
-              }
-            
-              return buf;
-            };
-            
-            // Helper (used in 2 places)
-            function buf2binstring(buf, len) {
-              // On Chrome, the arguments in a function call that are allowed is `65534`.
-              // If the length of the buffer is smaller than that, we can use this optimization,
-              // otherwise we will take a slower path.
-              if (len < 65534) {
-                if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
-                  return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
-                }
-              }
-            
-              var result = '';
-              for (var i = 0; i < len; i++) {
-                result += String.fromCharCode(buf[i]);
-              }
-              return result;
-            }
-            
-            
-            // Convert byte array to binary string
-            exports.buf2binstring = function (buf) {
-              return buf2binstring(buf, buf.length);
-            };
-            
-            
-            // Convert binary string (typed, when possible)
-            exports.binstring2buf = function (str) {
-              var buf = new utils.Buf8(str.length);
-              for (var i = 0, len = buf.length; i < len; i++) {
-                buf[i] = str.charCodeAt(i);
-              }
-              return buf;
-            };
-            
-            
-            // convert array to string
-            exports.buf2string = function (buf, max) {
-              var i, out, c, c_len;
-              var len = max || buf.length;
-            
-              // Reserve max possible length (2 words per char)
-              // NB: by unknown reasons, Array is significantly faster for
-              //     String.fromCharCode.apply than Uint16Array.
-              var utf16buf = new Array(len * 2);
-            
-              for (out = 0, i = 0; i < len;) {
-                c = buf[i++];
-                // quick process ascii
-                if (c < 0x80) { utf16buf[out++] = c; continue; }
-            
-                c_len = _utf8len[c];
-                // skip 5 & 6 byte codes
-                if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
-            
-                // apply mask on first byte
-                c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
-                // join the rest
-                while (c_len > 1 && i < len) {
-                  c = (c << 6) | (buf[i++] & 0x3f);
-                  c_len--;
-                }
-            
-                // terminated by end of string?
-                if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
-            
-                if (c < 0x10000) {
-                  utf16buf[out++] = c;
-                } else {
-                  c -= 0x10000;
-                  utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
-                  utf16buf[out++] = 0xdc00 | (c & 0x3ff);
-                }
-              }
-            
-              return buf2binstring(utf16buf, out);
-            };
-            
-            
-            // Calculate max possible position in utf8 buffer,
-            // that will not break sequence. If that's not possible
-            // - (very small limits) return max size as is.
-            //
-            // buf[] - utf8 bytes array
-            // max   - length limit (mandatory);
-            exports.utf8border = function (buf, max) {
-              var pos;
-            
-              max = max || buf.length;
-              if (max > buf.length) { max = buf.length; }
-            
-              // go back from last position, until start of sequence found
-              pos = max - 1;
-              while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
-            
-              // Very small and broken sequence,
-              // return max, because we should return something anyway.
-              if (pos < 0) { return max; }
-            
-              // If we came to start of buffer - that means buffer is too small,
-              // return max too.
-              if (pos === 0) { return max; }
-            
-              return (pos + _utf8len[buf[pos]] > max) ? pos : max;
-            };
-            
-            },{"./common":3}],5:[function(require,module,exports){
-            'use strict';
-            
-            // Note: adler32 takes 12% for level 0 and 2% for level 6.
-            // It isn't worth it to make additional optimizations as in original.
-            // Small size is preferable.
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            function adler32(adler, buf, len, pos) {
-              var s1 = (adler & 0xffff) |0,
-                  s2 = ((adler >>> 16) & 0xffff) |0,
-                  n = 0;
-            
-              while (len !== 0) {
-                // Set limit ~ twice less than 5552, to keep
-                // s2 in 31-bits, because we force signed ints.
-                // in other case %= will fail.
-                n = len > 2000 ? 2000 : len;
-                len -= n;
-            
-                do {
-                  s1 = (s1 + buf[pos++]) |0;
-                  s2 = (s2 + s1) |0;
-                } while (--n);
-            
-                s1 %= 65521;
-                s2 %= 65521;
-              }
-            
-              return (s1 | (s2 << 16)) |0;
-            }
-            
-            
-            module.exports = adler32;
-            
-            },{}],6:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            module.exports = {
-            
-              /* Allowed flush values; see deflate() and inflate() below for details */
-              Z_NO_FLUSH:         0,
-              Z_PARTIAL_FLUSH:    1,
-              Z_SYNC_FLUSH:       2,
-              Z_FULL_FLUSH:       3,
-              Z_FINISH:           4,
-              Z_BLOCK:            5,
-              Z_TREES:            6,
-            
-              /* Return codes for the compression/decompression functions. Negative values
-              * are errors, positive values are used for special but normal events.
-              */
-              Z_OK:               0,
-              Z_STREAM_END:       1,
-              Z_NEED_DICT:        2,
-              Z_ERRNO:           -1,
-              Z_STREAM_ERROR:    -2,
-              Z_DATA_ERROR:      -3,
-              //Z_MEM_ERROR:     -4,
-              Z_BUF_ERROR:       -5,
-              //Z_VERSION_ERROR: -6,
-            
-              /* compression levels */
-              Z_NO_COMPRESSION:         0,
-              Z_BEST_SPEED:             1,
-              Z_BEST_COMPRESSION:       9,
-              Z_DEFAULT_COMPRESSION:   -1,
-            
-            
-              Z_FILTERED:               1,
-              Z_HUFFMAN_ONLY:           2,
-              Z_RLE:                    3,
-              Z_FIXED:                  4,
-              Z_DEFAULT_STRATEGY:       0,
-            
-              /* Possible values of the data_type field (though see inflate()) */
-              Z_BINARY:                 0,
-              Z_TEXT:                   1,
-              //Z_ASCII:                1, // = Z_TEXT (deprecated)
-              Z_UNKNOWN:                2,
-            
-              /* The deflate compression method */
-              Z_DEFLATED:               8
-              //Z_NULL:                 null // Use -1 or null inline, depending on var type
-            };
-            
-            },{}],7:[function(require,module,exports){
-            'use strict';
-            
-            // Note: we can't get significant speed boost here.
-            // So write code to minimize size - no pregenerated tables
-            // and array tools dependencies.
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            // Use ordinary array, since untyped makes no boost here
-            function makeTable() {
-              var c, table = [];
-            
-              for (var n = 0; n < 256; n++) {
-                c = n;
-                for (var k = 0; k < 8; k++) {
-                  c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
-                }
-                table[n] = c;
-              }
-            
-              return table;
-            }
-            
-            // Create table on load. Just 255 signed longs. Not a problem.
-            var crcTable = makeTable();
-            
-            
-            function crc32(crc, buf, len, pos) {
-              var t = crcTable,
-                  end = pos + len;
-            
-              crc ^= -1;
-            
-              for (var i = pos; i < end; i++) {
-                crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
-              }
-            
-              return (crc ^ (-1)); // >>> 0;
-            }
-            
-            
-            module.exports = crc32;
-            
-            },{}],8:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            var utils   = require('../utils/common');
-            var trees   = require('./trees');
-            var adler32 = require('./adler32');
-            var crc32   = require('./crc32');
-            var msg     = require('./messages');
-            
-            /* Public constants ==========================================================*/
-            /* ===========================================================================*/
-            
-            
-            /* Allowed flush values; see deflate() and inflate() below for details */
-            var Z_NO_FLUSH      = 0;
-            var Z_PARTIAL_FLUSH = 1;
-            //var Z_SYNC_FLUSH    = 2;
-            var Z_FULL_FLUSH    = 3;
-            var Z_FINISH        = 4;
-            var Z_BLOCK         = 5;
-            //var Z_TREES         = 6;
-            
-            
-            /* Return codes for the compression/decompression functions. Negative values
-             * are errors, positive values are used for special but normal events.
-             */
-            var Z_OK            = 0;
-            var Z_STREAM_END    = 1;
-            //var Z_NEED_DICT     = 2;
-            //var Z_ERRNO         = -1;
-            var Z_STREAM_ERROR  = -2;
-            var Z_DATA_ERROR    = -3;
-            //var Z_MEM_ERROR     = -4;
-            var Z_BUF_ERROR     = -5;
-            //var Z_VERSION_ERROR = -6;
-            
-            
-            /* compression levels */
-            //var Z_NO_COMPRESSION      = 0;
-            //var Z_BEST_SPEED          = 1;
-            //var Z_BEST_COMPRESSION    = 9;
-            var Z_DEFAULT_COMPRESSION = -1;
-            
-            
-            var Z_FILTERED            = 1;
-            var Z_HUFFMAN_ONLY        = 2;
-            var Z_RLE                 = 3;
-            var Z_FIXED               = 4;
-            var Z_DEFAULT_STRATEGY    = 0;
-            
-            /* Possible values of the data_type field (though see inflate()) */
-            //var Z_BINARY              = 0;
-            //var Z_TEXT                = 1;
-            //var Z_ASCII               = 1; // = Z_TEXT
-            var Z_UNKNOWN             = 2;
-            
-            
-            /* The deflate compression method */
-            var Z_DEFLATED  = 8;
-            
-            /*============================================================================*/
-            
-            
-            var MAX_MEM_LEVEL = 9;
-            /* Maximum value for memLevel in deflateInit2 */
-            var MAX_WBITS = 15;
-            /* 32K LZ77 window */
-            var DEF_MEM_LEVEL = 8;
-            
-            
-            var LENGTH_CODES  = 29;
-            /* number of length codes, not counting the special END_BLOCK code */
-            var LITERALS      = 256;
-            /* number of literal bytes 0..255 */
-            var L_CODES       = LITERALS + 1 + LENGTH_CODES;
-            /* number of Literal or Length codes, including the END_BLOCK code */
-            var D_CODES       = 30;
-            /* number of distance codes */
-            var BL_CODES      = 19;
-            /* number of codes used to transfer the bit lengths */
-            var HEAP_SIZE     = 2 * L_CODES + 1;
-            /* maximum heap size */
-            var MAX_BITS  = 15;
-            /* All codes must not exceed MAX_BITS bits */
-            
-            var MIN_MATCH = 3;
-            var MAX_MATCH = 258;
-            var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
-            
-            var PRESET_DICT = 0x20;
-            
-            var INIT_STATE = 42;
-            var EXTRA_STATE = 69;
-            var NAME_STATE = 73;
-            var COMMENT_STATE = 91;
-            var HCRC_STATE = 103;
-            var BUSY_STATE = 113;
-            var FINISH_STATE = 666;
-            
-            var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
-            var BS_BLOCK_DONE     = 2; /* block flush performed */
-            var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
-            var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
-            
-            var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
-            
-            function err(strm, errorCode) {
-              strm.msg = msg[errorCode];
-              return errorCode;
-            }
-            
-            function rank(f) {
-              return ((f) << 1) - ((f) > 4 ? 9 : 0);
-            }
-            
-            function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
-            
-            
-            /* =========================================================================
-             * Flush as much pending output as possible. All deflate() output goes
-             * through this function so some applications may wish to modify it
-             * to avoid allocating a large strm->output buffer and copying into it.
-             * (See also read_buf()).
-             */
-            function flush_pending(strm) {
-              var s = strm.state;
-            
-              //_tr_flush_bits(s);
-              var len = s.pending;
-              if (len > strm.avail_out) {
-                len = strm.avail_out;
-              }
-              if (len === 0) { return; }
-            
-              utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
-              strm.next_out += len;
-              s.pending_out += len;
-              strm.total_out += len;
-              strm.avail_out -= len;
-              s.pending -= len;
-              if (s.pending === 0) {
-                s.pending_out = 0;
-              }
-            }
-            
-            
-            function flush_block_only(s, last) {
-              trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
-              s.block_start = s.strstart;
-              flush_pending(s.strm);
-            }
-            
-            
-            function put_byte(s, b) {
-              s.pending_buf[s.pending++] = b;
-            }
-            
-            
-            /* =========================================================================
-             * Put a short in the pending buffer. The 16-bit value is put in MSB order.
-             * IN assertion: the stream state is correct and there is enough room in
-             * pending_buf.
-             */
-            function putShortMSB(s, b) {
-            //  put_byte(s, (Byte)(b >> 8));
-            //  put_byte(s, (Byte)(b & 0xff));
-              s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
-              s.pending_buf[s.pending++] = b & 0xff;
-            }
-            
-            
-            /* ===========================================================================
-             * Read a new buffer from the current input stream, update the adler32
-             * and total number of bytes read.  All deflate() input goes through
-             * this function so some applications may wish to modify it to avoid
-             * allocating a large strm->input buffer and copying from it.
-             * (See also flush_pending()).
-             */
-            function read_buf(strm, buf, start, size) {
-              var len = strm.avail_in;
-            
-              if (len > size) { len = size; }
-              if (len === 0) { return 0; }
-            
-              strm.avail_in -= len;
-            
-              // zmemcpy(buf, strm->next_in, len);
-              utils.arraySet(buf, strm.input, strm.next_in, len, start);
-              if (strm.state.wrap === 1) {
-                strm.adler = adler32(strm.adler, buf, len, start);
-              }
-            
-              else if (strm.state.wrap === 2) {
-                strm.adler = crc32(strm.adler, buf, len, start);
-              }
-            
-              strm.next_in += len;
-              strm.total_in += len;
-            
-              return len;
-            }
-            
-            
-            /* ===========================================================================
-             * Set match_start to the longest match starting at the given string and
-             * return its length. Matches shorter or equal to prev_length are discarded,
-             * in which case the result is equal to prev_length and match_start is
-             * garbage.
-             * IN assertions: cur_match is the head of the hash chain for the current
-             *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
-             * OUT assertion: the match length is not greater than s->lookahead.
-             */
-            function longest_match(s, cur_match) {
-              var chain_length = s.max_chain_length;      /* max hash chain length */
-              var scan = s.strstart; /* current string */
-              var match;                       /* matched string */
-              var len;                           /* length of current match */
-              var best_len = s.prev_length;              /* best match length so far */
-              var nice_match = s.nice_match;             /* stop if match long enough */
-              var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
-                  s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
-            
-              var _win = s.window; // shortcut
-            
-              var wmask = s.w_mask;
-              var prev  = s.prev;
-            
-              /* Stop when cur_match becomes <= limit. To simplify the code,
-               * we prevent matches with the string of window index 0.
-               */
-            
-              var strend = s.strstart + MAX_MATCH;
-              var scan_end1  = _win[scan + best_len - 1];
-              var scan_end   = _win[scan + best_len];
-            
-              /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-               * It is easy to get rid of this optimization if necessary.
-               */
-              // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-            
-              /* Do not waste too much time if we already have a good match: */
-              if (s.prev_length >= s.good_match) {
-                chain_length >>= 2;
-              }
-              /* Do not look for matches beyond the end of the input. This is necessary
-               * to make deflate deterministic.
-               */
-              if (nice_match > s.lookahead) { nice_match = s.lookahead; }
-            
-              // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-            
-              do {
-                // Assert(cur_match < s->strstart, "no future");
-                match = cur_match;
-            
-                /* Skip to next match if the match length cannot increase
-                 * or if the match length is less than 2.  Note that the checks below
-                 * for insufficient lookahead only occur occasionally for performance
-                 * reasons.  Therefore uninitialized memory will be accessed, and
-                 * conditional jumps will be made that depend on those values.
-                 * However the length of the match is limited to the lookahead, so
-                 * the output of deflate is not affected by the uninitialized values.
-                 */
-            
-                if (_win[match + best_len]     !== scan_end  ||
-                    _win[match + best_len - 1] !== scan_end1 ||
-                    _win[match]                !== _win[scan] ||
-                    _win[++match]              !== _win[scan + 1]) {
-                  continue;
-                }
-            
-                /* The check at best_len-1 can be removed because it will be made
-                 * again later. (This heuristic is not always a win.)
-                 * It is not necessary to compare scan[2] and match[2] since they
-                 * are always equal when the other bytes match, given that
-                 * the hash keys are equal and that HASH_BITS >= 8.
-                 */
-                scan += 2;
-                match++;
-                // Assert(*scan == *match, "match[2]?");
-            
-                /* We check for insufficient lookahead only every 8th comparison;
-                 * the 256th check will be made at strstart+258.
-                 */
-                do {
-                  /*jshint noempty:false*/
-                } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-                         _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-                         _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-                         _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-                         scan < strend);
-            
-                // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-            
-                len = MAX_MATCH - (strend - scan);
-                scan = strend - MAX_MATCH;
-            
-                if (len > best_len) {
-                  s.match_start = cur_match;
-                  best_len = len;
-                  if (len >= nice_match) {
-                    break;
-                  }
-                  scan_end1  = _win[scan + best_len - 1];
-                  scan_end   = _win[scan + best_len];
-                }
-              } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
-            
-              if (best_len <= s.lookahead) {
-                return best_len;
-              }
-              return s.lookahead;
-            }
-            
-            
-            /* ===========================================================================
-             * Fill the window when the lookahead becomes insufficient.
-             * Updates strstart and lookahead.
-             *
-             * IN assertion: lookahead < MIN_LOOKAHEAD
-             * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
-             *    At least one byte has been read, or avail_in == 0; reads are
-             *    performed for at least two bytes (required for the zip translate_eol
-             *    option -- not supported here).
-             */
-            function fill_window(s) {
-              var _w_size = s.w_size;
-              var p, n, m, more, str;
-            
-              //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
-            
-              do {
-                more = s.window_size - s.lookahead - s.strstart;
-            
-                // JS ints have 32 bit, block below not needed
-                /* Deal with !@#$% 64K limit: */
-                //if (sizeof(int) <= 2) {
-                //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-                //        more = wsize;
-                //
-                //  } else if (more == (unsigned)(-1)) {
-                //        /* Very unlikely, but possible on 16 bit machine if
-                //         * strstart == 0 && lookahead == 1 (input done a byte at time)
-                //         */
-                //        more--;
-                //    }
-                //}
-            
-            
-                /* If the window is almost full and there is insufficient lookahead,
-                 * move the upper half to the lower one to make room in the upper half.
-                 */
-                if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
-            
-                  utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
-                  s.match_start -= _w_size;
-                  s.strstart -= _w_size;
-                  /* we now have strstart >= MAX_DIST */
-                  s.block_start -= _w_size;
-            
-                  /* Slide the hash table (could be avoided with 32 bit values
-                   at the expense of memory usage). We slide even when level == 0
-                   to keep the hash table consistent if we switch back to level > 0
-                   later. (Using level 0 permanently is not an optimal usage of
-                   zlib, so we don't care about this pathological case.)
-                   */
-            
-                  n = s.hash_size;
-                  p = n;
-                  do {
-                    m = s.head[--p];
-                    s.head[p] = (m >= _w_size ? m - _w_size : 0);
-                  } while (--n);
-            
-                  n = _w_size;
-                  p = n;
-                  do {
-                    m = s.prev[--p];
-                    s.prev[p] = (m >= _w_size ? m - _w_size : 0);
-                    /* If n is not on any hash chain, prev[n] is garbage but
-                     * its value will never be used.
-                     */
-                  } while (--n);
-            
-                  more += _w_size;
-                }
-                if (s.strm.avail_in === 0) {
-                  break;
-                }
-            
-                /* If there was no sliding:
-                 *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-                 *    more == window_size - lookahead - strstart
-                 * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-                 * => more >= window_size - 2*WSIZE + 2
-                 * In the BIG_MEM or MMAP case (not yet supported),
-                 *   window_size == input_size + MIN_LOOKAHEAD  &&
-                 *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-                 * Otherwise, window_size == 2*WSIZE so more >= 2.
-                 * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-                 */
-                //Assert(more >= 2, "more < 2");
-                n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
-                s.lookahead += n;
-            
-                /* Initialize the hash value now that we have some input: */
-                if (s.lookahead + s.insert >= MIN_MATCH) {
-                  str = s.strstart - s.insert;
-                  s.ins_h = s.window[str];
-            
-                  /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
-                  s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
-            //#if MIN_MATCH != 3
-            //        Call update_hash() MIN_MATCH-3 more times
-            //#endif
-                  while (s.insert) {
-                    /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
-                    s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
-            
-                    s.prev[str & s.w_mask] = s.head[s.ins_h];
-                    s.head[s.ins_h] = str;
-                    str++;
-                    s.insert--;
-                    if (s.lookahead + s.insert < MIN_MATCH) {
-                      break;
-                    }
-                  }
-                }
-                /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-                 * but this is not important since only literal bytes will be emitted.
-                 */
-            
-              } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
-            
-              /* If the WIN_INIT bytes after the end of the current data have never been
-               * written, then zero those bytes in order to avoid memory check reports of
-               * the use of uninitialized (or uninitialised as Julian writes) bytes by
-               * the longest match routines.  Update the high water mark for the next
-               * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
-               * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
-               */
-            //  if (s.high_water < s.window_size) {
-            //    var curr = s.strstart + s.lookahead;
-            //    var init = 0;
-            //
-            //    if (s.high_water < curr) {
-            //      /* Previous high water mark below current data -- zero WIN_INIT
-            //       * bytes or up to end of window, whichever is less.
-            //       */
-            //      init = s.window_size - curr;
-            //      if (init > WIN_INIT)
-            //        init = WIN_INIT;
-            //      zmemzero(s->window + curr, (unsigned)init);
-            //      s->high_water = curr + init;
-            //    }
-            //    else if (s->high_water < (ulg)curr + WIN_INIT) {
-            //      /* High water mark at or above current data, but below current data
-            //       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
-            //       * to end of window, whichever is less.
-            //       */
-            //      init = (ulg)curr + WIN_INIT - s->high_water;
-            //      if (init > s->window_size - s->high_water)
-            //        init = s->window_size - s->high_water;
-            //      zmemzero(s->window + s->high_water, (unsigned)init);
-            //      s->high_water += init;
-            //    }
-            //  }
-            //
-            //  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
-            //    "not enough room for search");
-            }
-            
-            /* ===========================================================================
-             * Copy without compression as much as possible from the input stream, return
-             * the current block state.
-             * This function does not insert new strings in the dictionary since
-             * uncompressible data is probably not useful. This function is used
-             * only for the level=0 compression option.
-             * NOTE: this function should be optimized to avoid extra copying from
-             * window to pending_buf.
-             */
-            function deflate_stored(s, flush) {
-              /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
-               * to pending_buf_size, and each stored block has a 5 byte header:
-               */
-              var max_block_size = 0xffff;
-            
-              if (max_block_size > s.pending_buf_size - 5) {
-                max_block_size = s.pending_buf_size - 5;
-              }
-            
-              /* Copy as much as possible from input to output: */
-              for (;;) {
-                /* Fill the window as much as possible: */
-                if (s.lookahead <= 1) {
-            
-                  //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
-                  //  s->block_start >= (long)s->w_size, "slide too late");
-            //      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
-            //        s.block_start >= s.w_size)) {
-            //        throw  new Error("slide too late");
-            //      }
-            
-                  fill_window(s);
-                  if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
-                    return BS_NEED_MORE;
-                  }
-            
-                  if (s.lookahead === 0) {
-                    break;
-                  }
-                  /* flush the current block */
-                }
-                //Assert(s->block_start >= 0L, "block gone");
-            //    if (s.block_start < 0) throw new Error("block gone");
-            
-                s.strstart += s.lookahead;
-                s.lookahead = 0;
-            
-                /* Emit a stored block if pending_buf will be full: */
-                var max_start = s.block_start + max_block_size;
-            
-                if (s.strstart === 0 || s.strstart >= max_start) {
-                  /* strstart == 0 is possible when wraparound on 16-bit machine */
-                  s.lookahead = s.strstart - max_start;
-                  s.strstart = max_start;
-                  /*** FLUSH_BLOCK(s, 0); ***/
-                  flush_block_only(s, false);
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                  /***/
-            
-            
-                }
-                /* Flush if we may have to slide, otherwise block_start may become
-                 * negative and the data will be gone:
-                 */
-                if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
-                  /*** FLUSH_BLOCK(s, 0); ***/
-                  flush_block_only(s, false);
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                  /***/
-                }
-              }
-            
-              s.insert = 0;
-            
-              if (flush === Z_FINISH) {
-                /*** FLUSH_BLOCK(s, 1); ***/
-                flush_block_only(s, true);
-                if (s.strm.avail_out === 0) {
-                  return BS_FINISH_STARTED;
-                }
-                /***/
-                return BS_FINISH_DONE;
-              }
-            
-              if (s.strstart > s.block_start) {
-                /*** FLUSH_BLOCK(s, 0); ***/
-                flush_block_only(s, false);
-                if (s.strm.avail_out === 0) {
-                  return BS_NEED_MORE;
-                }
-                /***/
-              }
-            
-              return BS_NEED_MORE;
-            }
-            
-            /* ===========================================================================
-             * Compress as much as possible from the input stream, return the current
-             * block state.
-             * This function does not perform lazy evaluation of matches and inserts
-             * new strings in the dictionary only for unmatched strings or for short
-             * matches. It is used only for the fast compression options.
-             */
-            function deflate_fast(s, flush) {
-              var hash_head;        /* head of the hash chain */
-              var bflush;           /* set if current block must be flushed */
-            
-              for (;;) {
-                /* Make sure that we always have enough lookahead, except
-                 * at the end of the input file. We need MAX_MATCH bytes
-                 * for the next match, plus MIN_MATCH bytes to insert the
-                 * string following the next match.
-                 */
-                if (s.lookahead < MIN_LOOKAHEAD) {
-                  fill_window(s);
-                  if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
-                    return BS_NEED_MORE;
-                  }
-                  if (s.lookahead === 0) {
-                    break; /* flush the current block */
-                  }
-                }
-            
-                /* Insert the string window[strstart .. strstart+2] in the
-                 * dictionary, and set hash_head to the head of the hash chain:
-                 */
-                hash_head = 0/*NIL*/;
-                if (s.lookahead >= MIN_MATCH) {
-                  /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-                  s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
-                  hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-                  s.head[s.ins_h] = s.strstart;
-                  /***/
-                }
-            
-                /* Find the longest match, discarding those <= prev_length.
-                 * At this point we have always match_length < MIN_MATCH
-                 */
-                if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
-                  /* To simplify the code, we prevent matches with the string
-                   * of window index 0 (in particular we have to avoid a match
-                   * of the string with itself at the start of the input file).
-                   */
-                  s.match_length = longest_match(s, hash_head);
-                  /* longest_match() sets match_start */
-                }
-                if (s.match_length >= MIN_MATCH) {
-                  // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
-            
-                  /*** _tr_tally_dist(s, s.strstart - s.match_start,
-                                 s.match_length - MIN_MATCH, bflush); ***/
-                  bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
-            
-                  s.lookahead -= s.match_length;
-            
-                  /* Insert new strings in the hash table only if the match length
-                   * is not too large. This saves time but degrades compression.
-                   */
-                  if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
-                    s.match_length--; /* string at strstart already in table */
-                    do {
-                      s.strstart++;
-                      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-                      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
-                      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-                      s.head[s.ins_h] = s.strstart;
-                      /***/
-                      /* strstart never exceeds WSIZE-MAX_MATCH, so there are
-                       * always MIN_MATCH bytes ahead.
-                       */
-                    } while (--s.match_length !== 0);
-                    s.strstart++;
-                  } else
-                  {
-                    s.strstart += s.match_length;
-                    s.match_length = 0;
-                    s.ins_h = s.window[s.strstart];
-                    /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
-                    s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
-            
-            //#if MIN_MATCH != 3
-            //                Call UPDATE_HASH() MIN_MATCH-3 more times
-            //#endif
-                    /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
-                     * matter since it will be recomputed at next deflate call.
-                     */
-                  }
-                } else {
-                  /* No match, output a literal byte */
-                  //Tracevv((stderr,"%c", s.window[s.strstart]));
-                  /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-                  bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
-            
-                  s.lookahead--;
-                  s.strstart++;
-                }
-                if (bflush) {
-                  /*** FLUSH_BLOCK(s, 0); ***/
-                  flush_block_only(s, false);
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                  /***/
-                }
-              }
-              s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
-              if (flush === Z_FINISH) {
-                /*** FLUSH_BLOCK(s, 1); ***/
-                flush_block_only(s, true);
-                if (s.strm.avail_out === 0) {
-                  return BS_FINISH_STARTED;
-                }
-                /***/
-                return BS_FINISH_DONE;
-              }
-              if (s.last_lit) {
-                /*** FLUSH_BLOCK(s, 0); ***/
-                flush_block_only(s, false);
-                if (s.strm.avail_out === 0) {
-                  return BS_NEED_MORE;
-                }
-                /***/
-              }
-              return BS_BLOCK_DONE;
-            }
-            
-            /* ===========================================================================
-             * Same as above, but achieves better compression. We use a lazy
-             * evaluation for matches: a match is finally adopted only if there is
-             * no better match at the next window position.
-             */
-            function deflate_slow(s, flush) {
-              var hash_head;          /* head of hash chain */
-              var bflush;              /* set if current block must be flushed */
-            
-              var max_insert;
-            
-              /* Process the input block. */
-              for (;;) {
-                /* Make sure that we always have enough lookahead, except
-                 * at the end of the input file. We need MAX_MATCH bytes
-                 * for the next match, plus MIN_MATCH bytes to insert the
-                 * string following the next match.
-                 */
-                if (s.lookahead < MIN_LOOKAHEAD) {
-                  fill_window(s);
-                  if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
-                    return BS_NEED_MORE;
-                  }
-                  if (s.lookahead === 0) { break; } /* flush the current block */
-                }
-            
-                /* Insert the string window[strstart .. strstart+2] in the
-                 * dictionary, and set hash_head to the head of the hash chain:
-                 */
-                hash_head = 0/*NIL*/;
-                if (s.lookahead >= MIN_MATCH) {
-                  /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-                  s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
-                  hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-                  s.head[s.ins_h] = s.strstart;
-                  /***/
-                }
-            
-                /* Find the longest match, discarding those <= prev_length.
-                 */
-                s.prev_length = s.match_length;
-                s.prev_match = s.match_start;
-                s.match_length = MIN_MATCH - 1;
-            
-                if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
-                    s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
-                  /* To simplify the code, we prevent matches with the string
-                   * of window index 0 (in particular we have to avoid a match
-                   * of the string with itself at the start of the input file).
-                   */
-                  s.match_length = longest_match(s, hash_head);
-                  /* longest_match() sets match_start */
-            
-                  if (s.match_length <= 5 &&
-                     (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
-            
-                    /* If prev_match is also MIN_MATCH, match_start is garbage
-                     * but we will ignore the current match anyway.
-                     */
-                    s.match_length = MIN_MATCH - 1;
-                  }
-                }
-                /* If there was a match at the previous step and the current
-                 * match is not better, output the previous match:
-                 */
-                if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
-                  max_insert = s.strstart + s.lookahead - MIN_MATCH;
-                  /* Do not insert strings in hash table beyond this. */
-            
-                  //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
-            
-                  /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
-                                 s.prev_length - MIN_MATCH, bflush);***/
-                  bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
-                  /* Insert in hash table all strings up to the end of the match.
-                   * strstart-1 and strstart are already inserted. If there is not
-                   * enough lookahead, the last two strings are not inserted in
-                   * the hash table.
-                   */
-                  s.lookahead -= s.prev_length - 1;
-                  s.prev_length -= 2;
-                  do {
-                    if (++s.strstart <= max_insert) {
-                      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-                      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
-                      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-                      s.head[s.ins_h] = s.strstart;
-                      /***/
-                    }
-                  } while (--s.prev_length !== 0);
-                  s.match_available = 0;
-                  s.match_length = MIN_MATCH - 1;
-                  s.strstart++;
-            
-                  if (bflush) {
-                    /*** FLUSH_BLOCK(s, 0); ***/
-                    flush_block_only(s, false);
-                    if (s.strm.avail_out === 0) {
-                      return BS_NEED_MORE;
-                    }
-                    /***/
-                  }
-            
-                } else if (s.match_available) {
-                  /* If there was no match at the previous position, output a
-                   * single literal. If there was a match but the current match
-                   * is longer, truncate the previous match to a single literal.
-                   */
-                  //Tracevv((stderr,"%c", s->window[s->strstart-1]));
-                  /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
-                  bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
-            
-                  if (bflush) {
-                    /*** FLUSH_BLOCK_ONLY(s, 0) ***/
-                    flush_block_only(s, false);
-                    /***/
-                  }
-                  s.strstart++;
-                  s.lookahead--;
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                } else {
-                  /* There is no previous match to compare with, wait for
-                   * the next step to decide.
-                   */
-                  s.match_available = 1;
-                  s.strstart++;
-                  s.lookahead--;
-                }
-              }
-              //Assert (flush != Z_NO_FLUSH, "no flush?");
-              if (s.match_available) {
-                //Tracevv((stderr,"%c", s->window[s->strstart-1]));
-                /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
-                bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
-            
-                s.match_available = 0;
-              }
-              s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
-              if (flush === Z_FINISH) {
-                /*** FLUSH_BLOCK(s, 1); ***/
-                flush_block_only(s, true);
-                if (s.strm.avail_out === 0) {
-                  return BS_FINISH_STARTED;
-                }
-                /***/
-                return BS_FINISH_DONE;
-              }
-              if (s.last_lit) {
-                /*** FLUSH_BLOCK(s, 0); ***/
-                flush_block_only(s, false);
-                if (s.strm.avail_out === 0) {
-                  return BS_NEED_MORE;
-                }
-                /***/
-              }
-            
-              return BS_BLOCK_DONE;
-            }
-            
-            
-            /* ===========================================================================
-             * For Z_RLE, simply look for runs of bytes, generate matches only of distance
-             * one.  Do not maintain a hash table.  (It will be regenerated if this run of
-             * deflate switches away from Z_RLE.)
-             */
-            function deflate_rle(s, flush) {
-              var bflush;            /* set if current block must be flushed */
-              var prev;              /* byte at distance one to match */
-              var scan, strend;      /* scan goes up to strend for length of run */
-            
-              var _win = s.window;
-            
-              for (;;) {
-                /* Make sure that we always have enough lookahead, except
-                 * at the end of the input file. We need MAX_MATCH bytes
-                 * for the longest run, plus one for the unrolled loop.
-                 */
-                if (s.lookahead <= MAX_MATCH) {
-                  fill_window(s);
-                  if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
-                    return BS_NEED_MORE;
-                  }
-                  if (s.lookahead === 0) { break; } /* flush the current block */
-                }
-            
-                /* See how many times the previous byte repeats */
-                s.match_length = 0;
-                if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
-                  scan = s.strstart - 1;
-                  prev = _win[scan];
-                  if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
-                    strend = s.strstart + MAX_MATCH;
-                    do {
-                      /*jshint noempty:false*/
-                    } while (prev === _win[++scan] && prev === _win[++scan] &&
-                             prev === _win[++scan] && prev === _win[++scan] &&
-                             prev === _win[++scan] && prev === _win[++scan] &&
-                             prev === _win[++scan] && prev === _win[++scan] &&
-                             scan < strend);
-                    s.match_length = MAX_MATCH - (strend - scan);
-                    if (s.match_length > s.lookahead) {
-                      s.match_length = s.lookahead;
-                    }
-                  }
-                  //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
-                }
-            
-                /* Emit match if have run of MIN_MATCH or longer, else emit literal */
-                if (s.match_length >= MIN_MATCH) {
-                  //check_match(s, s.strstart, s.strstart - 1, s.match_length);
-            
-                  /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
-                  bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
-            
-                  s.lookahead -= s.match_length;
-                  s.strstart += s.match_length;
-                  s.match_length = 0;
-                } else {
-                  /* No match, output a literal byte */
-                  //Tracevv((stderr,"%c", s->window[s->strstart]));
-                  /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-                  bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
-            
-                  s.lookahead--;
-                  s.strstart++;
-                }
-                if (bflush) {
-                  /*** FLUSH_BLOCK(s, 0); ***/
-                  flush_block_only(s, false);
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                  /***/
-                }
-              }
-              s.insert = 0;
-              if (flush === Z_FINISH) {
-                /*** FLUSH_BLOCK(s, 1); ***/
-                flush_block_only(s, true);
-                if (s.strm.avail_out === 0) {
-                  return BS_FINISH_STARTED;
-                }
-                /***/
-                return BS_FINISH_DONE;
-              }
-              if (s.last_lit) {
-                /*** FLUSH_BLOCK(s, 0); ***/
-                flush_block_only(s, false);
-                if (s.strm.avail_out === 0) {
-                  return BS_NEED_MORE;
-                }
-                /***/
-              }
-              return BS_BLOCK_DONE;
-            }
-            
-            /* ===========================================================================
-             * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
-             * (It will be regenerated if this run of deflate switches away from Huffman.)
-             */
-            function deflate_huff(s, flush) {
-              var bflush;             /* set if current block must be flushed */
-            
-              for (;;) {
-                /* Make sure that we have a literal to write. */
-                if (s.lookahead === 0) {
-                  fill_window(s);
-                  if (s.lookahead === 0) {
-                    if (flush === Z_NO_FLUSH) {
-                      return BS_NEED_MORE;
-                    }
-                    break;      /* flush the current block */
-                  }
-                }
-            
-                /* Output a literal byte */
-                s.match_length = 0;
-                //Tracevv((stderr,"%c", s->window[s->strstart]));
-                /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-                bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
-                s.lookahead--;
-                s.strstart++;
-                if (bflush) {
-                  /*** FLUSH_BLOCK(s, 0); ***/
-                  flush_block_only(s, false);
-                  if (s.strm.avail_out === 0) {
-                    return BS_NEED_MORE;
-                  }
-                  /***/
-                }
-              }
-              s.insert = 0;
-              if (flush === Z_FINISH) {
-                /*** FLUSH_BLOCK(s, 1); ***/
-                flush_block_only(s, true);
-                if (s.strm.avail_out === 0) {
-                  return BS_FINISH_STARTED;
-                }
-                /***/
-                return BS_FINISH_DONE;
-              }
-              if (s.last_lit) {
-                /*** FLUSH_BLOCK(s, 0); ***/
-                flush_block_only(s, false);
-                if (s.strm.avail_out === 0) {
-                  return BS_NEED_MORE;
-                }
-                /***/
-              }
-              return BS_BLOCK_DONE;
-            }
-            
-            /* Values for max_lazy_match, good_match and max_chain_length, depending on
-             * the desired pack level (0..9). The values given below have been tuned to
-             * exclude worst case performance for pathological files. Better values may be
-             * found for specific files.
-             */
-            function Config(good_length, max_lazy, nice_length, max_chain, func) {
-              this.good_length = good_length;
-              this.max_lazy = max_lazy;
-              this.nice_length = nice_length;
-              this.max_chain = max_chain;
-              this.func = func;
-            }
-            
-            var configuration_table;
-            
-            configuration_table = [
-              /*      good lazy nice chain */
-              new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
-              new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
-              new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
-              new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
-            
-              new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
-              new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
-              new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
-              new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
-              new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
-              new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
-            ];
-            
-            
-            /* ===========================================================================
-             * Initialize the "longest match" routines for a new zlib stream
-             */
-            function lm_init(s) {
-              s.window_size = 2 * s.w_size;
-            
-              /*** CLEAR_HASH(s); ***/
-              zero(s.head); // Fill with NIL (= 0);
-            
-              /* Set the default configuration parameters:
-               */
-              s.max_lazy_match = configuration_table[s.level].max_lazy;
-              s.good_match = configuration_table[s.level].good_length;
-              s.nice_match = configuration_table[s.level].nice_length;
-              s.max_chain_length = configuration_table[s.level].max_chain;
-            
-              s.strstart = 0;
-              s.block_start = 0;
-              s.lookahead = 0;
-              s.insert = 0;
-              s.match_length = s.prev_length = MIN_MATCH - 1;
-              s.match_available = 0;
-              s.ins_h = 0;
-            }
-            
-            
-            function DeflateState() {
-              this.strm = null;            /* pointer back to this zlib stream */
-              this.status = 0;            /* as the name implies */
-              this.pending_buf = null;      /* output still pending */
-              this.pending_buf_size = 0;  /* size of pending_buf */
-              this.pending_out = 0;       /* next pending byte to output to the stream */
-              this.pending = 0;           /* nb of bytes in the pending buffer */
-              this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
-              this.gzhead = null;         /* gzip header information to write */
-              this.gzindex = 0;           /* where in extra, name, or comment */
-              this.method = Z_DEFLATED; /* can only be DEFLATED */
-              this.last_flush = -1;   /* value of flush param for previous deflate call */
-            
-              this.w_size = 0;  /* LZ77 window size (32K by default) */
-              this.w_bits = 0;  /* log2(w_size)  (8..16) */
-              this.w_mask = 0;  /* w_size - 1 */
-            
-              this.window = null;
-              /* Sliding window. Input bytes are read into the second half of the window,
-               * and move to the first half later to keep a dictionary of at least wSize
-               * bytes. With this organization, matches are limited to a distance of
-               * wSize-MAX_MATCH bytes, but this ensures that IO is always
-               * performed with a length multiple of the block size.
-               */
-            
-              this.window_size = 0;
-              /* Actual size of window: 2*wSize, except when the user input buffer
-               * is directly used as sliding window.
-               */
-            
-              this.prev = null;
-              /* Link to older string with same hash index. To limit the size of this
-               * array to 64K, this link is maintained only for the last 32K strings.
-               * An index in this array is thus a window index modulo 32K.
-               */
-            
-              this.head = null;   /* Heads of the hash chains or NIL. */
-            
-              this.ins_h = 0;       /* hash index of string to be inserted */
-              this.hash_size = 0;   /* number of elements in hash table */
-              this.hash_bits = 0;   /* log2(hash_size) */
-              this.hash_mask = 0;   /* hash_size-1 */
-            
-              this.hash_shift = 0;
-              /* Number of bits by which ins_h must be shifted at each input
-               * step. It must be such that after MIN_MATCH steps, the oldest
-               * byte no longer takes part in the hash key, that is:
-               *   hash_shift * MIN_MATCH >= hash_bits
-               */
-            
-              this.block_start = 0;
-              /* Window position at the beginning of the current output block. Gets
-               * negative when the window is moved backwards.
-               */
-            
-              this.match_length = 0;      /* length of best match */
-              this.prev_match = 0;        /* previous match */
-              this.match_available = 0;   /* set if previous match exists */
-              this.strstart = 0;          /* start of string to insert */
-              this.match_start = 0;       /* start of matching string */
-              this.lookahead = 0;         /* number of valid bytes ahead in window */
-            
-              this.prev_length = 0;
-              /* Length of the best match at previous step. Matches not greater than this
-               * are discarded. This is used in the lazy match evaluation.
-               */
-            
-              this.max_chain_length = 0;
-              /* To speed up deflation, hash chains are never searched beyond this
-               * length.  A higher limit improves compression ratio but degrades the
-               * speed.
-               */
-            
-              this.max_lazy_match = 0;
-              /* Attempt to find a better match only when the current match is strictly
-               * smaller than this value. This mechanism is used only for compression
-               * levels >= 4.
-               */
-              // That's alias to max_lazy_match, don't use directly
-              //this.max_insert_length = 0;
-              /* Insert new strings in the hash table only if the match length is not
-               * greater than this length. This saves time but degrades compression.
-               * max_insert_length is used only for compression levels <= 3.
-               */
-            
-              this.level = 0;     /* compression level (1..9) */
-              this.strategy = 0;  /* favor or force Huffman coding*/
-            
-              this.good_match = 0;
-              /* Use a faster search when the previous match is longer than this */
-            
-              this.nice_match = 0; /* Stop searching when current match exceeds this */
-            
-                          /* used by trees.c: */
-            
-              /* Didn't use ct_data typedef below to suppress compiler warning */
-            
-              // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
-              // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-              // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
-            
-              // Use flat array of DOUBLE size, with interleaved fata,
-              // because JS does not support effective
-              this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
-              this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
-              this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
-              zero(this.dyn_ltree);
-              zero(this.dyn_dtree);
-              zero(this.bl_tree);
-            
-              this.l_desc   = null;         /* desc. for literal tree */
-              this.d_desc   = null;         /* desc. for distance tree */
-              this.bl_desc  = null;         /* desc. for bit length tree */
-            
-              //ush bl_count[MAX_BITS+1];
-              this.bl_count = new utils.Buf16(MAX_BITS + 1);
-              /* number of codes at each bit length for an optimal tree */
-            
-              //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
-              this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
-              zero(this.heap);
-            
-              this.heap_len = 0;               /* number of elements in the heap */
-              this.heap_max = 0;               /* element of largest frequency */
-              /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
-               * The same heap array is used to build all trees.
-               */
-            
-              this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
-              zero(this.depth);
-              /* Depth of each subtree used as tie breaker for trees of equal frequency
-               */
-            
-              this.l_buf = 0;          /* buffer index for literals or lengths */
-            
-              this.lit_bufsize = 0;
-              /* Size of match buffer for literals/lengths.  There are 4 reasons for
-               * limiting lit_bufsize to 64K:
-               *   - frequencies can be kept in 16 bit counters
-               *   - if compression is not successful for the first block, all input
-               *     data is still in the window so we can still emit a stored block even
-               *     when input comes from standard input.  (This can also be done for
-               *     all blocks if lit_bufsize is not greater than 32K.)
-               *   - if compression is not successful for a file smaller than 64K, we can
-               *     even emit a stored file instead of a stored block (saving 5 bytes).
-               *     This is applicable only for zip (not gzip or zlib).
-               *   - creating new Huffman trees less frequently may not provide fast
-               *     adaptation to changes in the input data statistics. (Take for
-               *     example a binary file with poorly compressible code followed by
-               *     a highly compressible string table.) Smaller buffer sizes give
-               *     fast adaptation but have of course the overhead of transmitting
-               *     trees more frequently.
-               *   - I can't count above 4
-               */
-            
-              this.last_lit = 0;      /* running index in l_buf */
-            
-              this.d_buf = 0;
-              /* Buffer index for distances. To simplify the code, d_buf and l_buf have
-               * the same number of elements. To use different lengths, an extra flag
-               * array would be necessary.
-               */
-            
-              this.opt_len = 0;       /* bit length of current block with optimal trees */
-              this.static_len = 0;    /* bit length of current block with static trees */
-              this.matches = 0;       /* number of string matches in current block */
-              this.insert = 0;        /* bytes at end of window left to insert */
-            
-            
-              this.bi_buf = 0;
-              /* Output buffer. bits are inserted starting at the bottom (least
-               * significant bits).
-               */
-              this.bi_valid = 0;
-              /* Number of valid bits in bi_buf.  All bits above the last valid bit
-               * are always zero.
-               */
-            
-              // Used for window memory init. We safely ignore it for JS. That makes
-              // sense only for pointers and memory check tools.
-              //this.high_water = 0;
-              /* High water mark offset in window for initialized bytes -- bytes above
-               * this are set to zero in order to avoid memory check warnings when
-               * longest match routines access bytes past the input.  This is then
-               * updated to the new high water mark.
-               */
-            }
-            
-            
-            function deflateResetKeep(strm) {
-              var s;
-            
-              if (!strm || !strm.state) {
-                return err(strm, Z_STREAM_ERROR);
-              }
-            
-              strm.total_in = strm.total_out = 0;
-              strm.data_type = Z_UNKNOWN;
-            
-              s = strm.state;
-              s.pending = 0;
-              s.pending_out = 0;
-            
-              if (s.wrap < 0) {
-                s.wrap = -s.wrap;
-                /* was made negative by deflate(..., Z_FINISH); */
-              }
-              s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
-              strm.adler = (s.wrap === 2) ?
-                0  // crc32(0, Z_NULL, 0)
-              :
-                1; // adler32(0, Z_NULL, 0)
-              s.last_flush = Z_NO_FLUSH;
-              trees._tr_init(s);
-              return Z_OK;
-            }
-            
-            
-            function deflateReset(strm) {
-              var ret = deflateResetKeep(strm);
-              if (ret === Z_OK) {
-                lm_init(strm.state);
-              }
-              return ret;
-            }
-            
-            
-            function deflateSetHeader(strm, head) {
-              if (!strm || !strm.state) { return Z_STREAM_ERROR; }
-              if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
-              strm.state.gzhead = head;
-              return Z_OK;
-            }
-            
-            
-            function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
-              if (!strm) { // === Z_NULL
-                return Z_STREAM_ERROR;
-              }
-              var wrap = 1;
-            
-              if (level === Z_DEFAULT_COMPRESSION) {
-                level = 6;
-              }
-            
-              if (windowBits < 0) { /* suppress zlib wrapper */
-                wrap = 0;
-                windowBits = -windowBits;
-              }
-            
-              else if (windowBits > 15) {
-                wrap = 2;           /* write gzip wrapper instead */
-                windowBits -= 16;
-              }
-            
-            
-              if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
-                windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
-                strategy < 0 || strategy > Z_FIXED) {
-                return err(strm, Z_STREAM_ERROR);
-              }
-            
-            
-              if (windowBits === 8) {
-                windowBits = 9;
-              }
-              /* until 256-byte window bug fixed */
-            
-              var s = new DeflateState();
-            
-              strm.state = s;
-              s.strm = strm;
-            
-              s.wrap = wrap;
-              s.gzhead = null;
-              s.w_bits = windowBits;
-              s.w_size = 1 << s.w_bits;
-              s.w_mask = s.w_size - 1;
-            
-              s.hash_bits = memLevel + 7;
-              s.hash_size = 1 << s.hash_bits;
-              s.hash_mask = s.hash_size - 1;
-              s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
-            
-              s.window = new utils.Buf8(s.w_size * 2);
-              s.head = new utils.Buf16(s.hash_size);
-              s.prev = new utils.Buf16(s.w_size);
-            
-              // Don't need mem init magic for JS.
-              //s.high_water = 0;  /* nothing written to s->window yet */
-            
-              s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-            
-              s.pending_buf_size = s.lit_bufsize * 4;
-            
-              //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
-              //s->pending_buf = (uchf *) overlay;
-              s.pending_buf = new utils.Buf8(s.pending_buf_size);
-            
-              // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
-              //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-              s.d_buf = 1 * s.lit_bufsize;
-            
-              //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
-              s.l_buf = (1 + 2) * s.lit_bufsize;
-            
-              s.level = level;
-              s.strategy = strategy;
-              s.method = method;
-            
-              return deflateReset(strm);
-            }
-            
-            function deflateInit(strm, level) {
-              return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
-            }
-            
-            
-            function deflate(strm, flush) {
-              var old_flush, s;
-              var beg, val; // for gzip header write only
-            
-              if (!strm || !strm.state ||
-                flush > Z_BLOCK || flush < 0) {
-                return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
-              }
-            
-              s = strm.state;
-            
-              if (!strm.output ||
-                  (!strm.input && strm.avail_in !== 0) ||
-                  (s.status === FINISH_STATE && flush !== Z_FINISH)) {
-                return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
-              }
-            
-              s.strm = strm; /* just in case */
-              old_flush = s.last_flush;
-              s.last_flush = flush;
-            
-              /* Write the header */
-              if (s.status === INIT_STATE) {
-            
-                if (s.wrap === 2) { // GZIP header
-                  strm.adler = 0;  //crc32(0L, Z_NULL, 0);
-                  put_byte(s, 31);
-                  put_byte(s, 139);
-                  put_byte(s, 8);
-                  if (!s.gzhead) { // s->gzhead == Z_NULL
-                    put_byte(s, 0);
-                    put_byte(s, 0);
-                    put_byte(s, 0);
-                    put_byte(s, 0);
-                    put_byte(s, 0);
-                    put_byte(s, s.level === 9 ? 2 :
-                                (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
-                                 4 : 0));
-                    put_byte(s, OS_CODE);
-                    s.status = BUSY_STATE;
-                  }
-                  else {
-                    put_byte(s, (s.gzhead.text ? 1 : 0) +
-                                (s.gzhead.hcrc ? 2 : 0) +
-                                (!s.gzhead.extra ? 0 : 4) +
-                                (!s.gzhead.name ? 0 : 8) +
-                                (!s.gzhead.comment ? 0 : 16)
-                    );
-                    put_byte(s, s.gzhead.time & 0xff);
-                    put_byte(s, (s.gzhead.time >> 8) & 0xff);
-                    put_byte(s, (s.gzhead.time >> 16) & 0xff);
-                    put_byte(s, (s.gzhead.time >> 24) & 0xff);
-                    put_byte(s, s.level === 9 ? 2 :
-                                (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
-                                 4 : 0));
-                    put_byte(s, s.gzhead.os & 0xff);
-                    if (s.gzhead.extra && s.gzhead.extra.length) {
-                      put_byte(s, s.gzhead.extra.length & 0xff);
-                      put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
-                    }
-                    if (s.gzhead.hcrc) {
-                      strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
-                    }
-                    s.gzindex = 0;
-                    s.status = EXTRA_STATE;
-                  }
-                }
-                else // DEFLATE header
-                {
-                  var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
-                  var level_flags = -1;
-            
-                  if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
-                    level_flags = 0;
-                  } else if (s.level < 6) {
-                    level_flags = 1;
-                  } else if (s.level === 6) {
-                    level_flags = 2;
-                  } else {
-                    level_flags = 3;
-                  }
-                  header |= (level_flags << 6);
-                  if (s.strstart !== 0) { header |= PRESET_DICT; }
-                  header += 31 - (header % 31);
-            
-                  s.status = BUSY_STATE;
-                  putShortMSB(s, header);
-            
-                  /* Save the adler32 of the preset dictionary: */
-                  if (s.strstart !== 0) {
-                    putShortMSB(s, strm.adler >>> 16);
-                    putShortMSB(s, strm.adler & 0xffff);
-                  }
-                  strm.adler = 1; // adler32(0L, Z_NULL, 0);
-                }
-              }
-            
-            //#ifdef GZIP
-              if (s.status === EXTRA_STATE) {
-                if (s.gzhead.extra/* != Z_NULL*/) {
-                  beg = s.pending;  /* start of bytes to update crc */
-            
-                  while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
-                    if (s.pending === s.pending_buf_size) {
-                      if (s.gzhead.hcrc && s.pending > beg) {
-                        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                      }
-                      flush_pending(strm);
-                      beg = s.pending;
-                      if (s.pending === s.pending_buf_size) {
-                        break;
-                      }
-                    }
-                    put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
-                    s.gzindex++;
-                  }
-                  if (s.gzhead.hcrc && s.pending > beg) {
-                    strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                  }
-                  if (s.gzindex === s.gzhead.extra.length) {
-                    s.gzindex = 0;
-                    s.status = NAME_STATE;
-                  }
-                }
-                else {
-                  s.status = NAME_STATE;
-                }
-              }
-              if (s.status === NAME_STATE) {
-                if (s.gzhead.name/* != Z_NULL*/) {
-                  beg = s.pending;  /* start of bytes to update crc */
-                  //int val;
-            
-                  do {
-                    if (s.pending === s.pending_buf_size) {
-                      if (s.gzhead.hcrc && s.pending > beg) {
-                        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                      }
-                      flush_pending(strm);
-                      beg = s.pending;
-                      if (s.pending === s.pending_buf_size) {
-                        val = 1;
-                        break;
-                      }
-                    }
-                    // JS specific: little magic to add zero terminator to end of string
-                    if (s.gzindex < s.gzhead.name.length) {
-                      val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
-                    } else {
-                      val = 0;
-                    }
-                    put_byte(s, val);
-                  } while (val !== 0);
-            
-                  if (s.gzhead.hcrc && s.pending > beg) {
-                    strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                  }
-                  if (val === 0) {
-                    s.gzindex = 0;
-                    s.status = COMMENT_STATE;
-                  }
-                }
-                else {
-                  s.status = COMMENT_STATE;
-                }
-              }
-              if (s.status === COMMENT_STATE) {
-                if (s.gzhead.comment/* != Z_NULL*/) {
-                  beg = s.pending;  /* start of bytes to update crc */
-                  //int val;
-            
-                  do {
-                    if (s.pending === s.pending_buf_size) {
-                      if (s.gzhead.hcrc && s.pending > beg) {
-                        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                      }
-                      flush_pending(strm);
-                      beg = s.pending;
-                      if (s.pending === s.pending_buf_size) {
-                        val = 1;
-                        break;
-                      }
-                    }
-                    // JS specific: little magic to add zero terminator to end of string
-                    if (s.gzindex < s.gzhead.comment.length) {
-                      val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
-                    } else {
-                      val = 0;
-                    }
-                    put_byte(s, val);
-                  } while (val !== 0);
-            
-                  if (s.gzhead.hcrc && s.pending > beg) {
-                    strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
-                  }
-                  if (val === 0) {
-                    s.status = HCRC_STATE;
-                  }
-                }
-                else {
-                  s.status = HCRC_STATE;
-                }
-              }
-              if (s.status === HCRC_STATE) {
-                if (s.gzhead.hcrc) {
-                  if (s.pending + 2 > s.pending_buf_size) {
-                    flush_pending(strm);
-                  }
-                  if (s.pending + 2 <= s.pending_buf_size) {
-                    put_byte(s, strm.adler & 0xff);
-                    put_byte(s, (strm.adler >> 8) & 0xff);
-                    strm.adler = 0; //crc32(0L, Z_NULL, 0);
-                    s.status = BUSY_STATE;
-                  }
-                }
-                else {
-                  s.status = BUSY_STATE;
-                }
-              }
-            //#endif
-            
-              /* Flush as much pending output as possible */
-              if (s.pending !== 0) {
-                flush_pending(strm);
-                if (strm.avail_out === 0) {
-                  /* Since avail_out is 0, deflate will be called again with
-                   * more output space, but possibly with both pending and
-                   * avail_in equal to zero. There won't be anything to do,
-                   * but this is not an error situation so make sure we
-                   * return OK instead of BUF_ERROR at next call of deflate:
-                   */
-                  s.last_flush = -1;
-                  return Z_OK;
-                }
-            
-                /* Make sure there is something to do and avoid duplicate consecutive
-                 * flushes. For repeated and useless calls with Z_FINISH, we keep
-                 * returning Z_STREAM_END instead of Z_BUF_ERROR.
-                 */
-              } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
-                flush !== Z_FINISH) {
-                return err(strm, Z_BUF_ERROR);
-              }
-            
-              /* User must not provide more input after the first FINISH: */
-              if (s.status === FINISH_STATE && strm.avail_in !== 0) {
-                return err(strm, Z_BUF_ERROR);
-              }
-            
-              /* Start a new block or continue the current one.
-               */
-              if (strm.avail_in !== 0 || s.lookahead !== 0 ||
-                (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
-                var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
-                  (s.strategy === Z_RLE ? deflate_rle(s, flush) :
-                    configuration_table[s.level].func(s, flush));
-            
-                if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
-                  s.status = FINISH_STATE;
-                }
-                if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
-                  if (strm.avail_out === 0) {
-                    s.last_flush = -1;
-                    /* avoid BUF_ERROR next call, see above */
-                  }
-                  return Z_OK;
-                  /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
-                   * of deflate should use the same flush parameter to make sure
-                   * that the flush is complete. So we don't have to output an
-                   * empty block here, this will be done at next call. This also
-                   * ensures that for a very small output buffer, we emit at most
-                   * one empty block.
-                   */
-                }
-                if (bstate === BS_BLOCK_DONE) {
-                  if (flush === Z_PARTIAL_FLUSH) {
-                    trees._tr_align(s);
-                  }
-                  else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
-            
-                    trees._tr_stored_block(s, 0, 0, false);
-                    /* For a full flush, this empty block will be recognized
-                     * as a special marker by inflate_sync().
-                     */
-                    if (flush === Z_FULL_FLUSH) {
-                      /*** CLEAR_HASH(s); ***/             /* forget history */
-                      zero(s.head); // Fill with NIL (= 0);
-            
-                      if (s.lookahead === 0) {
-                        s.strstart = 0;
-                        s.block_start = 0;
-                        s.insert = 0;
-                      }
-                    }
-                  }
-                  flush_pending(strm);
-                  if (strm.avail_out === 0) {
-                    s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
-                    return Z_OK;
-                  }
-                }
-              }
-              //Assert(strm->avail_out > 0, "bug2");
-              //if (strm.avail_out <= 0) { throw new Error("bug2");}
-            
-              if (flush !== Z_FINISH) { return Z_OK; }
-              if (s.wrap <= 0) { return Z_STREAM_END; }
-            
-              /* Write the trailer */
-              if (s.wrap === 2) {
-                put_byte(s, strm.adler & 0xff);
-                put_byte(s, (strm.adler >> 8) & 0xff);
-                put_byte(s, (strm.adler >> 16) & 0xff);
-                put_byte(s, (strm.adler >> 24) & 0xff);
-                put_byte(s, strm.total_in & 0xff);
-                put_byte(s, (strm.total_in >> 8) & 0xff);
-                put_byte(s, (strm.total_in >> 16) & 0xff);
-                put_byte(s, (strm.total_in >> 24) & 0xff);
-              }
-              else
-              {
-                putShortMSB(s, strm.adler >>> 16);
-                putShortMSB(s, strm.adler & 0xffff);
-              }
-            
-              flush_pending(strm);
-              /* If avail_out is zero, the application will call deflate again
-               * to flush the rest.
-               */
-              if (s.wrap > 0) { s.wrap = -s.wrap; }
-              /* write the trailer only once! */
-              return s.pending !== 0 ? Z_OK : Z_STREAM_END;
-            }
-            
-            function deflateEnd(strm) {
-              var status;
-            
-              if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
-                return Z_STREAM_ERROR;
-              }
-            
-              status = strm.state.status;
-              if (status !== INIT_STATE &&
-                status !== EXTRA_STATE &&
-                status !== NAME_STATE &&
-                status !== COMMENT_STATE &&
-                status !== HCRC_STATE &&
-                status !== BUSY_STATE &&
-                status !== FINISH_STATE
-              ) {
-                return err(strm, Z_STREAM_ERROR);
-              }
-            
-              strm.state = null;
-            
-              return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
-            }
-            
-            
-            /* =========================================================================
-             * Initializes the compression dictionary from the given byte
-             * sequence without producing any compressed output.
-             */
-            function deflateSetDictionary(strm, dictionary) {
-              var dictLength = dictionary.length;
-            
-              var s;
-              var str, n;
-              var wrap;
-              var avail;
-              var next;
-              var input;
-              var tmpDict;
-            
-              if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
-                return Z_STREAM_ERROR;
-              }
-            
-              s = strm.state;
-              wrap = s.wrap;
-            
-              if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
-                return Z_STREAM_ERROR;
-              }
-            
-              /* when using zlib wrappers, compute Adler-32 for provided dictionary */
-              if (wrap === 1) {
-                /* adler32(strm->adler, dictionary, dictLength); */
-                strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
-              }
-            
-              s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
-            
-              /* if dictionary would fill window, just replace the history */
-              if (dictLength >= s.w_size) {
-                if (wrap === 0) {            /* already empty otherwise */
-                  /*** CLEAR_HASH(s); ***/
-                  zero(s.head); // Fill with NIL (= 0);
-                  s.strstart = 0;
-                  s.block_start = 0;
-                  s.insert = 0;
-                }
-                /* use the tail */
-                // dictionary = dictionary.slice(dictLength - s.w_size);
-                tmpDict = new utils.Buf8(s.w_size);
-                utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
-                dictionary = tmpDict;
-                dictLength = s.w_size;
-              }
-              /* insert dictionary into window and hash */
-              avail = strm.avail_in;
-              next = strm.next_in;
-              input = strm.input;
-              strm.avail_in = dictLength;
-              strm.next_in = 0;
-              strm.input = dictionary;
-              fill_window(s);
-              while (s.lookahead >= MIN_MATCH) {
-                str = s.strstart;
-                n = s.lookahead - (MIN_MATCH - 1);
-                do {
-                  /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
-                  s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
-            
-                  s.prev[str & s.w_mask] = s.head[s.ins_h];
-            
-                  s.head[s.ins_h] = str;
-                  str++;
-                } while (--n);
-                s.strstart = str;
-                s.lookahead = MIN_MATCH - 1;
-                fill_window(s);
-              }
-              s.strstart += s.lookahead;
-              s.block_start = s.strstart;
-              s.insert = s.lookahead;
-              s.lookahead = 0;
-              s.match_length = s.prev_length = MIN_MATCH - 1;
-              s.match_available = 0;
-              strm.next_in = next;
-              strm.input = input;
-              strm.avail_in = avail;
-              s.wrap = wrap;
-              return Z_OK;
-            }
-            
-            
-            exports.deflateInit = deflateInit;
-            exports.deflateInit2 = deflateInit2;
-            exports.deflateReset = deflateReset;
-            exports.deflateResetKeep = deflateResetKeep;
-            exports.deflateSetHeader = deflateSetHeader;
-            exports.deflate = deflate;
-            exports.deflateEnd = deflateEnd;
-            exports.deflateSetDictionary = deflateSetDictionary;
-            exports.deflateInfo = 'pako deflate (from Nodeca project)';
-            
-            /* Not implemented
-            exports.deflateBound = deflateBound;
-            exports.deflateCopy = deflateCopy;
-            exports.deflateParams = deflateParams;
-            exports.deflatePending = deflatePending;
-            exports.deflatePrime = deflatePrime;
-            exports.deflateTune = deflateTune;
-            */
-            
-            },{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13,"./trees":14}],9:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            function GZheader() {
-              /* true if compressed data believed to be text */
-              this.text       = 0;
-              /* modification time */
-              this.time       = 0;
-              /* extra flags (not used when writing a gzip file) */
-              this.xflags     = 0;
-              /* operating system */
-              this.os         = 0;
-              /* pointer to extra field or Z_NULL if none */
-              this.extra      = null;
-              /* extra field length (valid if extra != Z_NULL) */
-              this.extra_len  = 0; // Actually, we don't need it in JS,
-                                   // but leave for few code modifications
-            
-              //
-              // Setup limits is not necessary because in js we should not preallocate memory
-              // for inflate use constant limit in 65536 bytes
-              //
-            
-              /* space at extra (only when reading header) */
-              // this.extra_max  = 0;
-              /* pointer to zero-terminated file name or Z_NULL */
-              this.name       = '';
-              /* space at name (only when reading header) */
-              // this.name_max   = 0;
-              /* pointer to zero-terminated comment or Z_NULL */
-              this.comment    = '';
-              /* space at comment (only when reading header) */
-              // this.comm_max   = 0;
-              /* true if there was or will be a header crc */
-              this.hcrc       = 0;
-              /* true when done reading gzip header (not used when writing a gzip file) */
-              this.done       = false;
-            }
-            
-            module.exports = GZheader;
-            
-            },{}],10:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            // See state defs from inflate.js
-            var BAD = 30;       /* got a data error -- remain here until reset */
-            var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
-            
-            /*
-               Decode literal, length, and distance codes and write out the resulting
-               literal and match bytes until either not enough input or output is
-               available, an end-of-block is encountered, or a data error is encountered.
-               When large enough input and output buffers are supplied to inflate(), for
-               example, a 16K input buffer and a 64K output buffer, more than 95% of the
-               inflate execution time is spent in this routine.
-            
-               Entry assumptions:
-            
-                    state.mode === LEN
-                    strm.avail_in >= 6
-                    strm.avail_out >= 258
-                    start >= strm.avail_out
-                    state.bits < 8
-            
-               On return, state.mode is one of:
-            
-                    LEN -- ran out of enough output space or enough available input
-                    TYPE -- reached end of block code, inflate() to interpret next block
-                    BAD -- error in block data
-            
-               Notes:
-            
-                - The maximum input bits used by a length/distance pair is 15 bits for the
-                  length code, 5 bits for the length extra, 15 bits for the distance code,
-                  and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-                  Therefore if strm.avail_in >= 6, then there is enough input to avoid
-                  checking for available input while decoding.
-            
-                - The maximum bytes that a single length/distance pair can output is 258
-                  bytes, which is the maximum length that can be coded.  inflate_fast()
-                  requires strm.avail_out >= 258 for each loop to avoid checking for
-                  output space.
-             */
-            module.exports = function inflate_fast(strm, start) {
-              var state;
-              var _in;                    /* local strm.input */
-              var last;                   /* have enough input while in < last */
-              var _out;                   /* local strm.output */
-              var beg;                    /* inflate()'s initial strm.output */
-              var end;                    /* while out < end, enough space available */
-            //#ifdef INFLATE_STRICT
-              var dmax;                   /* maximum distance from zlib header */
-            //#endif
-              var wsize;                  /* window size or zero if not using window */
-              var whave;                  /* valid bytes in the window */
-              var wnext;                  /* window write index */
-              // Use `s_window` instead `window`, avoid conflict with instrumentation tools
-              var s_window;               /* allocated sliding window, if wsize != 0 */
-              var hold;                   /* local strm.hold */
-              var bits;                   /* local strm.bits */
-              var lcode;                  /* local strm.lencode */
-              var dcode;                  /* local strm.distcode */
-              var lmask;                  /* mask for first level of length codes */
-              var dmask;                  /* mask for first level of distance codes */
-              var here;                   /* retrieved table entry */
-              var op;                     /* code bits, operation, extra bits, or */
-                                          /*  window position, window bytes to copy */
-              var len;                    /* match length, unused bytes */
-              var dist;                   /* match distance */
-              var from;                   /* where to copy match from */
-              var from_source;
-            
-            
-              var input, output; // JS specific, because we have no pointers
-            
-              /* copy state to local variables */
-              state = strm.state;
-              //here = state.here;
-              _in = strm.next_in;
-              input = strm.input;
-              last = _in + (strm.avail_in - 5);
-              _out = strm.next_out;
-              output = strm.output;
-              beg = _out - (start - strm.avail_out);
-              end = _out + (strm.avail_out - 257);
-            //#ifdef INFLATE_STRICT
-              dmax = state.dmax;
-            //#endif
-              wsize = state.wsize;
-              whave = state.whave;
-              wnext = state.wnext;
-              s_window = state.window;
-              hold = state.hold;
-              bits = state.bits;
-              lcode = state.lencode;
-              dcode = state.distcode;
-              lmask = (1 << state.lenbits) - 1;
-              dmask = (1 << state.distbits) - 1;
-            
-            
-              /* decode literals and length/distances until end-of-block or not enough
-                 input data or output space */
-            
-              top:
-              do {
-                if (bits < 15) {
-                  hold += input[_in++] << bits;
-                  bits += 8;
-                  hold += input[_in++] << bits;
-                  bits += 8;
-                }
-            
-                here = lcode[hold & lmask];
-            
-                dolen:
-                for (;;) { // Goto emulation
-                  op = here >>> 24/*here.bits*/;
-                  hold >>>= op;
-                  bits -= op;
-                  op = (here >>> 16) & 0xff/*here.op*/;
-                  if (op === 0) {                          /* literal */
-                    //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
-                    //        "inflate:         literal '%c'\n" :
-                    //        "inflate:         literal 0x%02x\n", here.val));
-                    output[_out++] = here & 0xffff/*here.val*/;
-                  }
-                  else if (op & 16) {                     /* length base */
-                    len = here & 0xffff/*here.val*/;
-                    op &= 15;                           /* number of extra bits */
-                    if (op) {
-                      if (bits < op) {
-                        hold += input[_in++] << bits;
-                        bits += 8;
-                      }
-                      len += hold & ((1 << op) - 1);
-                      hold >>>= op;
-                      bits -= op;
-                    }
-                    //Tracevv((stderr, "inflate:         length %u\n", len));
-                    if (bits < 15) {
-                      hold += input[_in++] << bits;
-                      bits += 8;
-                      hold += input[_in++] << bits;
-                      bits += 8;
-                    }
-                    here = dcode[hold & dmask];
-            
-                    dodist:
-                    for (;;) { // goto emulation
-                      op = here >>> 24/*here.bits*/;
-                      hold >>>= op;
-                      bits -= op;
-                      op = (here >>> 16) & 0xff/*here.op*/;
-            
-                      if (op & 16) {                      /* distance base */
-                        dist = here & 0xffff/*here.val*/;
-                        op &= 15;                       /* number of extra bits */
-                        if (bits < op) {
-                          hold += input[_in++] << bits;
-                          bits += 8;
-                          if (bits < op) {
-                            hold += input[_in++] << bits;
-                            bits += 8;
-                          }
-                        }
-                        dist += hold & ((1 << op) - 1);
-            //#ifdef INFLATE_STRICT
-                        if (dist > dmax) {
-                          strm.msg = 'invalid distance too far back';
-                          state.mode = BAD;
-                          break top;
-                        }
-            //#endif
-                        hold >>>= op;
-                        bits -= op;
-                        //Tracevv((stderr, "inflate:         distance %u\n", dist));
-                        op = _out - beg;                /* max distance in output */
-                        if (dist > op) {                /* see if copy from window */
-                          op = dist - op;               /* distance back in window */
-                          if (op > whave) {
-                            if (state.sane) {
-                              strm.msg = 'invalid distance too far back';
-                              state.mode = BAD;
-                              break top;
-                            }
-            
-            // (!) This block is disabled in zlib defaults,
-            // don't enable it for binary compatibility
-            //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
-            //                if (len <= op - whave) {
-            //                  do {
-            //                    output[_out++] = 0;
-            //                  } while (--len);
-            //                  continue top;
-            //                }
-            //                len -= op - whave;
-            //                do {
-            //                  output[_out++] = 0;
-            //                } while (--op > whave);
-            //                if (op === 0) {
-            //                  from = _out - dist;
-            //                  do {
-            //                    output[_out++] = output[from++];
-            //                  } while (--len);
-            //                  continue top;
-            //                }
-            //#endif
-                          }
-                          from = 0; // window index
-                          from_source = s_window;
-                          if (wnext === 0) {           /* very common case */
-                            from += wsize - op;
-                            if (op < len) {         /* some from window */
-                              len -= op;
-                              do {
-                                output[_out++] = s_window[from++];
-                              } while (--op);
-                              from = _out - dist;  /* rest from output */
-                              from_source = output;
-                            }
-                          }
-                          else if (wnext < op) {      /* wrap around window */
-                            from += wsize + wnext - op;
-                            op -= wnext;
-                            if (op < len) {         /* some from end of window */
-                              len -= op;
-                              do {
-                                output[_out++] = s_window[from++];
-                              } while (--op);
-                              from = 0;
-                              if (wnext < len) {  /* some from start of window */
-                                op = wnext;
-                                len -= op;
-                                do {
-                                  output[_out++] = s_window[from++];
-                                } while (--op);
-                                from = _out - dist;      /* rest from output */
-                                from_source = output;
-                              }
-                            }
-                          }
-                          else {                      /* contiguous in window */
-                            from += wnext - op;
-                            if (op < len) {         /* some from window */
-                              len -= op;
-                              do {
-                                output[_out++] = s_window[from++];
-                              } while (--op);
-                              from = _out - dist;  /* rest from output */
-                              from_source = output;
-                            }
-                          }
-                          while (len > 2) {
-                            output[_out++] = from_source[from++];
-                            output[_out++] = from_source[from++];
-                            output[_out++] = from_source[from++];
-                            len -= 3;
-                          }
-                          if (len) {
-                            output[_out++] = from_source[from++];
-                            if (len > 1) {
-                              output[_out++] = from_source[from++];
-                            }
-                          }
-                        }
-                        else {
-                          from = _out - dist;          /* copy direct from output */
-                          do {                        /* minimum length is three */
-                            output[_out++] = output[from++];
-                            output[_out++] = output[from++];
-                            output[_out++] = output[from++];
-                            len -= 3;
-                          } while (len > 2);
-                          if (len) {
-                            output[_out++] = output[from++];
-                            if (len > 1) {
-                              output[_out++] = output[from++];
-                            }
-                          }
-                        }
-                      }
-                      else if ((op & 64) === 0) {          /* 2nd level distance code */
-                        here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
-                        continue dodist;
-                      }
-                      else {
-                        strm.msg = 'invalid distance code';
-                        state.mode = BAD;
-                        break top;
-                      }
-            
-                      break; // need to emulate goto via "continue"
-                    }
-                  }
-                  else if ((op & 64) === 0) {              /* 2nd level length code */
-                    here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
-                    continue dolen;
-                  }
-                  else if (op & 32) {                     /* end-of-block */
-                    //Tracevv((stderr, "inflate:         end of block\n"));
-                    state.mode = TYPE;
-                    break top;
-                  }
-                  else {
-                    strm.msg = 'invalid literal/length code';
-                    state.mode = BAD;
-                    break top;
-                  }
-            
-                  break; // need to emulate goto via "continue"
-                }
-              } while (_in < last && _out < end);
-            
-              /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-              len = bits >> 3;
-              _in -= len;
-              bits -= len << 3;
-              hold &= (1 << bits) - 1;
-            
-              /* update state and return */
-              strm.next_in = _in;
-              strm.next_out = _out;
-              strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
-              strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
-              state.hold = hold;
-              state.bits = bits;
-              return;
-            };
-            
-            },{}],11:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            var utils         = require('../utils/common');
-            var adler32       = require('./adler32');
-            var crc32         = require('./crc32');
-            var inflate_fast  = require('./inffast');
-            var inflate_table = require('./inftrees');
-            
-            var CODES = 0;
-            var LENS = 1;
-            var DISTS = 2;
-            
-            /* Public constants ==========================================================*/
-            /* ===========================================================================*/
-            
-            
-            /* Allowed flush values; see deflate() and inflate() below for details */
-            //var Z_NO_FLUSH      = 0;
-            //var Z_PARTIAL_FLUSH = 1;
-            //var Z_SYNC_FLUSH    = 2;
-            //var Z_FULL_FLUSH    = 3;
-            var Z_FINISH        = 4;
-            var Z_BLOCK         = 5;
-            var Z_TREES         = 6;
-            
-            
-            /* Return codes for the compression/decompression functions. Negative values
-             * are errors, positive values are used for special but normal events.
-             */
-            var Z_OK            = 0;
-            var Z_STREAM_END    = 1;
-            var Z_NEED_DICT     = 2;
-            //var Z_ERRNO         = -1;
-            var Z_STREAM_ERROR  = -2;
-            var Z_DATA_ERROR    = -3;
-            var Z_MEM_ERROR     = -4;
-            var Z_BUF_ERROR     = -5;
-            //var Z_VERSION_ERROR = -6;
-            
-            /* The deflate compression method */
-            var Z_DEFLATED  = 8;
-            
-            
-            /* STATES ====================================================================*/
-            /* ===========================================================================*/
-            
-            
-            var    HEAD = 1;       /* i: waiting for magic header */
-            var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
-            var    TIME = 3;       /* i: waiting for modification time (gzip) */
-            var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
-            var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
-            var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
-            var    NAME = 7;       /* i: waiting for end of file name (gzip) */
-            var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
-            var    HCRC = 9;       /* i: waiting for header crc (gzip) */
-            var    DICTID = 10;    /* i: waiting for dictionary check value */
-            var    DICT = 11;      /* waiting for inflateSetDictionary() call */
-            var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
-            var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
-            var        STORED = 14;    /* i: waiting for stored size (length and complement) */
-            var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
-            var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
-            var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
-            var        LENLENS = 18;   /* i: waiting for code length code lengths */
-            var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
-            var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
-            var            LEN = 21;       /* i: waiting for length/lit/eob code */
-            var            LENEXT = 22;    /* i: waiting for length extra bits */
-            var            DIST = 23;      /* i: waiting for distance code */
-            var            DISTEXT = 24;   /* i: waiting for distance extra bits */
-            var            MATCH = 25;     /* o: waiting for output space to copy string */
-            var            LIT = 26;       /* o: waiting for output space to write literal */
-            var    CHECK = 27;     /* i: waiting for 32-bit check value */
-            var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
-            var    DONE = 29;      /* finished check, done -- remain here until reset */
-            var    BAD = 30;       /* got a data error -- remain here until reset */
-            var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
-            var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
-            
-            /* ===========================================================================*/
-            
-            
-            
-            var ENOUGH_LENS = 852;
-            var ENOUGH_DISTS = 592;
-            //var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
-            
-            var MAX_WBITS = 15;
-            /* 32K LZ77 window */
-            var DEF_WBITS = MAX_WBITS;
-            
-            
-            function zswap32(q) {
-              return  (((q >>> 24) & 0xff) +
-                      ((q >>> 8) & 0xff00) +
-                      ((q & 0xff00) << 8) +
-                      ((q & 0xff) << 24));
-            }
-            
-            
-            function InflateState() {
-              this.mode = 0;             /* current inflate mode */
-              this.last = false;          /* true if processing last block */
-              this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
-              this.havedict = false;      /* true if dictionary provided */
-              this.flags = 0;             /* gzip header method and flags (0 if zlib) */
-              this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
-              this.check = 0;             /* protected copy of check value */
-              this.total = 0;             /* protected copy of output count */
-              // TODO: may be {}
-              this.head = null;           /* where to save gzip header information */
-            
-              /* sliding window */
-              this.wbits = 0;             /* log base 2 of requested window size */
-              this.wsize = 0;             /* window size or zero if not using window */
-              this.whave = 0;             /* valid bytes in the window */
-              this.wnext = 0;             /* window write index */
-              this.window = null;         /* allocated sliding window, if needed */
-            
-              /* bit accumulator */
-              this.hold = 0;              /* input bit accumulator */
-              this.bits = 0;              /* number of bits in "in" */
-            
-              /* for string and stored block copying */
-              this.length = 0;            /* literal or length of data to copy */
-              this.offset = 0;            /* distance back to copy string from */
-            
-              /* for table and code decoding */
-              this.extra = 0;             /* extra bits needed */
-            
-              /* fixed and dynamic code tables */
-              this.lencode = null;          /* starting table for length/literal codes */
-              this.distcode = null;         /* starting table for distance codes */
-              this.lenbits = 0;           /* index bits for lencode */
-              this.distbits = 0;          /* index bits for distcode */
-            
-              /* dynamic table building */
-              this.ncode = 0;             /* number of code length code lengths */
-              this.nlen = 0;              /* number of length code lengths */
-              this.ndist = 0;             /* number of distance code lengths */
-              this.have = 0;              /* number of code lengths in lens[] */
-              this.next = null;              /* next available space in codes[] */
-            
-              this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
-              this.work = new utils.Buf16(288); /* work area for code table building */
-            
-              /*
-               because we don't have pointers in js, we use lencode and distcode directly
-               as buffers so we don't need codes
-              */
-              //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
-              this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
-              this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
-              this.sane = 0;                   /* if false, allow invalid distance too far */
-              this.back = 0;                   /* bits back of last unprocessed length/lit */
-              this.was = 0;                    /* initial length of match */
-            }
-            
-            function inflateResetKeep(strm) {
-              var state;
-            
-              if (!strm || !strm.state) { return Z_STREAM_ERROR; }
-              state = strm.state;
-              strm.total_in = strm.total_out = state.total = 0;
-              strm.msg = ''; /*Z_NULL*/
-              if (state.wrap) {       /* to support ill-conceived Java test suite */
-                strm.adler = state.wrap & 1;
-              }
-              state.mode = HEAD;
-              state.last = 0;
-              state.havedict = 0;
-              state.dmax = 32768;
-              state.head = null/*Z_NULL*/;
-              state.hold = 0;
-              state.bits = 0;
-              //state.lencode = state.distcode = state.next = state.codes;
-              state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
-              state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
-            
-              state.sane = 1;
-              state.back = -1;
-              //Tracev((stderr, "inflate: reset\n"));
-              return Z_OK;
-            }
-            
-            function inflateReset(strm) {
-              var state;
-            
-              if (!strm || !strm.state) { return Z_STREAM_ERROR; }
-              state = strm.state;
-              state.wsize = 0;
-              state.whave = 0;
-              state.wnext = 0;
-              return inflateResetKeep(strm);
-            
-            }
-            
-            function inflateReset2(strm, windowBits) {
-              var wrap;
-              var state;
-            
-              /* get the state */
-              if (!strm || !strm.state) { return Z_STREAM_ERROR; }
-              state = strm.state;
-            
-              /* extract wrap request from windowBits parameter */
-              if (windowBits < 0) {
-                wrap = 0;
-                windowBits = -windowBits;
-              }
-              else {
-                wrap = (windowBits >> 4) + 1;
-                if (windowBits < 48) {
-                  windowBits &= 15;
-                }
-              }
-            
-              /* set number of window bits, free window if different */
-              if (windowBits && (windowBits < 8 || windowBits > 15)) {
-                return Z_STREAM_ERROR;
-              }
-              if (state.window !== null && state.wbits !== windowBits) {
-                state.window = null;
-              }
-            
-              /* update state and reset the rest of it */
-              state.wrap = wrap;
-              state.wbits = windowBits;
-              return inflateReset(strm);
-            }
-            
-            function inflateInit2(strm, windowBits) {
-              var ret;
-              var state;
-            
-              if (!strm) { return Z_STREAM_ERROR; }
-              //strm.msg = Z_NULL;                 /* in case we return an error */
-            
-              state = new InflateState();
-            
-              //if (state === Z_NULL) return Z_MEM_ERROR;
-              //Tracev((stderr, "inflate: allocated\n"));
-              strm.state = state;
-              state.window = null/*Z_NULL*/;
-              ret = inflateReset2(strm, windowBits);
-              if (ret !== Z_OK) {
-                strm.state = null/*Z_NULL*/;
-              }
-              return ret;
-            }
-            
-            function inflateInit(strm) {
-              return inflateInit2(strm, DEF_WBITS);
-            }
-            
-            
-            /*
-             Return state with length and distance decoding tables and index sizes set to
-             fixed code decoding.  Normally this returns fixed tables from inffixed.h.
-             If BUILDFIXED is defined, then instead this routine builds the tables the
-             first time it's called, and returns those tables the first time and
-             thereafter.  This reduces the size of the code by about 2K bytes, in
-             exchange for a little execution time.  However, BUILDFIXED should not be
-             used for threaded applications, since the rewriting of the tables and virgin
-             may not be thread-safe.
-             */
-            var virgin = true;
-            
-            var lenfix, distfix; // We have no pointers in JS, so keep tables separate
-            
-            function fixedtables(state) {
-              /* build fixed huffman tables if first call (may not be thread safe) */
-              if (virgin) {
-                var sym;
-            
-                lenfix = new utils.Buf32(512);
-                distfix = new utils.Buf32(32);
-            
-                /* literal/length table */
-                sym = 0;
-                while (sym < 144) { state.lens[sym++] = 8; }
-                while (sym < 256) { state.lens[sym++] = 9; }
-                while (sym < 280) { state.lens[sym++] = 7; }
-                while (sym < 288) { state.lens[sym++] = 8; }
-            
-                inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
-            
-                /* distance table */
-                sym = 0;
-                while (sym < 32) { state.lens[sym++] = 5; }
-            
-                inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
-            
-                /* do this just once */
-                virgin = false;
-              }
-            
-              state.lencode = lenfix;
-              state.lenbits = 9;
-              state.distcode = distfix;
-              state.distbits = 5;
-            }
-            
-            
-            /*
-             Update the window with the last wsize (normally 32K) bytes written before
-             returning.  If window does not exist yet, create it.  This is only called
-             when a window is already in use, or when output has been written during this
-             inflate call, but the end of the deflate stream has not been reached yet.
-             It is also called to create a window for dictionary data when a dictionary
-             is loaded.
-            
-             Providing output buffers larger than 32K to inflate() should provide a speed
-             advantage, since only the last 32K of output is copied to the sliding window
-             upon return from inflate(), and since all distances after the first 32K of
-             output will fall in the output data, making match copies simpler and faster.
-             The advantage may be dependent on the size of the processor's data caches.
-             */
-            function updatewindow(strm, src, end, copy) {
-              var dist;
-              var state = strm.state;
-            
-              /* if it hasn't been done already, allocate space for the window */
-              if (state.window === null) {
-                state.wsize = 1 << state.wbits;
-                state.wnext = 0;
-                state.whave = 0;
-            
-                state.window = new utils.Buf8(state.wsize);
-              }
-            
-              /* copy state->wsize or less output bytes into the circular window */
-              if (copy >= state.wsize) {
-                utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
-                state.wnext = 0;
-                state.whave = state.wsize;
-              }
-              else {
-                dist = state.wsize - state.wnext;
-                if (dist > copy) {
-                  dist = copy;
-                }
-                //zmemcpy(state->window + state->wnext, end - copy, dist);
-                utils.arraySet(state.window, src, end - copy, dist, state.wnext);
-                copy -= dist;
-                if (copy) {
-                  //zmemcpy(state->window, end - copy, copy);
-                  utils.arraySet(state.window, src, end - copy, copy, 0);
-                  state.wnext = copy;
-                  state.whave = state.wsize;
-                }
-                else {
-                  state.wnext += dist;
-                  if (state.wnext === state.wsize) { state.wnext = 0; }
-                  if (state.whave < state.wsize) { state.whave += dist; }
-                }
-              }
-              return 0;
-            }
-            
-            function inflate(strm, flush) {
-              var state;
-              var input, output;          // input/output buffers
-              var next;                   /* next input INDEX */
-              var put;                    /* next output INDEX */
-              var have, left;             /* available input and output */
-              var hold;                   /* bit buffer */
-              var bits;                   /* bits in bit buffer */
-              var _in, _out;              /* save starting available input and output */
-              var copy;                   /* number of stored or match bytes to copy */
-              var from;                   /* where to copy match bytes from */
-              var from_source;
-              var here = 0;               /* current decoding table entry */
-              var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
-              //var last;                   /* parent table entry */
-              var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
-              var len;                    /* length to copy for repeats, bits to drop */
-              var ret;                    /* return code */
-              var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
-              var opts;
-            
-              var n; // temporary var for NEED_BITS
-            
-              var order = /* permutation of code lengths */
-                [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
-            
-            
-              if (!strm || !strm.state || !strm.output ||
-                  (!strm.input && strm.avail_in !== 0)) {
-                return Z_STREAM_ERROR;
-              }
-            
-              state = strm.state;
-              if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
-            
-            
-              //--- LOAD() ---
-              put = strm.next_out;
-              output = strm.output;
-              left = strm.avail_out;
-              next = strm.next_in;
-              input = strm.input;
-              have = strm.avail_in;
-              hold = state.hold;
-              bits = state.bits;
-              //---
-            
-              _in = have;
-              _out = left;
-              ret = Z_OK;
-            
-              inf_leave: // goto emulation
-              for (;;) {
-                switch (state.mode) {
-                  case HEAD:
-                    if (state.wrap === 0) {
-                      state.mode = TYPEDO;
-                      break;
-                    }
-                    //=== NEEDBITS(16);
-                    while (bits < 16) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
-                      state.check = 0/*crc32(0L, Z_NULL, 0)*/;
-                      //=== CRC2(state.check, hold);
-                      hbuf[0] = hold & 0xff;
-                      hbuf[1] = (hold >>> 8) & 0xff;
-                      state.check = crc32(state.check, hbuf, 2, 0);
-                      //===//
-            
-                      //=== INITBITS();
-                      hold = 0;
-                      bits = 0;
-                      //===//
-                      state.mode = FLAGS;
-                      break;
-                    }
-                    state.flags = 0;           /* expect zlib header */
-                    if (state.head) {
-                      state.head.done = false;
-                    }
-                    if (!(state.wrap & 1) ||   /* check if zlib header allowed */
-                      (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
-                      strm.msg = 'incorrect header check';
-                      state.mode = BAD;
-                      break;
-                    }
-                    if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
-                      strm.msg = 'unknown compression method';
-                      state.mode = BAD;
-                      break;
-                    }
-                    //--- DROPBITS(4) ---//
-                    hold >>>= 4;
-                    bits -= 4;
-                    //---//
-                    len = (hold & 0x0f)/*BITS(4)*/ + 8;
-                    if (state.wbits === 0) {
-                      state.wbits = len;
-                    }
-                    else if (len > state.wbits) {
-                      strm.msg = 'invalid window size';
-                      state.mode = BAD;
-                      break;
-                    }
-                    state.dmax = 1 << len;
-                    //Tracev((stderr, "inflate:   zlib header ok\n"));
-                    strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
-                    state.mode = hold & 0x200 ? DICTID : TYPE;
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    break;
-                  case FLAGS:
-                    //=== NEEDBITS(16); */
-                    while (bits < 16) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    state.flags = hold;
-                    if ((state.flags & 0xff) !== Z_DEFLATED) {
-                      strm.msg = 'unknown compression method';
-                      state.mode = BAD;
-                      break;
-                    }
-                    if (state.flags & 0xe000) {
-                      strm.msg = 'unknown header flags set';
-                      state.mode = BAD;
-                      break;
-                    }
-                    if (state.head) {
-                      state.head.text = ((hold >> 8) & 1);
-                    }
-                    if (state.flags & 0x0200) {
-                      //=== CRC2(state.check, hold);
-                      hbuf[0] = hold & 0xff;
-                      hbuf[1] = (hold >>> 8) & 0xff;
-                      state.check = crc32(state.check, hbuf, 2, 0);
-                      //===//
-                    }
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    state.mode = TIME;
-                    /* falls through */
-                  case TIME:
-                    //=== NEEDBITS(32); */
-                    while (bits < 32) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    if (state.head) {
-                      state.head.time = hold;
-                    }
-                    if (state.flags & 0x0200) {
-                      //=== CRC4(state.check, hold)
-                      hbuf[0] = hold & 0xff;
-                      hbuf[1] = (hold >>> 8) & 0xff;
-                      hbuf[2] = (hold >>> 16) & 0xff;
-                      hbuf[3] = (hold >>> 24) & 0xff;
-                      state.check = crc32(state.check, hbuf, 4, 0);
-                      //===
-                    }
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    state.mode = OS;
-                    /* falls through */
-                  case OS:
-                    //=== NEEDBITS(16); */
-                    while (bits < 16) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    if (state.head) {
-                      state.head.xflags = (hold & 0xff);
-                      state.head.os = (hold >> 8);
-                    }
-                    if (state.flags & 0x0200) {
-                      //=== CRC2(state.check, hold);
-                      hbuf[0] = hold & 0xff;
-                      hbuf[1] = (hold >>> 8) & 0xff;
-                      state.check = crc32(state.check, hbuf, 2, 0);
-                      //===//
-                    }
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    state.mode = EXLEN;
-                    /* falls through */
-                  case EXLEN:
-                    if (state.flags & 0x0400) {
-                      //=== NEEDBITS(16); */
-                      while (bits < 16) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      state.length = hold;
-                      if (state.head) {
-                        state.head.extra_len = hold;
-                      }
-                      if (state.flags & 0x0200) {
-                        //=== CRC2(state.check, hold);
-                        hbuf[0] = hold & 0xff;
-                        hbuf[1] = (hold >>> 8) & 0xff;
-                        state.check = crc32(state.check, hbuf, 2, 0);
-                        //===//
-                      }
-                      //=== INITBITS();
-                      hold = 0;
-                      bits = 0;
-                      //===//
-                    }
-                    else if (state.head) {
-                      state.head.extra = null/*Z_NULL*/;
-                    }
-                    state.mode = EXTRA;
-                    /* falls through */
-                  case EXTRA:
-                    if (state.flags & 0x0400) {
-                      copy = state.length;
-                      if (copy > have) { copy = have; }
-                      if (copy) {
-                        if (state.head) {
-                          len = state.head.extra_len - state.length;
-                          if (!state.head.extra) {
-                            // Use untyped array for more convenient processing later
-                            state.head.extra = new Array(state.head.extra_len);
-                          }
-                          utils.arraySet(
-                            state.head.extra,
-                            input,
-                            next,
-                            // extra field is limited to 65536 bytes
-                            // - no need for additional size check
-                            copy,
-                            /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
-                            len
-                          );
-                          //zmemcpy(state.head.extra + len, next,
-                          //        len + copy > state.head.extra_max ?
-                          //        state.head.extra_max - len : copy);
-                        }
-                        if (state.flags & 0x0200) {
-                          state.check = crc32(state.check, input, copy, next);
-                        }
-                        have -= copy;
-                        next += copy;
-                        state.length -= copy;
-                      }
-                      if (state.length) { break inf_leave; }
-                    }
-                    state.length = 0;
-                    state.mode = NAME;
-                    /* falls through */
-                  case NAME:
-                    if (state.flags & 0x0800) {
-                      if (have === 0) { break inf_leave; }
-                      copy = 0;
-                      do {
-                        // TODO: 2 or 1 bytes?
-                        len = input[next + copy++];
-                        /* use constant limit because in js we should not preallocate memory */
-                        if (state.head && len &&
-                            (state.length < 65536 /*state.head.name_max*/)) {
-                          state.head.name += String.fromCharCode(len);
-                        }
-                      } while (len && copy < have);
-            
-                      if (state.flags & 0x0200) {
-                        state.check = crc32(state.check, input, copy, next);
-                      }
-                      have -= copy;
-                      next += copy;
-                      if (len) { break inf_leave; }
-                    }
-                    else if (state.head) {
-                      state.head.name = null;
-                    }
-                    state.length = 0;
-                    state.mode = COMMENT;
-                    /* falls through */
-                  case COMMENT:
-                    if (state.flags & 0x1000) {
-                      if (have === 0) { break inf_leave; }
-                      copy = 0;
-                      do {
-                        len = input[next + copy++];
-                        /* use constant limit because in js we should not preallocate memory */
-                        if (state.head && len &&
-                            (state.length < 65536 /*state.head.comm_max*/)) {
-                          state.head.comment += String.fromCharCode(len);
-                        }
-                      } while (len && copy < have);
-                      if (state.flags & 0x0200) {
-                        state.check = crc32(state.check, input, copy, next);
-                      }
-                      have -= copy;
-                      next += copy;
-                      if (len) { break inf_leave; }
-                    }
-                    else if (state.head) {
-                      state.head.comment = null;
-                    }
-                    state.mode = HCRC;
-                    /* falls through */
-                  case HCRC:
-                    if (state.flags & 0x0200) {
-                      //=== NEEDBITS(16); */
-                      while (bits < 16) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      if (hold !== (state.check & 0xffff)) {
-                        strm.msg = 'header crc mismatch';
-                        state.mode = BAD;
-                        break;
-                      }
-                      //=== INITBITS();
-                      hold = 0;
-                      bits = 0;
-                      //===//
-                    }
-                    if (state.head) {
-                      state.head.hcrc = ((state.flags >> 9) & 1);
-                      state.head.done = true;
-                    }
-                    strm.adler = state.check = 0;
-                    state.mode = TYPE;
-                    break;
-                  case DICTID:
-                    //=== NEEDBITS(32); */
-                    while (bits < 32) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    strm.adler = state.check = zswap32(hold);
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    state.mode = DICT;
-                    /* falls through */
-                  case DICT:
-                    if (state.havedict === 0) {
-                      //--- RESTORE() ---
-                      strm.next_out = put;
-                      strm.avail_out = left;
-                      strm.next_in = next;
-                      strm.avail_in = have;
-                      state.hold = hold;
-                      state.bits = bits;
-                      //---
-                      return Z_NEED_DICT;
-                    }
-                    strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
-                    state.mode = TYPE;
-                    /* falls through */
-                  case TYPE:
-                    if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
-                    /* falls through */
-                  case TYPEDO:
-                    if (state.last) {
-                      //--- BYTEBITS() ---//
-                      hold >>>= bits & 7;
-                      bits -= bits & 7;
-                      //---//
-                      state.mode = CHECK;
-                      break;
-                    }
-                    //=== NEEDBITS(3); */
-                    while (bits < 3) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    state.last = (hold & 0x01)/*BITS(1)*/;
-                    //--- DROPBITS(1) ---//
-                    hold >>>= 1;
-                    bits -= 1;
-                    //---//
-            
-                    switch ((hold & 0x03)/*BITS(2)*/) {
-                      case 0:                             /* stored block */
-                        //Tracev((stderr, "inflate:     stored block%s\n",
-                        //        state.last ? " (last)" : ""));
-                        state.mode = STORED;
-                        break;
-                      case 1:                             /* fixed block */
-                        fixedtables(state);
-                        //Tracev((stderr, "inflate:     fixed codes block%s\n",
-                        //        state.last ? " (last)" : ""));
-                        state.mode = LEN_;             /* decode codes */
-                        if (flush === Z_TREES) {
-                          //--- DROPBITS(2) ---//
-                          hold >>>= 2;
-                          bits -= 2;
-                          //---//
-                          break inf_leave;
-                        }
-                        break;
-                      case 2:                             /* dynamic block */
-                        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
-                        //        state.last ? " (last)" : ""));
-                        state.mode = TABLE;
-                        break;
-                      case 3:
-                        strm.msg = 'invalid block type';
-                        state.mode = BAD;
-                    }
-                    //--- DROPBITS(2) ---//
-                    hold >>>= 2;
-                    bits -= 2;
-                    //---//
-                    break;
-                  case STORED:
-                    //--- BYTEBITS() ---// /* go to byte boundary */
-                    hold >>>= bits & 7;
-                    bits -= bits & 7;
-                    //---//
-                    //=== NEEDBITS(32); */
-                    while (bits < 32) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
-                      strm.msg = 'invalid stored block lengths';
-                      state.mode = BAD;
-                      break;
-                    }
-                    state.length = hold & 0xffff;
-                    //Tracev((stderr, "inflate:       stored length %u\n",
-                    //        state.length));
-                    //=== INITBITS();
-                    hold = 0;
-                    bits = 0;
-                    //===//
-                    state.mode = COPY_;
-                    if (flush === Z_TREES) { break inf_leave; }
-                    /* falls through */
-                  case COPY_:
-                    state.mode = COPY;
-                    /* falls through */
-                  case COPY:
-                    copy = state.length;
-                    if (copy) {
-                      if (copy > have) { copy = have; }
-                      if (copy > left) { copy = left; }
-                      if (copy === 0) { break inf_leave; }
-                      //--- zmemcpy(put, next, copy); ---
-                      utils.arraySet(output, input, next, copy, put);
-                      //---//
-                      have -= copy;
-                      next += copy;
-                      left -= copy;
-                      put += copy;
-                      state.length -= copy;
-                      break;
-                    }
-                    //Tracev((stderr, "inflate:       stored end\n"));
-                    state.mode = TYPE;
-                    break;
-                  case TABLE:
-                    //=== NEEDBITS(14); */
-                    while (bits < 14) {
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                    }
-                    //===//
-                    state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
-                    //--- DROPBITS(5) ---//
-                    hold >>>= 5;
-                    bits -= 5;
-                    //---//
-                    state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
-                    //--- DROPBITS(5) ---//
-                    hold >>>= 5;
-                    bits -= 5;
-                    //---//
-                    state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
-                    //--- DROPBITS(4) ---//
-                    hold >>>= 4;
-                    bits -= 4;
-                    //---//
-            //#ifndef PKZIP_BUG_WORKAROUND
-                    if (state.nlen > 286 || state.ndist > 30) {
-                      strm.msg = 'too many length or distance symbols';
-                      state.mode = BAD;
-                      break;
-                    }
-            //#endif
-                    //Tracev((stderr, "inflate:       table sizes ok\n"));
-                    state.have = 0;
-                    state.mode = LENLENS;
-                    /* falls through */
-                  case LENLENS:
-                    while (state.have < state.ncode) {
-                      //=== NEEDBITS(3);
-                      while (bits < 3) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
-                      //--- DROPBITS(3) ---//
-                      hold >>>= 3;
-                      bits -= 3;
-                      //---//
-                    }
-                    while (state.have < 19) {
-                      state.lens[order[state.have++]] = 0;
-                    }
-                    // We have separate tables & no pointers. 2 commented lines below not needed.
-                    //state.next = state.codes;
-                    //state.lencode = state.next;
-                    // Switch to use dynamic table
-                    state.lencode = state.lendyn;
-                    state.lenbits = 7;
-            
-                    opts = { bits: state.lenbits };
-                    ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
-                    state.lenbits = opts.bits;
-            
-                    if (ret) {
-                      strm.msg = 'invalid code lengths set';
-                      state.mode = BAD;
-                      break;
-                    }
-                    //Tracev((stderr, "inflate:       code lengths ok\n"));
-                    state.have = 0;
-                    state.mode = CODELENS;
-                    /* falls through */
-                  case CODELENS:
-                    while (state.have < state.nlen + state.ndist) {
-                      for (;;) {
-                        here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
-                        here_bits = here >>> 24;
-                        here_op = (here >>> 16) & 0xff;
-                        here_val = here & 0xffff;
-            
-                        if ((here_bits) <= bits) { break; }
-                        //--- PULLBYTE() ---//
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                        //---//
-                      }
-                      if (here_val < 16) {
-                        //--- DROPBITS(here.bits) ---//
-                        hold >>>= here_bits;
-                        bits -= here_bits;
-                        //---//
-                        state.lens[state.have++] = here_val;
-                      }
-                      else {
-                        if (here_val === 16) {
-                          //=== NEEDBITS(here.bits + 2);
-                          n = here_bits + 2;
-                          while (bits < n) {
-                            if (have === 0) { break inf_leave; }
-                            have--;
-                            hold += input[next++] << bits;
-                            bits += 8;
-                          }
-                          //===//
-                          //--- DROPBITS(here.bits) ---//
-                          hold >>>= here_bits;
-                          bits -= here_bits;
-                          //---//
-                          if (state.have === 0) {
-                            strm.msg = 'invalid bit length repeat';
-                            state.mode = BAD;
-                            break;
-                          }
-                          len = state.lens[state.have - 1];
-                          copy = 3 + (hold & 0x03);//BITS(2);
-                          //--- DROPBITS(2) ---//
-                          hold >>>= 2;
-                          bits -= 2;
-                          //---//
-                        }
-                        else if (here_val === 17) {
-                          //=== NEEDBITS(here.bits + 3);
-                          n = here_bits + 3;
-                          while (bits < n) {
-                            if (have === 0) { break inf_leave; }
-                            have--;
-                            hold += input[next++] << bits;
-                            bits += 8;
-                          }
-                          //===//
-                          //--- DROPBITS(here.bits) ---//
-                          hold >>>= here_bits;
-                          bits -= here_bits;
-                          //---//
-                          len = 0;
-                          copy = 3 + (hold & 0x07);//BITS(3);
-                          //--- DROPBITS(3) ---//
-                          hold >>>= 3;
-                          bits -= 3;
-                          //---//
-                        }
-                        else {
-                          //=== NEEDBITS(here.bits + 7);
-                          n = here_bits + 7;
-                          while (bits < n) {
-                            if (have === 0) { break inf_leave; }
-                            have--;
-                            hold += input[next++] << bits;
-                            bits += 8;
-                          }
-                          //===//
-                          //--- DROPBITS(here.bits) ---//
-                          hold >>>= here_bits;
-                          bits -= here_bits;
-                          //---//
-                          len = 0;
-                          copy = 11 + (hold & 0x7f);//BITS(7);
-                          //--- DROPBITS(7) ---//
-                          hold >>>= 7;
-                          bits -= 7;
-                          //---//
-                        }
-                        if (state.have + copy > state.nlen + state.ndist) {
-                          strm.msg = 'invalid bit length repeat';
-                          state.mode = BAD;
-                          break;
-                        }
-                        while (copy--) {
-                          state.lens[state.have++] = len;
-                        }
-                      }
-                    }
-            
-                    /* handle error breaks in while */
-                    if (state.mode === BAD) { break; }
-            
-                    /* check for end-of-block code (better have one) */
-                    if (state.lens[256] === 0) {
-                      strm.msg = 'invalid code -- missing end-of-block';
-                      state.mode = BAD;
-                      break;
-                    }
-            
-                    /* build code tables -- note: do not change the lenbits or distbits
-                       values here (9 and 6) without reading the comments in inftrees.h
-                       concerning the ENOUGH constants, which depend on those values */
-                    state.lenbits = 9;
-            
-                    opts = { bits: state.lenbits };
-                    ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
-                    // We have separate tables & no pointers. 2 commented lines below not needed.
-                    // state.next_index = opts.table_index;
-                    state.lenbits = opts.bits;
-                    // state.lencode = state.next;
-            
-                    if (ret) {
-                      strm.msg = 'invalid literal/lengths set';
-                      state.mode = BAD;
-                      break;
-                    }
-            
-                    state.distbits = 6;
-                    //state.distcode.copy(state.codes);
-                    // Switch to use dynamic table
-                    state.distcode = state.distdyn;
-                    opts = { bits: state.distbits };
-                    ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
-                    // We have separate tables & no pointers. 2 commented lines below not needed.
-                    // state.next_index = opts.table_index;
-                    state.distbits = opts.bits;
-                    // state.distcode = state.next;
-            
-                    if (ret) {
-                      strm.msg = 'invalid distances set';
-                      state.mode = BAD;
-                      break;
-                    }
-                    //Tracev((stderr, 'inflate:       codes ok\n'));
-                    state.mode = LEN_;
-                    if (flush === Z_TREES) { break inf_leave; }
-                    /* falls through */
-                  case LEN_:
-                    state.mode = LEN;
-                    /* falls through */
-                  case LEN:
-                    if (have >= 6 && left >= 258) {
-                      //--- RESTORE() ---
-                      strm.next_out = put;
-                      strm.avail_out = left;
-                      strm.next_in = next;
-                      strm.avail_in = have;
-                      state.hold = hold;
-                      state.bits = bits;
-                      //---
-                      inflate_fast(strm, _out);
-                      //--- LOAD() ---
-                      put = strm.next_out;
-                      output = strm.output;
-                      left = strm.avail_out;
-                      next = strm.next_in;
-                      input = strm.input;
-                      have = strm.avail_in;
-                      hold = state.hold;
-                      bits = state.bits;
-                      //---
-            
-                      if (state.mode === TYPE) {
-                        state.back = -1;
-                      }
-                      break;
-                    }
-                    state.back = 0;
-                    for (;;) {
-                      here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
-                      here_bits = here >>> 24;
-                      here_op = (here >>> 16) & 0xff;
-                      here_val = here & 0xffff;
-            
-                      if (here_bits <= bits) { break; }
-                      //--- PULLBYTE() ---//
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                      //---//
-                    }
-                    if (here_op && (here_op & 0xf0) === 0) {
-                      last_bits = here_bits;
-                      last_op = here_op;
-                      last_val = here_val;
-                      for (;;) {
-                        here = state.lencode[last_val +
-                                ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
-                        here_bits = here >>> 24;
-                        here_op = (here >>> 16) & 0xff;
-                        here_val = here & 0xffff;
-            
-                        if ((last_bits + here_bits) <= bits) { break; }
-                        //--- PULLBYTE() ---//
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                        //---//
-                      }
-                      //--- DROPBITS(last.bits) ---//
-                      hold >>>= last_bits;
-                      bits -= last_bits;
-                      //---//
-                      state.back += last_bits;
-                    }
-                    //--- DROPBITS(here.bits) ---//
-                    hold >>>= here_bits;
-                    bits -= here_bits;
-                    //---//
-                    state.back += here_bits;
-                    state.length = here_val;
-                    if (here_op === 0) {
-                      //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
-                      //        "inflate:         literal '%c'\n" :
-                      //        "inflate:         literal 0x%02x\n", here.val));
-                      state.mode = LIT;
-                      break;
-                    }
-                    if (here_op & 32) {
-                      //Tracevv((stderr, "inflate:         end of block\n"));
-                      state.back = -1;
-                      state.mode = TYPE;
-                      break;
-                    }
-                    if (here_op & 64) {
-                      strm.msg = 'invalid literal/length code';
-                      state.mode = BAD;
-                      break;
-                    }
-                    state.extra = here_op & 15;
-                    state.mode = LENEXT;
-                    /* falls through */
-                  case LENEXT:
-                    if (state.extra) {
-                      //=== NEEDBITS(state.extra);
-                      n = state.extra;
-                      while (bits < n) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
-                      //--- DROPBITS(state.extra) ---//
-                      hold >>>= state.extra;
-                      bits -= state.extra;
-                      //---//
-                      state.back += state.extra;
-                    }
-                    //Tracevv((stderr, "inflate:         length %u\n", state.length));
-                    state.was = state.length;
-                    state.mode = DIST;
-                    /* falls through */
-                  case DIST:
-                    for (;;) {
-                      here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
-                      here_bits = here >>> 24;
-                      here_op = (here >>> 16) & 0xff;
-                      here_val = here & 0xffff;
-            
-                      if ((here_bits) <= bits) { break; }
-                      //--- PULLBYTE() ---//
-                      if (have === 0) { break inf_leave; }
-                      have--;
-                      hold += input[next++] << bits;
-                      bits += 8;
-                      //---//
-                    }
-                    if ((here_op & 0xf0) === 0) {
-                      last_bits = here_bits;
-                      last_op = here_op;
-                      last_val = here_val;
-                      for (;;) {
-                        here = state.distcode[last_val +
-                                ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
-                        here_bits = here >>> 24;
-                        here_op = (here >>> 16) & 0xff;
-                        here_val = here & 0xffff;
-            
-                        if ((last_bits + here_bits) <= bits) { break; }
-                        //--- PULLBYTE() ---//
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                        //---//
-                      }
-                      //--- DROPBITS(last.bits) ---//
-                      hold >>>= last_bits;
-                      bits -= last_bits;
-                      //---//
-                      state.back += last_bits;
-                    }
-                    //--- DROPBITS(here.bits) ---//
-                    hold >>>= here_bits;
-                    bits -= here_bits;
-                    //---//
-                    state.back += here_bits;
-                    if (here_op & 64) {
-                      strm.msg = 'invalid distance code';
-                      state.mode = BAD;
-                      break;
-                    }
-                    state.offset = here_val;
-                    state.extra = (here_op) & 15;
-                    state.mode = DISTEXT;
-                    /* falls through */
-                  case DISTEXT:
-                    if (state.extra) {
-                      //=== NEEDBITS(state.extra);
-                      n = state.extra;
-                      while (bits < n) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
-                      //--- DROPBITS(state.extra) ---//
-                      hold >>>= state.extra;
-                      bits -= state.extra;
-                      //---//
-                      state.back += state.extra;
-                    }
-            //#ifdef INFLATE_STRICT
-                    if (state.offset > state.dmax) {
-                      strm.msg = 'invalid distance too far back';
-                      state.mode = BAD;
-                      break;
-                    }
-            //#endif
-                    //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
-                    state.mode = MATCH;
-                    /* falls through */
-                  case MATCH:
-                    if (left === 0) { break inf_leave; }
-                    copy = _out - left;
-                    if (state.offset > copy) {         /* copy from window */
-                      copy = state.offset - copy;
-                      if (copy > state.whave) {
-                        if (state.sane) {
-                          strm.msg = 'invalid distance too far back';
-                          state.mode = BAD;
-                          break;
-                        }
-            // (!) This block is disabled in zlib defaults,
-            // don't enable it for binary compatibility
-            //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
-            //          Trace((stderr, "inflate.c too far\n"));
-            //          copy -= state.whave;
-            //          if (copy > state.length) { copy = state.length; }
-            //          if (copy > left) { copy = left; }
-            //          left -= copy;
-            //          state.length -= copy;
-            //          do {
-            //            output[put++] = 0;
-            //          } while (--copy);
-            //          if (state.length === 0) { state.mode = LEN; }
-            //          break;
-            //#endif
-                      }
-                      if (copy > state.wnext) {
-                        copy -= state.wnext;
-                        from = state.wsize - copy;
-                      }
-                      else {
-                        from = state.wnext - copy;
-                      }
-                      if (copy > state.length) { copy = state.length; }
-                      from_source = state.window;
-                    }
-                    else {                              /* copy from output */
-                      from_source = output;
-                      from = put - state.offset;
-                      copy = state.length;
-                    }
-                    if (copy > left) { copy = left; }
-                    left -= copy;
-                    state.length -= copy;
-                    do {
-                      output[put++] = from_source[from++];
-                    } while (--copy);
-                    if (state.length === 0) { state.mode = LEN; }
-                    break;
-                  case LIT:
-                    if (left === 0) { break inf_leave; }
-                    output[put++] = state.length;
-                    left--;
-                    state.mode = LEN;
-                    break;
-                  case CHECK:
-                    if (state.wrap) {
-                      //=== NEEDBITS(32);
-                      while (bits < 32) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        // Use '|' instead of '+' to make sure that result is signed
-                        hold |= input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      _out -= left;
-                      strm.total_out += _out;
-                      state.total += _out;
-                      if (_out) {
-                        strm.adler = state.check =
-                            /*UPDATE(state.check, put - _out, _out);*/
-                            (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
-            
-                      }
-                      _out = left;
-                      // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
-                      if ((state.flags ? hold : zswap32(hold)) !== state.check) {
-                        strm.msg = 'incorrect data check';
-                        state.mode = BAD;
-                        break;
-                      }
-                      //=== INITBITS();
-                      hold = 0;
-                      bits = 0;
-                      //===//
-                      //Tracev((stderr, "inflate:   check matches trailer\n"));
-                    }
-                    state.mode = LENGTH;
-                    /* falls through */
-                  case LENGTH:
-                    if (state.wrap && state.flags) {
-                      //=== NEEDBITS(32);
-                      while (bits < 32) {
-                        if (have === 0) { break inf_leave; }
-                        have--;
-                        hold += input[next++] << bits;
-                        bits += 8;
-                      }
-                      //===//
-                      if (hold !== (state.total & 0xffffffff)) {
-                        strm.msg = 'incorrect length check';
-                        state.mode = BAD;
-                        break;
-                      }
-                      //=== INITBITS();
-                      hold = 0;
-                      bits = 0;
-                      //===//
-                      //Tracev((stderr, "inflate:   length matches trailer\n"));
-                    }
-                    state.mode = DONE;
-                    /* falls through */
-                  case DONE:
-                    ret = Z_STREAM_END;
-                    break inf_leave;
-                  case BAD:
-                    ret = Z_DATA_ERROR;
-                    break inf_leave;
-                  case MEM:
-                    return Z_MEM_ERROR;
-                  case SYNC:
-                    /* falls through */
-                  default:
-                    return Z_STREAM_ERROR;
-                }
-              }
-            
-              // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
-            
-              /*
-                 Return from inflate(), updating the total counts and the check value.
-                 If there was no progress during the inflate() call, return a buffer
-                 error.  Call updatewindow() to create and/or update the window state.
-                 Note: a memory error from inflate() is non-recoverable.
-               */
-            
-              //--- RESTORE() ---
-              strm.next_out = put;
-              strm.avail_out = left;
-              strm.next_in = next;
-              strm.avail_in = have;
-              state.hold = hold;
-              state.bits = bits;
-              //---
-            
-              if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
-                                  (state.mode < CHECK || flush !== Z_FINISH))) {
-                if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
-                  state.mode = MEM;
-                  return Z_MEM_ERROR;
-                }
-              }
-              _in -= strm.avail_in;
-              _out -= strm.avail_out;
-              strm.total_in += _in;
-              strm.total_out += _out;
-              state.total += _out;
-              if (state.wrap && _out) {
-                strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
-                  (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
-              }
-              strm.data_type = state.bits + (state.last ? 64 : 0) +
-                                (state.mode === TYPE ? 128 : 0) +
-                                (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
-              if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
-                ret = Z_BUF_ERROR;
-              }
-              return ret;
-            }
-            
-            function inflateEnd(strm) {
-            
-              if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
-                return Z_STREAM_ERROR;
-              }
-            
-              var state = strm.state;
-              if (state.window) {
-                state.window = null;
-              }
-              strm.state = null;
-              return Z_OK;
-            }
-            
-            function inflateGetHeader(strm, head) {
-              var state;
-            
-              /* check state */
-              if (!strm || !strm.state) { return Z_STREAM_ERROR; }
-              state = strm.state;
-              if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
-            
-              /* save header structure */
-              state.head = head;
-              head.done = false;
-              return Z_OK;
-            }
-            
-            function inflateSetDictionary(strm, dictionary) {
-              var dictLength = dictionary.length;
-            
-              var state;
-              var dictid;
-              var ret;
-            
-              /* check state */
-              if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
-              state = strm.state;
-            
-              if (state.wrap !== 0 && state.mode !== DICT) {
-                return Z_STREAM_ERROR;
-              }
-            
-              /* check for correct dictionary identifier */
-              if (state.mode === DICT) {
-                dictid = 1; /* adler32(0, null, 0)*/
-                /* dictid = adler32(dictid, dictionary, dictLength); */
-                dictid = adler32(dictid, dictionary, dictLength, 0);
-                if (dictid !== state.check) {
-                  return Z_DATA_ERROR;
-                }
-              }
-              /* copy dictionary to window using updatewindow(), which will amend the
-               existing dictionary if appropriate */
-              ret = updatewindow(strm, dictionary, dictLength, dictLength);
-              if (ret) {
-                state.mode = MEM;
-                return Z_MEM_ERROR;
-              }
-              state.havedict = 1;
-              // Tracev((stderr, "inflate:   dictionary set\n"));
-              return Z_OK;
-            }
-            
-            exports.inflateReset = inflateReset;
-            exports.inflateReset2 = inflateReset2;
-            exports.inflateResetKeep = inflateResetKeep;
-            exports.inflateInit = inflateInit;
-            exports.inflateInit2 = inflateInit2;
-            exports.inflate = inflate;
-            exports.inflateEnd = inflateEnd;
-            exports.inflateGetHeader = inflateGetHeader;
-            exports.inflateSetDictionary = inflateSetDictionary;
-            exports.inflateInfo = 'pako inflate (from Nodeca project)';
-            
-            /* Not implemented
-            exports.inflateCopy = inflateCopy;
-            exports.inflateGetDictionary = inflateGetDictionary;
-            exports.inflateMark = inflateMark;
-            exports.inflatePrime = inflatePrime;
-            exports.inflateSync = inflateSync;
-            exports.inflateSyncPoint = inflateSyncPoint;
-            exports.inflateUndermine = inflateUndermine;
-            */
-            
-            },{"../utils/common":3,"./adler32":5,"./crc32":7,"./inffast":10,"./inftrees":12}],12:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            var utils = require('../utils/common');
-            
-            var MAXBITS = 15;
-            var ENOUGH_LENS = 852;
-            var ENOUGH_DISTS = 592;
-            //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
-            
-            var CODES = 0;
-            var LENS = 1;
-            var DISTS = 2;
-            
-            var lbase = [ /* Length codes 257..285 base */
-              3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-              35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
-            ];
-            
-            var lext = [ /* Length codes 257..285 extra */
-              16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-              19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
-            ];
-            
-            var dbase = [ /* Distance codes 0..29 base */
-              1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-              257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-              8193, 12289, 16385, 24577, 0, 0
-            ];
-            
-            var dext = [ /* Distance codes 0..29 extra */
-              16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
-              23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
-              28, 28, 29, 29, 64, 64
-            ];
-            
-            module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
-            {
-              var bits = opts.bits;
-                  //here = opts.here; /* table entry for duplication */
-            
-              var len = 0;               /* a code's length in bits */
-              var sym = 0;               /* index of code symbols */
-              var min = 0, max = 0;          /* minimum and maximum code lengths */
-              var root = 0;              /* number of index bits for root table */
-              var curr = 0;              /* number of index bits for current table */
-              var drop = 0;              /* code bits to drop for sub-table */
-              var left = 0;                   /* number of prefix codes available */
-              var used = 0;              /* code entries in table used */
-              var huff = 0;              /* Huffman code */
-              var incr;              /* for incrementing code, index */
-              var fill;              /* index for replicating entries */
-              var low;               /* low bits for current root entry */
-              var mask;              /* mask for low root bits */
-              var next;             /* next available space in table */
-              var base = null;     /* base value table to use */
-              var base_index = 0;
-            //  var shoextra;    /* extra bits table to use */
-              var end;                    /* use base and extra for symbol > end */
-              var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
-              var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
-              var extra = null;
-              var extra_index = 0;
-            
-              var here_bits, here_op, here_val;
-            
-              /*
-               Process a set of code lengths to create a canonical Huffman code.  The
-               code lengths are lens[0..codes-1].  Each length corresponds to the
-               symbols 0..codes-1.  The Huffman code is generated by first sorting the
-               symbols by length from short to long, and retaining the symbol order
-               for codes with equal lengths.  Then the code starts with all zero bits
-               for the first code of the shortest length, and the codes are integer
-               increments for the same length, and zeros are appended as the length
-               increases.  For the deflate format, these bits are stored backwards
-               from their more natural integer increment ordering, and so when the
-               decoding tables are built in the large loop below, the integer codes
-               are incremented backwards.
-            
-               This routine assumes, but does not check, that all of the entries in
-               lens[] are in the range 0..MAXBITS.  The caller must assure this.
-               1..MAXBITS is interpreted as that code length.  zero means that that
-               symbol does not occur in this code.
-            
-               The codes are sorted by computing a count of codes for each length,
-               creating from that a table of starting indices for each length in the
-               sorted table, and then entering the symbols in order in the sorted
-               table.  The sorted table is work[], with that space being provided by
-               the caller.
-            
-               The length counts are used for other purposes as well, i.e. finding
-               the minimum and maximum length codes, determining if there are any
-               codes at all, checking for a valid set of lengths, and looking ahead
-               at length counts to determine sub-table sizes when building the
-               decoding tables.
-               */
-            
-              /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
-              for (len = 0; len <= MAXBITS; len++) {
-                count[len] = 0;
-              }
-              for (sym = 0; sym < codes; sym++) {
-                count[lens[lens_index + sym]]++;
-              }
-            
-              /* bound code lengths, force root to be within code lengths */
-              root = bits;
-              for (max = MAXBITS; max >= 1; max--) {
-                if (count[max] !== 0) { break; }
-              }
-              if (root > max) {
-                root = max;
-              }
-              if (max === 0) {                     /* no symbols to code at all */
-                //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
-                //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
-                //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
-                table[table_index++] = (1 << 24) | (64 << 16) | 0;
-            
-            
-                //table.op[opts.table_index] = 64;
-                //table.bits[opts.table_index] = 1;
-                //table.val[opts.table_index++] = 0;
-                table[table_index++] = (1 << 24) | (64 << 16) | 0;
-            
-                opts.bits = 1;
-                return 0;     /* no symbols, but wait for decoding to report error */
-              }
-              for (min = 1; min < max; min++) {
-                if (count[min] !== 0) { break; }
-              }
-              if (root < min) {
-                root = min;
-              }
-            
-              /* check for an over-subscribed or incomplete set of lengths */
-              left = 1;
-              for (len = 1; len <= MAXBITS; len++) {
-                left <<= 1;
-                left -= count[len];
-                if (left < 0) {
-                  return -1;
-                }        /* over-subscribed */
-              }
-              if (left > 0 && (type === CODES || max !== 1)) {
-                return -1;                      /* incomplete set */
-              }
-            
-              /* generate offsets into symbol table for each length for sorting */
-              offs[1] = 0;
-              for (len = 1; len < MAXBITS; len++) {
-                offs[len + 1] = offs[len] + count[len];
-              }
-            
-              /* sort symbols by length, by symbol order within each length */
-              for (sym = 0; sym < codes; sym++) {
-                if (lens[lens_index + sym] !== 0) {
-                  work[offs[lens[lens_index + sym]]++] = sym;
-                }
-              }
-            
-              /*
-               Create and fill in decoding tables.  In this loop, the table being
-               filled is at next and has curr index bits.  The code being used is huff
-               with length len.  That code is converted to an index by dropping drop
-               bits off of the bottom.  For codes where len is less than drop + curr,
-               those top drop + curr - len bits are incremented through all values to
-               fill the table with replicated entries.
-            
-               root is the number of index bits for the root table.  When len exceeds
-               root, sub-tables are created pointed to by the root entry with an index
-               of the low root bits of huff.  This is saved in low to check for when a
-               new sub-table should be started.  drop is zero when the root table is
-               being filled, and drop is root when sub-tables are being filled.
-            
-               When a new sub-table is needed, it is necessary to look ahead in the
-               code lengths to determine what size sub-table is needed.  The length
-               counts are used for this, and so count[] is decremented as codes are
-               entered in the tables.
-            
-               used keeps track of how many table entries have been allocated from the
-               provided *table space.  It is checked for LENS and DIST tables against
-               the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
-               the initial root table size constants.  See the comments in inftrees.h
-               for more information.
-            
-               sym increments through all symbols, and the loop terminates when
-               all codes of length max, i.e. all codes, have been processed.  This
-               routine permits incomplete codes, so another loop after this one fills
-               in the rest of the decoding tables with invalid code markers.
-               */
-            
-              /* set up for code type */
-              // poor man optimization - use if-else instead of switch,
-              // to avoid deopts in old v8
-              if (type === CODES) {
-                base = extra = work;    /* dummy value--not used */
-                end = 19;
-            
-              } else if (type === LENS) {
-                base = lbase;
-                base_index -= 257;
-                extra = lext;
-                extra_index -= 257;
-                end = 256;
-            
-              } else {                    /* DISTS */
-                base = dbase;
-                extra = dext;
-                end = -1;
-              }
-            
-              /* initialize opts for loop */
-              huff = 0;                   /* starting code */
-              sym = 0;                    /* starting code symbol */
-              len = min;                  /* starting code length */
-              next = table_index;              /* current table to fill in */
-              curr = root;                /* current table index bits */
-              drop = 0;                   /* current bits to drop from code for index */
-              low = -1;                   /* trigger new sub-table when len > root */
-              used = 1 << root;          /* use root table entries */
-              mask = used - 1;            /* mask for comparing low */
-            
-              /* check available table space */
-              if ((type === LENS && used > ENOUGH_LENS) ||
-                (type === DISTS && used > ENOUGH_DISTS)) {
-                return 1;
-              }
-            
-              /* process all codes and make table entries */
-              for (;;) {
-                /* create table entry */
-                here_bits = len - drop;
-                if (work[sym] < end) {
-                  here_op = 0;
-                  here_val = work[sym];
-                }
-                else if (work[sym] > end) {
-                  here_op = extra[extra_index + work[sym]];
-                  here_val = base[base_index + work[sym]];
-                }
-                else {
-                  here_op = 32 + 64;         /* end of block */
-                  here_val = 0;
-                }
-            
-                /* replicate for those indices with low len bits equal to huff */
-                incr = 1 << (len - drop);
-                fill = 1 << curr;
-                min = fill;                 /* save offset to next table */
-                do {
-                  fill -= incr;
-                  table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
-                } while (fill !== 0);
-            
-                /* backwards increment the len-bit code huff */
-                incr = 1 << (len - 1);
-                while (huff & incr) {
-                  incr >>= 1;
-                }
-                if (incr !== 0) {
-                  huff &= incr - 1;
-                  huff += incr;
-                } else {
-                  huff = 0;
-                }
-            
-                /* go to next symbol, update count, len */
-                sym++;
-                if (--count[len] === 0) {
-                  if (len === max) { break; }
-                  len = lens[lens_index + work[sym]];
-                }
-            
-                /* create new sub-table if needed */
-                if (len > root && (huff & mask) !== low) {
-                  /* if first time, transition to sub-tables */
-                  if (drop === 0) {
-                    drop = root;
-                  }
-            
-                  /* increment past last table */
-                  next += min;            /* here min is 1 << curr */
-            
-                  /* determine length of next table */
-                  curr = len - drop;
-                  left = 1 << curr;
-                  while (curr + drop < max) {
-                    left -= count[curr + drop];
-                    if (left <= 0) { break; }
-                    curr++;
-                    left <<= 1;
-                  }
-            
-                  /* check for enough space */
-                  used += 1 << curr;
-                  if ((type === LENS && used > ENOUGH_LENS) ||
-                    (type === DISTS && used > ENOUGH_DISTS)) {
-                    return 1;
-                  }
-            
-                  /* point entry in root table to sub-table */
-                  low = huff & mask;
-                  /*table.op[low] = curr;
-                  table.bits[low] = root;
-                  table.val[low] = next - opts.table_index;*/
-                  table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
-                }
-              }
-            
-              /* fill in remaining table entry if code is incomplete (guaranteed to have
-               at most one remaining entry, since if the code is incomplete, the
-               maximum code length that was allowed to get this far is one bit) */
-              if (huff !== 0) {
-                //table.op[next + huff] = 64;            /* invalid code marker */
-                //table.bits[next + huff] = len - drop;
-                //table.val[next + huff] = 0;
-                table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
-              }
-            
-              /* set return parameters */
-              //opts.table_index += used;
-              opts.bits = root;
-              return 0;
-            };
-            
-            },{"../utils/common":3}],13:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            module.exports = {
-              2:      'need dictionary',     /* Z_NEED_DICT       2  */
-              1:      'stream end',          /* Z_STREAM_END      1  */
-              0:      '',                    /* Z_OK              0  */
-              '-1':   'file error',          /* Z_ERRNO         (-1) */
-              '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
-              '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
-              '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
-              '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
-              '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
-            };
-            
-            },{}],14:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            /* eslint-disable space-unary-ops */
-            
-            var utils = require('../utils/common');
-            
-            /* Public constants ==========================================================*/
-            /* ===========================================================================*/
-            
-            
-            //var Z_FILTERED          = 1;
-            //var Z_HUFFMAN_ONLY      = 2;
-            //var Z_RLE               = 3;
-            var Z_FIXED               = 4;
-            //var Z_DEFAULT_STRATEGY  = 0;
-            
-            /* Possible values of the data_type field (though see inflate()) */
-            var Z_BINARY              = 0;
-            var Z_TEXT                = 1;
-            //var Z_ASCII             = 1; // = Z_TEXT
-            var Z_UNKNOWN             = 2;
-            
-            /*============================================================================*/
-            
-            
-            function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
-            
-            // From zutil.h
-            
-            var STORED_BLOCK = 0;
-            var STATIC_TREES = 1;
-            var DYN_TREES    = 2;
-            /* The three kinds of block type */
-            
-            var MIN_MATCH    = 3;
-            var MAX_MATCH    = 258;
-            /* The minimum and maximum match lengths */
-            
-            // From deflate.h
-            /* ===========================================================================
-             * Internal compression state.
-             */
-            
-            var LENGTH_CODES  = 29;
-            /* number of length codes, not counting the special END_BLOCK code */
-            
-            var LITERALS      = 256;
-            /* number of literal bytes 0..255 */
-            
-            var L_CODES       = LITERALS + 1 + LENGTH_CODES;
-            /* number of Literal or Length codes, including the END_BLOCK code */
-            
-            var D_CODES       = 30;
-            /* number of distance codes */
-            
-            var BL_CODES      = 19;
-            /* number of codes used to transfer the bit lengths */
-            
-            var HEAP_SIZE     = 2 * L_CODES + 1;
-            /* maximum heap size */
-            
-            var MAX_BITS      = 15;
-            /* All codes must not exceed MAX_BITS bits */
-            
-            var Buf_size      = 16;
-            /* size of bit buffer in bi_buf */
-            
-            
-            /* ===========================================================================
-             * Constants
-             */
-            
-            var MAX_BL_BITS = 7;
-            /* Bit length codes must not exceed MAX_BL_BITS bits */
-            
-            var END_BLOCK   = 256;
-            /* end of block literal code */
-            
-            var REP_3_6     = 16;
-            /* repeat previous bit length 3-6 times (2 bits of repeat count) */
-            
-            var REPZ_3_10   = 17;
-            /* repeat a zero length 3-10 times  (3 bits of repeat count) */
-            
-            var REPZ_11_138 = 18;
-            /* repeat a zero length 11-138 times  (7 bits of repeat count) */
-            
-            /* eslint-disable comma-spacing,array-bracket-spacing */
-            var extra_lbits =   /* extra bits for each length code */
-              [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
-            
-            var extra_dbits =   /* extra bits for each distance code */
-              [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
-            
-            var extra_blbits =  /* extra bits for each bit length code */
-              [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
-            
-            var bl_order =
-              [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
-            /* eslint-enable comma-spacing,array-bracket-spacing */
-            
-            /* The lengths of the bit length codes are sent in order of decreasing
-             * probability, to avoid transmitting the lengths for unused bit length codes.
-             */
-            
-            /* ===========================================================================
-             * Local data. These are initialized only once.
-             */
-            
-            // We pre-fill arrays with 0 to avoid uninitialized gaps
-            
-            var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
-            
-            // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
-            var static_ltree  = new Array((L_CODES + 2) * 2);
-            zero(static_ltree);
-            /* The static literal tree. Since the bit lengths are imposed, there is no
-             * need for the L_CODES extra codes used during heap construction. However
-             * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
-             * below).
-             */
-            
-            var static_dtree  = new Array(D_CODES * 2);
-            zero(static_dtree);
-            /* The static distance tree. (Actually a trivial tree since all codes use
-             * 5 bits.)
-             */
-            
-            var _dist_code    = new Array(DIST_CODE_LEN);
-            zero(_dist_code);
-            /* Distance codes. The first 256 values correspond to the distances
-             * 3 .. 258, the last 256 values correspond to the top 8 bits of
-             * the 15 bit distances.
-             */
-            
-            var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
-            zero(_length_code);
-            /* length code for each normalized match length (0 == MIN_MATCH) */
-            
-            var base_length   = new Array(LENGTH_CODES);
-            zero(base_length);
-            /* First normalized length for each code (0 = MIN_MATCH) */
-            
-            var base_dist     = new Array(D_CODES);
-            zero(base_dist);
-            /* First normalized distance for each code (0 = distance of 1) */
-            
-            
-            function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
-            
-              this.static_tree  = static_tree;  /* static tree or NULL */
-              this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
-              this.extra_base   = extra_base;   /* base index for extra_bits */
-              this.elems        = elems;        /* max number of elements in the tree */
-              this.max_length   = max_length;   /* max bit length for the codes */
-            
-              // show if `static_tree` has data or dummy - needed for monomorphic objects
-              this.has_stree    = static_tree && static_tree.length;
-            }
-            
-            
-            var static_l_desc;
-            var static_d_desc;
-            var static_bl_desc;
-            
-            
-            function TreeDesc(dyn_tree, stat_desc) {
-              this.dyn_tree = dyn_tree;     /* the dynamic tree */
-              this.max_code = 0;            /* largest code with non zero frequency */
-              this.stat_desc = stat_desc;   /* the corresponding static tree */
-            }
-            
-            
-            
-            function d_code(dist) {
-              return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
-            }
-            
-            
-            /* ===========================================================================
-             * Output a short LSB first on the stream.
-             * IN assertion: there is enough room in pendingBuf.
-             */
-            function put_short(s, w) {
-            //    put_byte(s, (uch)((w) & 0xff));
-            //    put_byte(s, (uch)((ush)(w) >> 8));
-              s.pending_buf[s.pending++] = (w) & 0xff;
-              s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
-            }
-            
-            
-            /* ===========================================================================
-             * Send a value on a given number of bits.
-             * IN assertion: length <= 16 and value fits in length bits.
-             */
-            function send_bits(s, value, length) {
-              if (s.bi_valid > (Buf_size - length)) {
-                s.bi_buf |= (value << s.bi_valid) & 0xffff;
-                put_short(s, s.bi_buf);
-                s.bi_buf = value >> (Buf_size - s.bi_valid);
-                s.bi_valid += length - Buf_size;
-              } else {
-                s.bi_buf |= (value << s.bi_valid) & 0xffff;
-                s.bi_valid += length;
-              }
-            }
-            
-            
-            function send_code(s, c, tree) {
-              send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
-            }
-            
-            
-            /* ===========================================================================
-             * Reverse the first len bits of a code, using straightforward code (a faster
-             * method would use a table)
-             * IN assertion: 1 <= len <= 15
-             */
-            function bi_reverse(code, len) {
-              var res = 0;
-              do {
-                res |= code & 1;
-                code >>>= 1;
-                res <<= 1;
-              } while (--len > 0);
-              return res >>> 1;
-            }
-            
-            
-            /* ===========================================================================
-             * Flush the bit buffer, keeping at most 7 bits in it.
-             */
-            function bi_flush(s) {
-              if (s.bi_valid === 16) {
-                put_short(s, s.bi_buf);
-                s.bi_buf = 0;
-                s.bi_valid = 0;
-            
-              } else if (s.bi_valid >= 8) {
-                s.pending_buf[s.pending++] = s.bi_buf & 0xff;
-                s.bi_buf >>= 8;
-                s.bi_valid -= 8;
-              }
-            }
-            
-            
-            /* ===========================================================================
-             * Compute the optimal bit lengths for a tree and update the total bit length
-             * for the current block.
-             * IN assertion: the fields freq and dad are set, heap[heap_max] and
-             *    above are the tree nodes sorted by increasing frequency.
-             * OUT assertions: the field len is set to the optimal bit length, the
-             *     array bl_count contains the frequencies for each bit length.
-             *     The length opt_len is updated; static_len is also updated if stree is
-             *     not null.
-             */
-            function gen_bitlen(s, desc)
-            //    deflate_state *s;
-            //    tree_desc *desc;    /* the tree descriptor */
-            {
-              var tree            = desc.dyn_tree;
-              var max_code        = desc.max_code;
-              var stree           = desc.stat_desc.static_tree;
-              var has_stree       = desc.stat_desc.has_stree;
-              var extra           = desc.stat_desc.extra_bits;
-              var base            = desc.stat_desc.extra_base;
-              var max_length      = desc.stat_desc.max_length;
-              var h;              /* heap index */
-              var n, m;           /* iterate over the tree elements */
-              var bits;           /* bit length */
-              var xbits;          /* extra bits */
-              var f;              /* frequency */
-              var overflow = 0;   /* number of elements with bit length too large */
-            
-              for (bits = 0; bits <= MAX_BITS; bits++) {
-                s.bl_count[bits] = 0;
-              }
-            
-              /* In a first pass, compute the optimal bit lengths (which may
-               * overflow in the case of the bit length tree).
-               */
-              tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
-            
-              for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
-                n = s.heap[h];
-                bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
-                if (bits > max_length) {
-                  bits = max_length;
-                  overflow++;
-                }
-                tree[n * 2 + 1]/*.Len*/ = bits;
-                /* We overwrite tree[n].Dad which is no longer needed */
-            
-                if (n > max_code) { continue; } /* not a leaf node */
-            
-                s.bl_count[bits]++;
-                xbits = 0;
-                if (n >= base) {
-                  xbits = extra[n - base];
-                }
-                f = tree[n * 2]/*.Freq*/;
-                s.opt_len += f * (bits + xbits);
-                if (has_stree) {
-                  s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
-                }
-              }
-              if (overflow === 0) { return; }
-            
-              // Trace((stderr,"\nbit length overflow\n"));
-              /* This happens for example on obj2 and pic of the Calgary corpus */
-            
-              /* Find the first bit length which could increase: */
-              do {
-                bits = max_length - 1;
-                while (s.bl_count[bits] === 0) { bits--; }
-                s.bl_count[bits]--;      /* move one leaf down the tree */
-                s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
-                s.bl_count[max_length]--;
-                /* The brother of the overflow item also moves one step up,
-                 * but this does not affect bl_count[max_length]
-                 */
-                overflow -= 2;
-              } while (overflow > 0);
-            
-              /* Now recompute all bit lengths, scanning in increasing frequency.
-               * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
-               * lengths instead of fixing only the wrong ones. This idea is taken
-               * from 'ar' written by Haruhiko Okumura.)
-               */
-              for (bits = max_length; bits !== 0; bits--) {
-                n = s.bl_count[bits];
-                while (n !== 0) {
-                  m = s.heap[--h];
-                  if (m > max_code) { continue; }
-                  if (tree[m * 2 + 1]/*.Len*/ !== bits) {
-                    // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-                    s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
-                    tree[m * 2 + 1]/*.Len*/ = bits;
-                  }
-                  n--;
-                }
-              }
-            }
-            
-            
-            /* ===========================================================================
-             * Generate the codes for a given tree and bit counts (which need not be
-             * optimal).
-             * IN assertion: the array bl_count contains the bit length statistics for
-             * the given tree and the field len is set for all tree elements.
-             * OUT assertion: the field code is set for all tree elements of non
-             *     zero code length.
-             */
-            function gen_codes(tree, max_code, bl_count)
-            //    ct_data *tree;             /* the tree to decorate */
-            //    int max_code;              /* largest code with non zero frequency */
-            //    ushf *bl_count;            /* number of codes at each bit length */
-            {
-              var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
-              var code = 0;              /* running code value */
-              var bits;                  /* bit index */
-              var n;                     /* code index */
-            
-              /* The distribution counts are first used to generate the code values
-               * without bit reversal.
-               */
-              for (bits = 1; bits <= MAX_BITS; bits++) {
-                next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
-              }
-              /* Check that the bit counts in bl_count are consistent. The last code
-               * must be all ones.
-               */
-              //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-              //        "inconsistent bit counts");
-              //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-            
-              for (n = 0;  n <= max_code; n++) {
-                var len = tree[n * 2 + 1]/*.Len*/;
-                if (len === 0) { continue; }
-                /* Now reverse the bits */
-                tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
-            
-                //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-                //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-              }
-            }
-            
-            
-            /* ===========================================================================
-             * Initialize the various 'constant' tables.
-             */
-            function tr_static_init() {
-              var n;        /* iterates over tree elements */
-              var bits;     /* bit counter */
-              var length;   /* length value */
-              var code;     /* code value */
-              var dist;     /* distance index */
-              var bl_count = new Array(MAX_BITS + 1);
-              /* number of codes at each bit length for an optimal tree */
-            
-              // do check in _tr_init()
-              //if (static_init_done) return;
-            
-              /* For some embedded targets, global variables are not initialized: */
-            /*#ifdef NO_INIT_GLOBAL_POINTERS
-              static_l_desc.static_tree = static_ltree;
-              static_l_desc.extra_bits = extra_lbits;
-              static_d_desc.static_tree = static_dtree;
-              static_d_desc.extra_bits = extra_dbits;
-              static_bl_desc.extra_bits = extra_blbits;
-            #endif*/
-            
-              /* Initialize the mapping length (0..255) -> length code (0..28) */
-              length = 0;
-              for (code = 0; code < LENGTH_CODES - 1; code++) {
-                base_length[code] = length;
-                for (n = 0; n < (1 << extra_lbits[code]); n++) {
-                  _length_code[length++] = code;
-                }
-              }
-              //Assert (length == 256, "tr_static_init: length != 256");
-              /* Note that the length 255 (match length 258) can be represented
-               * in two different ways: code 284 + 5 bits or code 285, so we
-               * overwrite length_code[255] to use the best encoding:
-               */
-              _length_code[length - 1] = code;
-            
-              /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
-              dist = 0;
-              for (code = 0; code < 16; code++) {
-                base_dist[code] = dist;
-                for (n = 0; n < (1 << extra_dbits[code]); n++) {
-                  _dist_code[dist++] = code;
-                }
-              }
-              //Assert (dist == 256, "tr_static_init: dist != 256");
-              dist >>= 7; /* from now on, all distances are divided by 128 */
-              for (; code < D_CODES; code++) {
-                base_dist[code] = dist << 7;
-                for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
-                  _dist_code[256 + dist++] = code;
-                }
-              }
-              //Assert (dist == 256, "tr_static_init: 256+dist != 512");
-            
-              /* Construct the codes of the static literal tree */
-              for (bits = 0; bits <= MAX_BITS; bits++) {
-                bl_count[bits] = 0;
-              }
-            
-              n = 0;
-              while (n <= 143) {
-                static_ltree[n * 2 + 1]/*.Len*/ = 8;
-                n++;
-                bl_count[8]++;
-              }
-              while (n <= 255) {
-                static_ltree[n * 2 + 1]/*.Len*/ = 9;
-                n++;
-                bl_count[9]++;
-              }
-              while (n <= 279) {
-                static_ltree[n * 2 + 1]/*.Len*/ = 7;
-                n++;
-                bl_count[7]++;
-              }
-              while (n <= 287) {
-                static_ltree[n * 2 + 1]/*.Len*/ = 8;
-                n++;
-                bl_count[8]++;
-              }
-              /* Codes 286 and 287 do not exist, but we must include them in the
-               * tree construction to get a canonical Huffman tree (longest code
-               * all ones)
-               */
-              gen_codes(static_ltree, L_CODES + 1, bl_count);
-            
-              /* The static distance tree is trivial: */
-              for (n = 0; n < D_CODES; n++) {
-                static_dtree[n * 2 + 1]/*.Len*/ = 5;
-                static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
-              }
-            
-              // Now data ready and we can init static trees
-              static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
-              static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
-              static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
-            
-              //static_init_done = true;
-            }
-            
-            
-            /* ===========================================================================
-             * Initialize a new block.
-             */
-            function init_block(s) {
-              var n; /* iterates over tree elements */
-            
-              /* Initialize the trees. */
-              for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
-              for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
-              for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
-            
-              s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
-              s.opt_len = s.static_len = 0;
-              s.last_lit = s.matches = 0;
-            }
-            
-            
-            /* ===========================================================================
-             * Flush the bit buffer and align the output on a byte boundary
-             */
-            function bi_windup(s)
-            {
-              if (s.bi_valid > 8) {
-                put_short(s, s.bi_buf);
-              } else if (s.bi_valid > 0) {
-                //put_byte(s, (Byte)s->bi_buf);
-                s.pending_buf[s.pending++] = s.bi_buf;
-              }
-              s.bi_buf = 0;
-              s.bi_valid = 0;
-            }
-            
-            /* ===========================================================================
-             * Copy a stored block, storing first the length and its
-             * one's complement if requested.
-             */
-            function copy_block(s, buf, len, header)
-            //DeflateState *s;
-            //charf    *buf;    /* the input data */
-            //unsigned len;     /* its length */
-            //int      header;  /* true if block header must be written */
-            {
-              bi_windup(s);        /* align on byte boundary */
-            
-              if (header) {
-                put_short(s, len);
-                put_short(s, ~len);
-              }
-            //  while (len--) {
-            //    put_byte(s, *buf++);
-            //  }
-              utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
-              s.pending += len;
-            }
-            
-            /* ===========================================================================
-             * Compares to subtrees, using the tree depth as tie breaker when
-             * the subtrees have equal frequency. This minimizes the worst case length.
-             */
-            function smaller(tree, n, m, depth) {
-              var _n2 = n * 2;
-              var _m2 = m * 2;
-              return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
-                     (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
-            }
-            
-            /* ===========================================================================
-             * Restore the heap property by moving down the tree starting at node k,
-             * exchanging a node with the smallest of its two sons if necessary, stopping
-             * when the heap property is re-established (each father smaller than its
-             * two sons).
-             */
-            function pqdownheap(s, tree, k)
-            //    deflate_state *s;
-            //    ct_data *tree;  /* the tree to restore */
-            //    int k;               /* node to move down */
-            {
-              var v = s.heap[k];
-              var j = k << 1;  /* left son of k */
-              while (j <= s.heap_len) {
-                /* Set j to the smallest of the two sons: */
-                if (j < s.heap_len &&
-                  smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
-                  j++;
-                }
-                /* Exit if v is smaller than both sons */
-                if (smaller(tree, v, s.heap[j], s.depth)) { break; }
-            
-                /* Exchange v with the smallest son */
-                s.heap[k] = s.heap[j];
-                k = j;
-            
-                /* And continue down the tree, setting j to the left son of k */
-                j <<= 1;
-              }
-              s.heap[k] = v;
-            }
-            
-            
-            // inlined manually
-            // var SMALLEST = 1;
-            
-            /* ===========================================================================
-             * Send the block data compressed using the given Huffman trees
-             */
-            function compress_block(s, ltree, dtree)
-            //    deflate_state *s;
-            //    const ct_data *ltree; /* literal tree */
-            //    const ct_data *dtree; /* distance tree */
-            {
-              var dist;           /* distance of matched string */
-              var lc;             /* match length or unmatched char (if dist == 0) */
-              var lx = 0;         /* running index in l_buf */
-              var code;           /* the code to send */
-              var extra;          /* number of extra bits to send */
-            
-              if (s.last_lit !== 0) {
-                do {
-                  dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
-                  lc = s.pending_buf[s.l_buf + lx];
-                  lx++;
-            
-                  if (dist === 0) {
-                    send_code(s, lc, ltree); /* send a literal byte */
-                    //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-                  } else {
-                    /* Here, lc is the match length - MIN_MATCH */
-                    code = _length_code[lc];
-                    send_code(s, code + LITERALS + 1, ltree); /* send the length code */
-                    extra = extra_lbits[code];
-                    if (extra !== 0) {
-                      lc -= base_length[code];
-                      send_bits(s, lc, extra);       /* send the extra length bits */
-                    }
-                    dist--; /* dist is now the match distance - 1 */
-                    code = d_code(dist);
-                    //Assert (code < D_CODES, "bad d_code");
-            
-                    send_code(s, code, dtree);       /* send the distance code */
-                    extra = extra_dbits[code];
-                    if (extra !== 0) {
-                      dist -= base_dist[code];
-                      send_bits(s, dist, extra);   /* send the extra distance bits */
-                    }
-                  } /* literal or match pair ? */
-            
-                  /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-                  //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
-                  //       "pendingBuf overflow");
-            
-                } while (lx < s.last_lit);
-              }
-            
-              send_code(s, END_BLOCK, ltree);
-            }
-            
-            
-            /* ===========================================================================
-             * Construct one Huffman tree and assigns the code bit strings and lengths.
-             * Update the total bit length for the current block.
-             * IN assertion: the field freq is set for all tree elements.
-             * OUT assertions: the fields len and code are set to the optimal bit length
-             *     and corresponding code. The length opt_len is updated; static_len is
-             *     also updated if stree is not null. The field max_code is set.
-             */
-            function build_tree(s, desc)
-            //    deflate_state *s;
-            //    tree_desc *desc; /* the tree descriptor */
-            {
-              var tree     = desc.dyn_tree;
-              var stree    = desc.stat_desc.static_tree;
-              var has_stree = desc.stat_desc.has_stree;
-              var elems    = desc.stat_desc.elems;
-              var n, m;          /* iterate over heap elements */
-              var max_code = -1; /* largest code with non zero frequency */
-              var node;          /* new node being created */
-            
-              /* Construct the initial heap, with least frequent element in
-               * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
-               * heap[0] is not used.
-               */
-              s.heap_len = 0;
-              s.heap_max = HEAP_SIZE;
-            
-              for (n = 0; n < elems; n++) {
-                if (tree[n * 2]/*.Freq*/ !== 0) {
-                  s.heap[++s.heap_len] = max_code = n;
-                  s.depth[n] = 0;
-            
-                } else {
-                  tree[n * 2 + 1]/*.Len*/ = 0;
-                }
-              }
-            
-              /* The pkzip format requires that at least one distance code exists,
-               * and that at least one bit should be sent even if there is only one
-               * possible code. So to avoid special checks later on we force at least
-               * two codes of non zero frequency.
-               */
-              while (s.heap_len < 2) {
-                node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
-                tree[node * 2]/*.Freq*/ = 1;
-                s.depth[node] = 0;
-                s.opt_len--;
-            
-                if (has_stree) {
-                  s.static_len -= stree[node * 2 + 1]/*.Len*/;
-                }
-                /* node is 0 or 1 so it does not have extra bits */
-              }
-              desc.max_code = max_code;
-            
-              /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
-               * establish sub-heaps of increasing lengths:
-               */
-              for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
-            
-              /* Construct the Huffman tree by repeatedly combining the least two
-               * frequent nodes.
-               */
-              node = elems;              /* next internal node of the tree */
-              do {
-                //pqremove(s, tree, n);  /* n = node of least frequency */
-                /*** pqremove ***/
-                n = s.heap[1/*SMALLEST*/];
-                s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
-                pqdownheap(s, tree, 1/*SMALLEST*/);
-                /***/
-            
-                m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
-            
-                s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
-                s.heap[--s.heap_max] = m;
-            
-                /* Create a new node father of n and m */
-                tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
-                s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
-                tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
-            
-                /* and insert the new node in the heap */
-                s.heap[1/*SMALLEST*/] = node++;
-                pqdownheap(s, tree, 1/*SMALLEST*/);
-            
-              } while (s.heap_len >= 2);
-            
-              s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
-            
-              /* At this point, the fields freq and dad are set. We can now
-               * generate the bit lengths.
-               */
-              gen_bitlen(s, desc);
-            
-              /* The field len is now set, we can generate the bit codes */
-              gen_codes(tree, max_code, s.bl_count);
-            }
-            
-            
-            /* ===========================================================================
-             * Scan a literal or distance tree to determine the frequencies of the codes
-             * in the bit length tree.
-             */
-            function scan_tree(s, tree, max_code)
-            //    deflate_state *s;
-            //    ct_data *tree;   /* the tree to be scanned */
-            //    int max_code;    /* and its largest code of non zero frequency */
-            {
-              var n;                     /* iterates over all tree elements */
-              var prevlen = -1;          /* last emitted length */
-              var curlen;                /* length of current code */
-            
-              var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
-            
-              var count = 0;             /* repeat count of the current code */
-              var max_count = 7;         /* max repeat count */
-              var min_count = 4;         /* min repeat count */
-            
-              if (nextlen === 0) {
-                max_count = 138;
-                min_count = 3;
-              }
-              tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
-            
-              for (n = 0; n <= max_code; n++) {
-                curlen = nextlen;
-                nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
-            
-                if (++count < max_count && curlen === nextlen) {
-                  continue;
-            
-                } else if (count < min_count) {
-                  s.bl_tree[curlen * 2]/*.Freq*/ += count;
-            
-                } else if (curlen !== 0) {
-            
-                  if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
-                  s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
-            
-                } else if (count <= 10) {
-                  s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
-            
-                } else {
-                  s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
-                }
-            
-                count = 0;
-                prevlen = curlen;
-            
-                if (nextlen === 0) {
-                  max_count = 138;
-                  min_count = 3;
-            
-                } else if (curlen === nextlen) {
-                  max_count = 6;
-                  min_count = 3;
-            
-                } else {
-                  max_count = 7;
-                  min_count = 4;
-                }
-              }
-            }
-            
-            
-            /* ===========================================================================
-             * Send a literal or distance tree in compressed form, using the codes in
-             * bl_tree.
-             */
-            function send_tree(s, tree, max_code)
-            //    deflate_state *s;
-            //    ct_data *tree; /* the tree to be scanned */
-            //    int max_code;       /* and its largest code of non zero frequency */
-            {
-              var n;                     /* iterates over all tree elements */
-              var prevlen = -1;          /* last emitted length */
-              var curlen;                /* length of current code */
-            
-              var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
-            
-              var count = 0;             /* repeat count of the current code */
-              var max_count = 7;         /* max repeat count */
-              var min_count = 4;         /* min repeat count */
-            
-              /* tree[max_code+1].Len = -1; */  /* guard already set */
-              if (nextlen === 0) {
-                max_count = 138;
-                min_count = 3;
-              }
-            
-              for (n = 0; n <= max_code; n++) {
-                curlen = nextlen;
-                nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
-            
-                if (++count < max_count && curlen === nextlen) {
-                  continue;
-            
-                } else if (count < min_count) {
-                  do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
-            
-                } else if (curlen !== 0) {
-                  if (curlen !== prevlen) {
-                    send_code(s, curlen, s.bl_tree);
-                    count--;
-                  }
-                  //Assert(count >= 3 && count <= 6, " 3_6?");
-                  send_code(s, REP_3_6, s.bl_tree);
-                  send_bits(s, count - 3, 2);
-            
-                } else if (count <= 10) {
-                  send_code(s, REPZ_3_10, s.bl_tree);
-                  send_bits(s, count - 3, 3);
-            
-                } else {
-                  send_code(s, REPZ_11_138, s.bl_tree);
-                  send_bits(s, count - 11, 7);
-                }
-            
-                count = 0;
-                prevlen = curlen;
-                if (nextlen === 0) {
-                  max_count = 138;
-                  min_count = 3;
-            
-                } else if (curlen === nextlen) {
-                  max_count = 6;
-                  min_count = 3;
-            
-                } else {
-                  max_count = 7;
-                  min_count = 4;
-                }
-              }
-            }
-            
-            
-            /* ===========================================================================
-             * Construct the Huffman tree for the bit lengths and return the index in
-             * bl_order of the last bit length code to send.
-             */
-            function build_bl_tree(s) {
-              var max_blindex;  /* index of last bit length code of non zero freq */
-            
-              /* Determine the bit length frequencies for literal and distance trees */
-              scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
-              scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
-            
-              /* Build the bit length tree: */
-              build_tree(s, s.bl_desc);
-              /* opt_len now includes the length of the tree representations, except
-               * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
-               */
-            
-              /* Determine the number of bit length codes to send. The pkzip format
-               * requires that at least 4 bit length codes be sent. (appnote.txt says
-               * 3 but the actual value used is 4.)
-               */
-              for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
-                if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
-                  break;
-                }
-              }
-              /* Update opt_len to include the bit length tree and counts */
-              s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
-              //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-              //        s->opt_len, s->static_len));
-            
-              return max_blindex;
-            }
-            
-            
-            /* ===========================================================================
-             * Send the header for a block using dynamic Huffman trees: the counts, the
-             * lengths of the bit length codes, the literal tree and the distance tree.
-             * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
-             */
-            function send_all_trees(s, lcodes, dcodes, blcodes)
-            //    deflate_state *s;
-            //    int lcodes, dcodes, blcodes; /* number of codes for each tree */
-            {
-              var rank;                    /* index in bl_order */
-            
-              //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-              //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-              //        "too many codes");
-              //Tracev((stderr, "\nbl counts: "));
-              send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
-              send_bits(s, dcodes - 1,   5);
-              send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
-              for (rank = 0; rank < blcodes; rank++) {
-                //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
-                send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
-              }
-              //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-            
-              send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
-              //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-            
-              send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
-              //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-            }
-            
-            
-            /* ===========================================================================
-             * Check if the data type is TEXT or BINARY, using the following algorithm:
-             * - TEXT if the two conditions below are satisfied:
-             *    a) There are no non-portable control characters belonging to the
-             *       "black list" (0..6, 14..25, 28..31).
-             *    b) There is at least one printable character belonging to the
-             *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
-             * - BINARY otherwise.
-             * - The following partially-portable control characters form a
-             *   "gray list" that is ignored in this detection algorithm:
-             *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
-             * IN assertion: the fields Freq of dyn_ltree are set.
-             */
-            function detect_data_type(s) {
-              /* black_mask is the bit mask of black-listed bytes
-               * set bits 0..6, 14..25, and 28..31
-               * 0xf3ffc07f = binary 11110011111111111100000001111111
-               */
-              var black_mask = 0xf3ffc07f;
-              var n;
-            
-              /* Check for non-textual ("black-listed") bytes. */
-              for (n = 0; n <= 31; n++, black_mask >>>= 1) {
-                if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
-                  return Z_BINARY;
-                }
-              }
-            
-              /* Check for textual ("white-listed") bytes. */
-              if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
-                  s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
-                return Z_TEXT;
-              }
-              for (n = 32; n < LITERALS; n++) {
-                if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
-                  return Z_TEXT;
-                }
-              }
-            
-              /* There are no "black-listed" or "white-listed" bytes:
-               * this stream either is empty or has tolerated ("gray-listed") bytes only.
-               */
-              return Z_BINARY;
-            }
-            
-            
-            var static_init_done = false;
-            
-            /* ===========================================================================
-             * Initialize the tree data structures for a new zlib stream.
-             */
-            function _tr_init(s)
-            {
-            
-              if (!static_init_done) {
-                tr_static_init();
-                static_init_done = true;
-              }
-            
-              s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
-              s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
-              s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
-            
-              s.bi_buf = 0;
-              s.bi_valid = 0;
-            
-              /* Initialize the first block of the first file: */
-              init_block(s);
-            }
-            
-            
-            /* ===========================================================================
-             * Send a stored block
-             */
-            function _tr_stored_block(s, buf, stored_len, last)
-            //DeflateState *s;
-            //charf *buf;       /* input block */
-            //ulg stored_len;   /* length of input block */
-            //int last;         /* one if this is the last block for a file */
-            {
-              send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
-              copy_block(s, buf, stored_len, true); /* with header */
-            }
-            
-            
-            /* ===========================================================================
-             * Send one empty static block to give enough lookahead for inflate.
-             * This takes 10 bits, of which 7 may remain in the bit buffer.
-             */
-            function _tr_align(s) {
-              send_bits(s, STATIC_TREES << 1, 3);
-              send_code(s, END_BLOCK, static_ltree);
-              bi_flush(s);
-            }
-            
-            
-            /* ===========================================================================
-             * Determine the best encoding for the current block: dynamic trees, static
-             * trees or store, and output the encoded block to the zip file.
-             */
-            function _tr_flush_block(s, buf, stored_len, last)
-            //DeflateState *s;
-            //charf *buf;       /* input block, or NULL if too old */
-            //ulg stored_len;   /* length of input block */
-            //int last;         /* one if this is the last block for a file */
-            {
-              var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
-              var max_blindex = 0;        /* index of last bit length code of non zero freq */
-            
-              /* Build the Huffman trees unless a stored block is forced */
-              if (s.level > 0) {
-            
-                /* Check if the file is binary or text */
-                if (s.strm.data_type === Z_UNKNOWN) {
-                  s.strm.data_type = detect_data_type(s);
-                }
-            
-                /* Construct the literal and distance trees */
-                build_tree(s, s.l_desc);
-                // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-                //        s->static_len));
-            
-                build_tree(s, s.d_desc);
-                // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-                //        s->static_len));
-                /* At this point, opt_len and static_len are the total bit lengths of
-                 * the compressed block data, excluding the tree representations.
-                 */
-            
-                /* Build the bit length tree for the above two trees, and get the index
-                 * in bl_order of the last bit length code to send.
-                 */
-                max_blindex = build_bl_tree(s);
-            
-                /* Determine the best encoding. Compute the block lengths in bytes. */
-                opt_lenb = (s.opt_len + 3 + 7) >>> 3;
-                static_lenb = (s.static_len + 3 + 7) >>> 3;
-            
-                // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-                //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-                //        s->last_lit));
-            
-                if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
-            
-              } else {
-                // Assert(buf != (char*)0, "lost buf");
-                opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
-              }
-            
-              if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
-                /* 4: two words for the lengths */
-            
-                /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
-                 * Otherwise we can't have processed more than WSIZE input bytes since
-                 * the last block flush, because compression would have been
-                 * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
-                 * transform a block into a stored block.
-                 */
-                _tr_stored_block(s, buf, stored_len, last);
-            
-              } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
-            
-                send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
-                compress_block(s, static_ltree, static_dtree);
-            
-              } else {
-                send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
-                send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
-                compress_block(s, s.dyn_ltree, s.dyn_dtree);
-              }
-              // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-              /* The above check is made mod 2^32, for files larger than 512 MB
-               * and uLong implemented on 32 bits.
-               */
-              init_block(s);
-            
-              if (last) {
-                bi_windup(s);
-              }
-              // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-              //       s->compressed_len-7*last));
-            }
-            
-            /* ===========================================================================
-             * Save the match info and tally the frequency counts. Return true if
-             * the current block must be flushed.
-             */
-            function _tr_tally(s, dist, lc)
-            //    deflate_state *s;
-            //    unsigned dist;  /* distance of matched string */
-            //    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
-            {
-              //var out_length, in_length, dcode;
-            
-              s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
-              s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
-            
-              s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
-              s.last_lit++;
-            
-              if (dist === 0) {
-                /* lc is the unmatched char */
-                s.dyn_ltree[lc * 2]/*.Freq*/++;
-              } else {
-                s.matches++;
-                /* Here, lc is the match length - MIN_MATCH */
-                dist--;             /* dist = match distance - 1 */
-                //Assert((ush)dist < (ush)MAX_DIST(s) &&
-                //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-                //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
-            
-                s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
-                s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
-              }
-            
-            // (!) This block is disabled in zlib defaults,
-            // don't enable it for binary compatibility
-            
-            //#ifdef TRUNCATE_BLOCK
-            //  /* Try to guess if it is profitable to stop the current block here */
-            //  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
-            //    /* Compute an upper bound for the compressed length */
-            //    out_length = s.last_lit*8;
-            //    in_length = s.strstart - s.block_start;
-            //
-            //    for (dcode = 0; dcode < D_CODES; dcode++) {
-            //      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
-            //    }
-            //    out_length >>>= 3;
-            //    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-            //    //       s->last_lit, in_length, out_length,
-            //    //       100L - out_length*100L/in_length));
-            //    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
-            //      return true;
-            //    }
-            //  }
-            //#endif
-            
-              return (s.last_lit === s.lit_bufsize - 1);
-              /* We avoid equality with lit_bufsize because of wraparound at 64K
-               * on 16 bit machines and because stored blocks are restricted to
-               * 64K-1 bytes.
-               */
-            }
-            
-            exports._tr_init  = _tr_init;
-            exports._tr_stored_block = _tr_stored_block;
-            exports._tr_flush_block  = _tr_flush_block;
-            exports._tr_tally = _tr_tally;
-            exports._tr_align = _tr_align;
-            
-            },{"../utils/common":3}],15:[function(require,module,exports){
-            'use strict';
-            
-            // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-            // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-            //
-            // This software is provided 'as-is', without any express or implied
-            // warranty. In no event will the authors be held liable for any damages
-            // arising from the use of this software.
-            //
-            // Permission is granted to anyone to use this software for any purpose,
-            // including commercial applications, and to alter it and redistribute it
-            // freely, subject to the following restrictions:
-            //
-            // 1. The origin of this software must not be misrepresented; you must not
-            //   claim that you wrote the original software. If you use this software
-            //   in a product, an acknowledgment in the product documentation would be
-            //   appreciated but is not required.
-            // 2. Altered source versions must be plainly marked as such, and must not be
-            //   misrepresented as being the original software.
-            // 3. This notice may not be removed or altered from any source distribution.
-            
-            function ZStream() {
-              /* next input byte */
-              this.input = null; // JS specific, because we have no pointers
-              this.next_in = 0;
-              /* number of bytes available at input */
-              this.avail_in = 0;
-              /* total number of input bytes read so far */
-              this.total_in = 0;
-              /* next output byte should be put there */
-              this.output = null; // JS specific, because we have no pointers
-              this.next_out = 0;
-              /* remaining free space at output */
-              this.avail_out = 0;
-              /* total number of bytes output so far */
-              this.total_out = 0;
-              /* last error message, NULL if no error */
-              this.msg = ''/*Z_NULL*/;
-              /* not visible by applications */
-              this.state = null;
-              /* best guess about the data type: binary or text */
-              this.data_type = 2/*Z_UNKNOWN*/;
-              /* adler32 value of the uncompressed data */
-              this.adler = 0;
-            }
-            
-            module.exports = ZStream;
-            
-            },{}],"/":[function(require,module,exports){
-            // Top level file is just a mixin of submodules & constants
-            'use strict';
-            
-            var assign    = require('./lib/utils/common').assign;
-            
-            var deflate   = require('./lib/deflate');
-            var inflate   = require('./lib/inflate');
-            var constants = require('./lib/zlib/constants');
-            
-            var pako = {};
-            
-            assign(pako, deflate, inflate, constants);
-            
-            module.exports = pako;
-            
-            },{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")
-            });
-            // SRC: https://developer.mozilla.org/ru/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
-            function base64Encode(str)
-            {
-                var bytes = new (TextEncoder || TextEncoderLite)("utf-8").encode(str);
-                return base64js.fromByteArray(bytes);
-            }
-            function base64Decode(str)
-            {
-                var bytes = base64js.toByteArray(str);
-                return new (TextDecoder || TextDecoderLite)("utf-8").decode(bytes);
-            }
-            function zipBase64Encode(input)
-            {
-                var bytes = new (TextEncoder || TextEncoderLite)("utf-8").encode(input);
-                var zipValue = window.pako.deflate(bytes, {to: 'string'});
-                return base64Encode(zipValue);
-            }
-            function zipBase64Decode(input)
-            {
-                var zipValue = base64Decode(input);
-                var bytes = window.pako.inflate(zipValue)
-                return new (TextDecoder || TextDecoderLite)("utf-8").decode(bytes);
-            }
-
diff --git a/archived/http-root/index.html b/archived/http-root/index.html
deleted file mode 100644
index 4785a4d6e74bc44085607654c89e8784cb7316c9..0000000000000000000000000000000000000000
--- a/archived/http-root/index.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-        <meta charset="utf-8">
-        <meta name="viewport" content="width=device-width, initial-scale=1">
-        <title>Better dridash</title>
-
-        <link href="res/bulma.min.css" rel="stylesheet">
-        <script src="res/jquery.min.js"></script> 
-        <script src="res/sheet/vendor/select2/select2.min.js"></script> 
-<script src="strftime.js"></script>
-<script src="pako.js"></script>
-<script src="template.js"></script>
-<script src="base64zip.js"></script>
-
-	<link rel="stylesheet" type="text/css" href="res/sheet/vendor/bootstrap/css/bootstrap.min.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/fonts/font-awesome-4.7.0/css/font-awesome.min.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/vendor/animate/animate.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/vendor/select2/select2.min.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/vendor/perfect-scrollbar/perfect-scrollbar.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/css/util.css">
-	<link rel="stylesheet" type="text/css" href="res/sheet/css/main.css">
-    </head>
-    <body onload=refresh()>
-        <nav class="navbar" role="navigation" aria-label="main navigation">
-            <div class="navbar-brand">
-                <a class="navbar-item" href="https://www.recolic.net/">Better dridash for overlake dev</a>
-            </div>
-        </nav>
-<script>
-
-</script>
-<section class="section">
-    <div class="container">
-<p>Existing VMs:</p><br/>
-
-<p>note: modlab node e4c01419-44b8-c5bd-3e6b-5737fc3a43d2</p>
-
-<!-- Template
-            <div class="field">
-                <label class="label" for="domain">node_id_or_hostname</label>
-                <input class="input" type="text" name="domain" autocomplete="off" id="node_id_or_hostname" onfocusout="refresh();" value="all">
-            </div>
--->
-            <div class="field">
-                <p class="control">
-                    <button onclick="return refresh();" class="button is-success">Generate</button>
-                </p>
-            </div>
-    </div>
-</section>
-<section class="hero">
-    <div class="container">
-<p id=link_out>AZ board:</p>
-    </div>
-</section>
-
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-
-<hr class="dashed">
-<hr class="dashed">
-
-<script>
-function refresh22() {
-	console.log("refresh22 reached");
-	let did = document.getElementById('did');
-	if (did.value == "") return;
-
-    let outputLink = "https://managenetperf.azurewebsites.net/Deployment/History?partitionKey=" +did.value+ "&rowKey=1__Client"
-
-	let outputEle = document.getElementById('link_out22');
-	outputEle.innerHTML = "netperf link: <br /><a target='_blank' href='"+outputLink+"'>"+outputLink+"</a>"
-		;
-}
-
-</script>
-<section class="section">
-    <div class="container">
-<h1>deployment id to link (netperf)</h1>
-
-            <div class="field">
-                <label class="label" for="domain22">deployment id</label>
-                <input class="input" type="text" name="domain22" autocomplete="off" id="did" onfocusout="refresh22();" value="">
-            </div>
-
-
-<div class="field">
-                <p class="control">
-                    <button onclick="return refresh22();" class="button is-success">Generate</button>
-                </p>
-            </div>
-    </div>
-</section>
-<section class="hero">
-    <div class="container">
-<p id=link_out22>AZ board:</p>
-    </div>
-</section>
-
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-<!-- ---------------------------------------------------------------------------------- -->
-
-<hr class="dashed">
-<hr class="dashed">
-
-
-
-<section class="hero">
-    <div class="container">
-<h1>pipeline links:</h1>
-<a target='_blank' href="https://msazure.visualstudio.com/One/_build?definitionId=285519&_a=summary">SMAgent build pipeline</a><br />
-<a target='_blank' href="https://msazure.visualstudio.com/One/_build?definitionId=243959&_a=summary">VFP build pipeline</a><br />
-<a target='_blank' href="https://msazure.visualstudio.com/One/_build?definitionId=245730&_a=summary">NDPA build pipeline</a>
-    </div>
-</section>
-
-
-
-
-</body></html>
diff --git a/archived/http-root/pako.js b/archived/http-root/pako.js
deleted file mode 100644
index 0c4968dad2c013a7d50348d8d4bc7d6cb9c1b766..0000000000000000000000000000000000000000
--- a/archived/http-root/pako.js
+++ /dev/null
@@ -1,6896 +0,0 @@
-
-/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-  typeof define === 'function' && define.amd ? define(['exports'], factory) :
-  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pako = {}));
-})(this, (function (exports) { 'use strict';
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  /* eslint-disable space-unary-ops */
-
-  /* Public constants ==========================================================*/
-  /* ===========================================================================*/
-
-
-  //const Z_FILTERED          = 1;
-  //const Z_HUFFMAN_ONLY      = 2;
-  //const Z_RLE               = 3;
-  const Z_FIXED$1               = 4;
-  //const Z_DEFAULT_STRATEGY  = 0;
-
-  /* Possible values of the data_type field (though see inflate()) */
-  const Z_BINARY              = 0;
-  const Z_TEXT                = 1;
-  //const Z_ASCII             = 1; // = Z_TEXT
-  const Z_UNKNOWN$1             = 2;
-
-  /*============================================================================*/
-
-
-  function zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }
-
-  // From zutil.h
-
-  const STORED_BLOCK = 0;
-  const STATIC_TREES = 1;
-  const DYN_TREES    = 2;
-  /* The three kinds of block type */
-
-  const MIN_MATCH$1    = 3;
-  const MAX_MATCH$1    = 258;
-  /* The minimum and maximum match lengths */
-
-  // From deflate.h
-  /* ===========================================================================
-   * Internal compression state.
-   */
-
-  const LENGTH_CODES$1  = 29;
-  /* number of length codes, not counting the special END_BLOCK code */
-
-  const LITERALS$1      = 256;
-  /* number of literal bytes 0..255 */
-
-  const L_CODES$1       = LITERALS$1 + 1 + LENGTH_CODES$1;
-  /* number of Literal or Length codes, including the END_BLOCK code */
-
-  const D_CODES$1       = 30;
-  /* number of distance codes */
-
-  const BL_CODES$1      = 19;
-  /* number of codes used to transfer the bit lengths */
-
-  const HEAP_SIZE$1     = 2 * L_CODES$1 + 1;
-  /* maximum heap size */
-
-  const MAX_BITS$1      = 15;
-  /* All codes must not exceed MAX_BITS bits */
-
-  const Buf_size      = 16;
-  /* size of bit buffer in bi_buf */
-
-
-  /* ===========================================================================
-   * Constants
-   */
-
-  const MAX_BL_BITS = 7;
-  /* Bit length codes must not exceed MAX_BL_BITS bits */
-
-  const END_BLOCK   = 256;
-  /* end of block literal code */
-
-  const REP_3_6     = 16;
-  /* repeat previous bit length 3-6 times (2 bits of repeat count) */
-
-  const REPZ_3_10   = 17;
-  /* repeat a zero length 3-10 times  (3 bits of repeat count) */
-
-  const REPZ_11_138 = 18;
-  /* repeat a zero length 11-138 times  (7 bits of repeat count) */
-
-  /* eslint-disable comma-spacing,array-bracket-spacing */
-  const extra_lbits =   /* extra bits for each length code */
-    new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);
-
-  const extra_dbits =   /* extra bits for each distance code */
-    new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);
-
-  const extra_blbits =  /* extra bits for each bit length code */
-    new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);
-
-  const bl_order =
-    new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);
-  /* eslint-enable comma-spacing,array-bracket-spacing */
-
-  /* The lengths of the bit length codes are sent in order of decreasing
-   * probability, to avoid transmitting the lengths for unused bit length codes.
-   */
-
-  /* ===========================================================================
-   * Local data. These are initialized only once.
-   */
-
-  // We pre-fill arrays with 0 to avoid uninitialized gaps
-
-  const DIST_CODE_LEN = 512; /* see definition of array dist_code below */
-
-  // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
-  const static_ltree  = new Array((L_CODES$1 + 2) * 2);
-  zero$1(static_ltree);
-  /* The static literal tree. Since the bit lengths are imposed, there is no
-   * need for the L_CODES extra codes used during heap construction. However
-   * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
-   * below).
-   */
-
-  const static_dtree  = new Array(D_CODES$1 * 2);
-  zero$1(static_dtree);
-  /* The static distance tree. (Actually a trivial tree since all codes use
-   * 5 bits.)
-   */
-
-  const _dist_code    = new Array(DIST_CODE_LEN);
-  zero$1(_dist_code);
-  /* Distance codes. The first 256 values correspond to the distances
-   * 3 .. 258, the last 256 values correspond to the top 8 bits of
-   * the 15 bit distances.
-   */
-
-  const _length_code  = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);
-  zero$1(_length_code);
-  /* length code for each normalized match length (0 == MIN_MATCH) */
-
-  const base_length   = new Array(LENGTH_CODES$1);
-  zero$1(base_length);
-  /* First normalized length for each code (0 = MIN_MATCH) */
-
-  const base_dist     = new Array(D_CODES$1);
-  zero$1(base_dist);
-  /* First normalized distance for each code (0 = distance of 1) */
-
-
-  function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
-
-    this.static_tree  = static_tree;  /* static tree or NULL */
-    this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
-    this.extra_base   = extra_base;   /* base index for extra_bits */
-    this.elems        = elems;        /* max number of elements in the tree */
-    this.max_length   = max_length;   /* max bit length for the codes */
-
-    // show if `static_tree` has data or dummy - needed for monomorphic objects
-    this.has_stree    = static_tree && static_tree.length;
-  }
-
-
-  let static_l_desc;
-  let static_d_desc;
-  let static_bl_desc;
-
-
-  function TreeDesc(dyn_tree, stat_desc) {
-    this.dyn_tree = dyn_tree;     /* the dynamic tree */
-    this.max_code = 0;            /* largest code with non zero frequency */
-    this.stat_desc = stat_desc;   /* the corresponding static tree */
-  }
-
-
-
-  const d_code = (dist) => {
-
-    return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
-  };
-
-
-  /* ===========================================================================
-   * Output a short LSB first on the stream.
-   * IN assertion: there is enough room in pendingBuf.
-   */
-  const put_short = (s, w) => {
-  //    put_byte(s, (uch)((w) & 0xff));
-  //    put_byte(s, (uch)((ush)(w) >> 8));
-    s.pending_buf[s.pending++] = (w) & 0xff;
-    s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
-  };
-
-
-  /* ===========================================================================
-   * Send a value on a given number of bits.
-   * IN assertion: length <= 16 and value fits in length bits.
-   */
-  const send_bits = (s, value, length) => {
-
-    if (s.bi_valid > (Buf_size - length)) {
-      s.bi_buf |= (value << s.bi_valid) & 0xffff;
-      put_short(s, s.bi_buf);
-      s.bi_buf = value >> (Buf_size - s.bi_valid);
-      s.bi_valid += length - Buf_size;
-    } else {
-      s.bi_buf |= (value << s.bi_valid) & 0xffff;
-      s.bi_valid += length;
-    }
-  };
-
-
-  const send_code = (s, c, tree) => {
-
-    send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
-  };
-
-
-  /* ===========================================================================
-   * Reverse the first len bits of a code, using straightforward code (a faster
-   * method would use a table)
-   * IN assertion: 1 <= len <= 15
-   */
-  const bi_reverse = (code, len) => {
-
-    let res = 0;
-    do {
-      res |= code & 1;
-      code >>>= 1;
-      res <<= 1;
-    } while (--len > 0);
-    return res >>> 1;
-  };
-
-
-  /* ===========================================================================
-   * Flush the bit buffer, keeping at most 7 bits in it.
-   */
-  const bi_flush = (s) => {
-
-    if (s.bi_valid === 16) {
-      put_short(s, s.bi_buf);
-      s.bi_buf = 0;
-      s.bi_valid = 0;
-
-    } else if (s.bi_valid >= 8) {
-      s.pending_buf[s.pending++] = s.bi_buf & 0xff;
-      s.bi_buf >>= 8;
-      s.bi_valid -= 8;
-    }
-  };
-
-
-  /* ===========================================================================
-   * Compute the optimal bit lengths for a tree and update the total bit length
-   * for the current block.
-   * IN assertion: the fields freq and dad are set, heap[heap_max] and
-   *    above are the tree nodes sorted by increasing frequency.
-   * OUT assertions: the field len is set to the optimal bit length, the
-   *     array bl_count contains the frequencies for each bit length.
-   *     The length opt_len is updated; static_len is also updated if stree is
-   *     not null.
-   */
-  const gen_bitlen = (s, desc) => {
-  //    deflate_state *s;
-  //    tree_desc *desc;    /* the tree descriptor */
-
-    const tree            = desc.dyn_tree;
-    const max_code        = desc.max_code;
-    const stree           = desc.stat_desc.static_tree;
-    const has_stree       = desc.stat_desc.has_stree;
-    const extra           = desc.stat_desc.extra_bits;
-    const base            = desc.stat_desc.extra_base;
-    const max_length      = desc.stat_desc.max_length;
-    let h;              /* heap index */
-    let n, m;           /* iterate over the tree elements */
-    let bits;           /* bit length */
-    let xbits;          /* extra bits */
-    let f;              /* frequency */
-    let overflow = 0;   /* number of elements with bit length too large */
-
-    for (bits = 0; bits <= MAX_BITS$1; bits++) {
-      s.bl_count[bits] = 0;
-    }
-
-    /* In a first pass, compute the optimal bit lengths (which may
-     * overflow in the case of the bit length tree).
-     */
-    tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
-
-    for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {
-      n = s.heap[h];
-      bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
-      if (bits > max_length) {
-        bits = max_length;
-        overflow++;
-      }
-      tree[n * 2 + 1]/*.Len*/ = bits;
-      /* We overwrite tree[n].Dad which is no longer needed */
-
-      if (n > max_code) { continue; } /* not a leaf node */
-
-      s.bl_count[bits]++;
-      xbits = 0;
-      if (n >= base) {
-        xbits = extra[n - base];
-      }
-      f = tree[n * 2]/*.Freq*/;
-      s.opt_len += f * (bits + xbits);
-      if (has_stree) {
-        s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
-      }
-    }
-    if (overflow === 0) { return; }
-
-    // Tracev((stderr,"\nbit length overflow\n"));
-    /* This happens for example on obj2 and pic of the Calgary corpus */
-
-    /* Find the first bit length which could increase: */
-    do {
-      bits = max_length - 1;
-      while (s.bl_count[bits] === 0) { bits--; }
-      s.bl_count[bits]--;      /* move one leaf down the tree */
-      s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
-      s.bl_count[max_length]--;
-      /* The brother of the overflow item also moves one step up,
-       * but this does not affect bl_count[max_length]
-       */
-      overflow -= 2;
-    } while (overflow > 0);
-
-    /* Now recompute all bit lengths, scanning in increasing frequency.
-     * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
-     * lengths instead of fixing only the wrong ones. This idea is taken
-     * from 'ar' written by Haruhiko Okumura.)
-     */
-    for (bits = max_length; bits !== 0; bits--) {
-      n = s.bl_count[bits];
-      while (n !== 0) {
-        m = s.heap[--h];
-        if (m > max_code) { continue; }
-        if (tree[m * 2 + 1]/*.Len*/ !== bits) {
-          // Tracev((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-          s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
-          tree[m * 2 + 1]/*.Len*/ = bits;
-        }
-        n--;
-      }
-    }
-  };
-
-
-  /* ===========================================================================
-   * Generate the codes for a given tree and bit counts (which need not be
-   * optimal).
-   * IN assertion: the array bl_count contains the bit length statistics for
-   * the given tree and the field len is set for all tree elements.
-   * OUT assertion: the field code is set for all tree elements of non
-   *     zero code length.
-   */
-  const gen_codes = (tree, max_code, bl_count) => {
-  //    ct_data *tree;             /* the tree to decorate */
-  //    int max_code;              /* largest code with non zero frequency */
-  //    ushf *bl_count;            /* number of codes at each bit length */
-
-    const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */
-    let code = 0;              /* running code value */
-    let bits;                  /* bit index */
-    let n;                     /* code index */
-
-    /* The distribution counts are first used to generate the code values
-     * without bit reversal.
-     */
-    for (bits = 1; bits <= MAX_BITS$1; bits++) {
-      code = (code + bl_count[bits - 1]) << 1;
-      next_code[bits] = code;
-    }
-    /* Check that the bit counts in bl_count are consistent. The last code
-     * must be all ones.
-     */
-    //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-    //        "inconsistent bit counts");
-    //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
-    for (n = 0;  n <= max_code; n++) {
-      let len = tree[n * 2 + 1]/*.Len*/;
-      if (len === 0) { continue; }
-      /* Now reverse the bits */
-      tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
-
-      //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-      //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-    }
-  };
-
-
-  /* ===========================================================================
-   * Initialize the various 'constant' tables.
-   */
-  const tr_static_init = () => {
-
-    let n;        /* iterates over tree elements */
-    let bits;     /* bit counter */
-    let length;   /* length value */
-    let code;     /* code value */
-    let dist;     /* distance index */
-    const bl_count = new Array(MAX_BITS$1 + 1);
-    /* number of codes at each bit length for an optimal tree */
-
-    // do check in _tr_init()
-    //if (static_init_done) return;
-
-    /* For some embedded targets, global variables are not initialized: */
-  /*#ifdef NO_INIT_GLOBAL_POINTERS
-    static_l_desc.static_tree = static_ltree;
-    static_l_desc.extra_bits = extra_lbits;
-    static_d_desc.static_tree = static_dtree;
-    static_d_desc.extra_bits = extra_dbits;
-    static_bl_desc.extra_bits = extra_blbits;
-  #endif*/
-
-    /* Initialize the mapping length (0..255) -> length code (0..28) */
-    length = 0;
-    for (code = 0; code < LENGTH_CODES$1 - 1; code++) {
-      base_length[code] = length;
-      for (n = 0; n < (1 << extra_lbits[code]); n++) {
-        _length_code[length++] = code;
-      }
-    }
-    //Assert (length == 256, "tr_static_init: length != 256");
-    /* Note that the length 255 (match length 258) can be represented
-     * in two different ways: code 284 + 5 bits or code 285, so we
-     * overwrite length_code[255] to use the best encoding:
-     */
-    _length_code[length - 1] = code;
-
-    /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
-    dist = 0;
-    for (code = 0; code < 16; code++) {
-      base_dist[code] = dist;
-      for (n = 0; n < (1 << extra_dbits[code]); n++) {
-        _dist_code[dist++] = code;
-      }
-    }
-    //Assert (dist == 256, "tr_static_init: dist != 256");
-    dist >>= 7; /* from now on, all distances are divided by 128 */
-    for (; code < D_CODES$1; code++) {
-      base_dist[code] = dist << 7;
-      for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
-        _dist_code[256 + dist++] = code;
-      }
-    }
-    //Assert (dist == 256, "tr_static_init: 256+dist != 512");
-
-    /* Construct the codes of the static literal tree */
-    for (bits = 0; bits <= MAX_BITS$1; bits++) {
-      bl_count[bits] = 0;
-    }
-
-    n = 0;
-    while (n <= 143) {
-      static_ltree[n * 2 + 1]/*.Len*/ = 8;
-      n++;
-      bl_count[8]++;
-    }
-    while (n <= 255) {
-      static_ltree[n * 2 + 1]/*.Len*/ = 9;
-      n++;
-      bl_count[9]++;
-    }
-    while (n <= 279) {
-      static_ltree[n * 2 + 1]/*.Len*/ = 7;
-      n++;
-      bl_count[7]++;
-    }
-    while (n <= 287) {
-      static_ltree[n * 2 + 1]/*.Len*/ = 8;
-      n++;
-      bl_count[8]++;
-    }
-    /* Codes 286 and 287 do not exist, but we must include them in the
-     * tree construction to get a canonical Huffman tree (longest code
-     * all ones)
-     */
-    gen_codes(static_ltree, L_CODES$1 + 1, bl_count);
-
-    /* The static distance tree is trivial: */
-    for (n = 0; n < D_CODES$1; n++) {
-      static_dtree[n * 2 + 1]/*.Len*/ = 5;
-      static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
-    }
-
-    // Now data ready and we can init static trees
-    static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);
-    static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES$1, MAX_BITS$1);
-    static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES$1, MAX_BL_BITS);
-
-    //static_init_done = true;
-  };
-
-
-  /* ===========================================================================
-   * Initialize a new block.
-   */
-  const init_block = (s) => {
-
-    let n; /* iterates over tree elements */
-
-    /* Initialize the trees. */
-    for (n = 0; n < L_CODES$1;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
-    for (n = 0; n < D_CODES$1;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
-    for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
-
-    s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
-    s.opt_len = s.static_len = 0;
-    s.sym_next = s.matches = 0;
-  };
-
-
-  /* ===========================================================================
-   * Flush the bit buffer and align the output on a byte boundary
-   */
-  const bi_windup = (s) =>
-  {
-    if (s.bi_valid > 8) {
-      put_short(s, s.bi_buf);
-    } else if (s.bi_valid > 0) {
-      //put_byte(s, (Byte)s->bi_buf);
-      s.pending_buf[s.pending++] = s.bi_buf;
-    }
-    s.bi_buf = 0;
-    s.bi_valid = 0;
-  };
-
-  /* ===========================================================================
-   * Compares to subtrees, using the tree depth as tie breaker when
-   * the subtrees have equal frequency. This minimizes the worst case length.
-   */
-  const smaller = (tree, n, m, depth) => {
-
-    const _n2 = n * 2;
-    const _m2 = m * 2;
-    return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
-           (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
-  };
-
-  /* ===========================================================================
-   * Restore the heap property by moving down the tree starting at node k,
-   * exchanging a node with the smallest of its two sons if necessary, stopping
-   * when the heap property is re-established (each father smaller than its
-   * two sons).
-   */
-  const pqdownheap = (s, tree, k) => {
-  //    deflate_state *s;
-  //    ct_data *tree;  /* the tree to restore */
-  //    int k;               /* node to move down */
-
-    const v = s.heap[k];
-    let j = k << 1;  /* left son of k */
-    while (j <= s.heap_len) {
-      /* Set j to the smallest of the two sons: */
-      if (j < s.heap_len &&
-        smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
-        j++;
-      }
-      /* Exit if v is smaller than both sons */
-      if (smaller(tree, v, s.heap[j], s.depth)) { break; }
-
-      /* Exchange v with the smallest son */
-      s.heap[k] = s.heap[j];
-      k = j;
-
-      /* And continue down the tree, setting j to the left son of k */
-      j <<= 1;
-    }
-    s.heap[k] = v;
-  };
-
-
-  // inlined manually
-  // const SMALLEST = 1;
-
-  /* ===========================================================================
-   * Send the block data compressed using the given Huffman trees
-   */
-  const compress_block = (s, ltree, dtree) => {
-  //    deflate_state *s;
-  //    const ct_data *ltree; /* literal tree */
-  //    const ct_data *dtree; /* distance tree */
-
-    let dist;           /* distance of matched string */
-    let lc;             /* match length or unmatched char (if dist == 0) */
-    let sx = 0;         /* running index in sym_buf */
-    let code;           /* the code to send */
-    let extra;          /* number of extra bits to send */
-
-    if (s.sym_next !== 0) {
-      do {
-        dist = s.pending_buf[s.sym_buf + sx++] & 0xff;
-        dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;
-        lc = s.pending_buf[s.sym_buf + sx++];
-        if (dist === 0) {
-          send_code(s, lc, ltree); /* send a literal byte */
-          //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-        } else {
-          /* Here, lc is the match length - MIN_MATCH */
-          code = _length_code[lc];
-          send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */
-          extra = extra_lbits[code];
-          if (extra !== 0) {
-            lc -= base_length[code];
-            send_bits(s, lc, extra);       /* send the extra length bits */
-          }
-          dist--; /* dist is now the match distance - 1 */
-          code = d_code(dist);
-          //Assert (code < D_CODES, "bad d_code");
-
-          send_code(s, code, dtree);       /* send the distance code */
-          extra = extra_dbits[code];
-          if (extra !== 0) {
-            dist -= base_dist[code];
-            send_bits(s, dist, extra);   /* send the extra distance bits */
-          }
-        } /* literal or match pair ? */
-
-        /* Check that the overlay between pending_buf and sym_buf is ok: */
-        //Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
-
-      } while (sx < s.sym_next);
-    }
-
-    send_code(s, END_BLOCK, ltree);
-  };
-
-
-  /* ===========================================================================
-   * Construct one Huffman tree and assigns the code bit strings and lengths.
-   * Update the total bit length for the current block.
-   * IN assertion: the field freq is set for all tree elements.
-   * OUT assertions: the fields len and code are set to the optimal bit length
-   *     and corresponding code. The length opt_len is updated; static_len is
-   *     also updated if stree is not null. The field max_code is set.
-   */
-  const build_tree = (s, desc) => {
-  //    deflate_state *s;
-  //    tree_desc *desc; /* the tree descriptor */
-
-    const tree     = desc.dyn_tree;
-    const stree    = desc.stat_desc.static_tree;
-    const has_stree = desc.stat_desc.has_stree;
-    const elems    = desc.stat_desc.elems;
-    let n, m;          /* iterate over heap elements */
-    let max_code = -1; /* largest code with non zero frequency */
-    let node;          /* new node being created */
-
-    /* Construct the initial heap, with least frequent element in
-     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
-     * heap[0] is not used.
-     */
-    s.heap_len = 0;
-    s.heap_max = HEAP_SIZE$1;
-
-    for (n = 0; n < elems; n++) {
-      if (tree[n * 2]/*.Freq*/ !== 0) {
-        s.heap[++s.heap_len] = max_code = n;
-        s.depth[n] = 0;
-
-      } else {
-        tree[n * 2 + 1]/*.Len*/ = 0;
-      }
-    }
-
-    /* The pkzip format requires that at least one distance code exists,
-     * and that at least one bit should be sent even if there is only one
-     * possible code. So to avoid special checks later on we force at least
-     * two codes of non zero frequency.
-     */
-    while (s.heap_len < 2) {
-      node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
-      tree[node * 2]/*.Freq*/ = 1;
-      s.depth[node] = 0;
-      s.opt_len--;
-
-      if (has_stree) {
-        s.static_len -= stree[node * 2 + 1]/*.Len*/;
-      }
-      /* node is 0 or 1 so it does not have extra bits */
-    }
-    desc.max_code = max_code;
-
-    /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
-     * establish sub-heaps of increasing lengths:
-     */
-    for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
-
-    /* Construct the Huffman tree by repeatedly combining the least two
-     * frequent nodes.
-     */
-    node = elems;              /* next internal node of the tree */
-    do {
-      //pqremove(s, tree, n);  /* n = node of least frequency */
-      /*** pqremove ***/
-      n = s.heap[1/*SMALLEST*/];
-      s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
-      pqdownheap(s, tree, 1/*SMALLEST*/);
-      /***/
-
-      m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
-
-      s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
-      s.heap[--s.heap_max] = m;
-
-      /* Create a new node father of n and m */
-      tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
-      s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
-      tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
-
-      /* and insert the new node in the heap */
-      s.heap[1/*SMALLEST*/] = node++;
-      pqdownheap(s, tree, 1/*SMALLEST*/);
-
-    } while (s.heap_len >= 2);
-
-    s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
-
-    /* At this point, the fields freq and dad are set. We can now
-     * generate the bit lengths.
-     */
-    gen_bitlen(s, desc);
-
-    /* The field len is now set, we can generate the bit codes */
-    gen_codes(tree, max_code, s.bl_count);
-  };
-
-
-  /* ===========================================================================
-   * Scan a literal or distance tree to determine the frequencies of the codes
-   * in the bit length tree.
-   */
-  const scan_tree = (s, tree, max_code) => {
-  //    deflate_state *s;
-  //    ct_data *tree;   /* the tree to be scanned */
-  //    int max_code;    /* and its largest code of non zero frequency */
-
-    let n;                     /* iterates over all tree elements */
-    let prevlen = -1;          /* last emitted length */
-    let curlen;                /* length of current code */
-
-    let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
-
-    let count = 0;             /* repeat count of the current code */
-    let max_count = 7;         /* max repeat count */
-    let min_count = 4;         /* min repeat count */
-
-    if (nextlen === 0) {
-      max_count = 138;
-      min_count = 3;
-    }
-    tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
-
-    for (n = 0; n <= max_code; n++) {
-      curlen = nextlen;
-      nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
-
-      if (++count < max_count && curlen === nextlen) {
-        continue;
-
-      } else if (count < min_count) {
-        s.bl_tree[curlen * 2]/*.Freq*/ += count;
-
-      } else if (curlen !== 0) {
-
-        if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
-        s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
-
-      } else if (count <= 10) {
-        s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
-
-      } else {
-        s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
-      }
-
-      count = 0;
-      prevlen = curlen;
-
-      if (nextlen === 0) {
-        max_count = 138;
-        min_count = 3;
-
-      } else if (curlen === nextlen) {
-        max_count = 6;
-        min_count = 3;
-
-      } else {
-        max_count = 7;
-        min_count = 4;
-      }
-    }
-  };
-
-
-  /* ===========================================================================
-   * Send a literal or distance tree in compressed form, using the codes in
-   * bl_tree.
-   */
-  const send_tree = (s, tree, max_code) => {
-  //    deflate_state *s;
-  //    ct_data *tree; /* the tree to be scanned */
-  //    int max_code;       /* and its largest code of non zero frequency */
-
-    let n;                     /* iterates over all tree elements */
-    let prevlen = -1;          /* last emitted length */
-    let curlen;                /* length of current code */
-
-    let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
-
-    let count = 0;             /* repeat count of the current code */
-    let max_count = 7;         /* max repeat count */
-    let min_count = 4;         /* min repeat count */
-
-    /* tree[max_code+1].Len = -1; */  /* guard already set */
-    if (nextlen === 0) {
-      max_count = 138;
-      min_count = 3;
-    }
-
-    for (n = 0; n <= max_code; n++) {
-      curlen = nextlen;
-      nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
-
-      if (++count < max_count && curlen === nextlen) {
-        continue;
-
-      } else if (count < min_count) {
-        do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
-
-      } else if (curlen !== 0) {
-        if (curlen !== prevlen) {
-          send_code(s, curlen, s.bl_tree);
-          count--;
-        }
-        //Assert(count >= 3 && count <= 6, " 3_6?");
-        send_code(s, REP_3_6, s.bl_tree);
-        send_bits(s, count - 3, 2);
-
-      } else if (count <= 10) {
-        send_code(s, REPZ_3_10, s.bl_tree);
-        send_bits(s, count - 3, 3);
-
-      } else {
-        send_code(s, REPZ_11_138, s.bl_tree);
-        send_bits(s, count - 11, 7);
-      }
-
-      count = 0;
-      prevlen = curlen;
-      if (nextlen === 0) {
-        max_count = 138;
-        min_count = 3;
-
-      } else if (curlen === nextlen) {
-        max_count = 6;
-        min_count = 3;
-
-      } else {
-        max_count = 7;
-        min_count = 4;
-      }
-    }
-  };
-
-
-  /* ===========================================================================
-   * Construct the Huffman tree for the bit lengths and return the index in
-   * bl_order of the last bit length code to send.
-   */
-  const build_bl_tree = (s) => {
-
-    let max_blindex;  /* index of last bit length code of non zero freq */
-
-    /* Determine the bit length frequencies for literal and distance trees */
-    scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
-    scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
-
-    /* Build the bit length tree: */
-    build_tree(s, s.bl_desc);
-    /* opt_len now includes the length of the tree representations, except
-     * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
-     */
-
-    /* Determine the number of bit length codes to send. The pkzip format
-     * requires that at least 4 bit length codes be sent. (appnote.txt says
-     * 3 but the actual value used is 4.)
-     */
-    for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {
-      if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
-        break;
-      }
-    }
-    /* Update opt_len to include the bit length tree and counts */
-    s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
-    //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-    //        s->opt_len, s->static_len));
-
-    return max_blindex;
-  };
-
-
-  /* ===========================================================================
-   * Send the header for a block using dynamic Huffman trees: the counts, the
-   * lengths of the bit length codes, the literal tree and the distance tree.
-   * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
-   */
-  const send_all_trees = (s, lcodes, dcodes, blcodes) => {
-  //    deflate_state *s;
-  //    int lcodes, dcodes, blcodes; /* number of codes for each tree */
-
-    let rank;                    /* index in bl_order */
-
-    //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-    //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-    //        "too many codes");
-    //Tracev((stderr, "\nbl counts: "));
-    send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
-    send_bits(s, dcodes - 1,   5);
-    send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
-    for (rank = 0; rank < blcodes; rank++) {
-      //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
-      send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
-    }
-    //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-
-    send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
-    //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-
-    send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
-    //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-  };
-
-
-  /* ===========================================================================
-   * Check if the data type is TEXT or BINARY, using the following algorithm:
-   * - TEXT if the two conditions below are satisfied:
-   *    a) There are no non-portable control characters belonging to the
-   *       "block list" (0..6, 14..25, 28..31).
-   *    b) There is at least one printable character belonging to the
-   *       "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
-   * - BINARY otherwise.
-   * - The following partially-portable control characters form a
-   *   "gray list" that is ignored in this detection algorithm:
-   *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
-   * IN assertion: the fields Freq of dyn_ltree are set.
-   */
-  const detect_data_type = (s) => {
-    /* block_mask is the bit mask of block-listed bytes
-     * set bits 0..6, 14..25, and 28..31
-     * 0xf3ffc07f = binary 11110011111111111100000001111111
-     */
-    let block_mask = 0xf3ffc07f;
-    let n;
-
-    /* Check for non-textual ("block-listed") bytes. */
-    for (n = 0; n <= 31; n++, block_mask >>>= 1) {
-      if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
-        return Z_BINARY;
-      }
-    }
-
-    /* Check for textual ("allow-listed") bytes. */
-    if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
-        s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
-      return Z_TEXT;
-    }
-    for (n = 32; n < LITERALS$1; n++) {
-      if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
-        return Z_TEXT;
-      }
-    }
-
-    /* There are no "block-listed" or "allow-listed" bytes:
-     * this stream either is empty or has tolerated ("gray-listed") bytes only.
-     */
-    return Z_BINARY;
-  };
-
-
-  let static_init_done = false;
-
-  /* ===========================================================================
-   * Initialize the tree data structures for a new zlib stream.
-   */
-  const _tr_init$1 = (s) =>
-  {
-
-    if (!static_init_done) {
-      tr_static_init();
-      static_init_done = true;
-    }
-
-    s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
-    s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
-    s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
-
-    s.bi_buf = 0;
-    s.bi_valid = 0;
-
-    /* Initialize the first block of the first file: */
-    init_block(s);
-  };
-
-
-  /* ===========================================================================
-   * Send a stored block
-   */
-  const _tr_stored_block$1 = (s, buf, stored_len, last) => {
-  //DeflateState *s;
-  //charf *buf;       /* input block */
-  //ulg stored_len;   /* length of input block */
-  //int last;         /* one if this is the last block for a file */
-
-    send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
-    bi_windup(s);        /* align on byte boundary */
-    put_short(s, stored_len);
-    put_short(s, ~stored_len);
-    if (stored_len) {
-      s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);
-    }
-    s.pending += stored_len;
-  };
-
-
-  /* ===========================================================================
-   * Send one empty static block to give enough lookahead for inflate.
-   * This takes 10 bits, of which 7 may remain in the bit buffer.
-   */
-  const _tr_align$1 = (s) => {
-    send_bits(s, STATIC_TREES << 1, 3);
-    send_code(s, END_BLOCK, static_ltree);
-    bi_flush(s);
-  };
-
-
-  /* ===========================================================================
-   * Determine the best encoding for the current block: dynamic trees, static
-   * trees or store, and write out the encoded block.
-   */
-  const _tr_flush_block$1 = (s, buf, stored_len, last) => {
-  //DeflateState *s;
-  //charf *buf;       /* input block, or NULL if too old */
-  //ulg stored_len;   /* length of input block */
-  //int last;         /* one if this is the last block for a file */
-
-    let opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
-    let max_blindex = 0;        /* index of last bit length code of non zero freq */
-
-    /* Build the Huffman trees unless a stored block is forced */
-    if (s.level > 0) {
-
-      /* Check if the file is binary or text */
-      if (s.strm.data_type === Z_UNKNOWN$1) {
-        s.strm.data_type = detect_data_type(s);
-      }
-
-      /* Construct the literal and distance trees */
-      build_tree(s, s.l_desc);
-      // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-      //        s->static_len));
-
-      build_tree(s, s.d_desc);
-      // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-      //        s->static_len));
-      /* At this point, opt_len and static_len are the total bit lengths of
-       * the compressed block data, excluding the tree representations.
-       */
-
-      /* Build the bit length tree for the above two trees, and get the index
-       * in bl_order of the last bit length code to send.
-       */
-      max_blindex = build_bl_tree(s);
-
-      /* Determine the best encoding. Compute the block lengths in bytes. */
-      opt_lenb = (s.opt_len + 3 + 7) >>> 3;
-      static_lenb = (s.static_len + 3 + 7) >>> 3;
-
-      // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-      //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-      //        s->sym_next / 3));
-
-      if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
-
-    } else {
-      // Assert(buf != (char*)0, "lost buf");
-      opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
-    }
-
-    if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
-      /* 4: two words for the lengths */
-
-      /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
-       * Otherwise we can't have processed more than WSIZE input bytes since
-       * the last block flush, because compression would have been
-       * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
-       * transform a block into a stored block.
-       */
-      _tr_stored_block$1(s, buf, stored_len, last);
-
-    } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {
-
-      send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
-      compress_block(s, static_ltree, static_dtree);
-
-    } else {
-      send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
-      send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
-      compress_block(s, s.dyn_ltree, s.dyn_dtree);
-    }
-    // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-    /* The above check is made mod 2^32, for files larger than 512 MB
-     * and uLong implemented on 32 bits.
-     */
-    init_block(s);
-
-    if (last) {
-      bi_windup(s);
-    }
-    // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-    //       s->compressed_len-7*last));
-  };
-
-  /* ===========================================================================
-   * Save the match info and tally the frequency counts. Return true if
-   * the current block must be flushed.
-   */
-  const _tr_tally$1 = (s, dist, lc) => {
-  //    deflate_state *s;
-  //    unsigned dist;  /* distance of matched string */
-  //    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
-
-    s.pending_buf[s.sym_buf + s.sym_next++] = dist;
-    s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;
-    s.pending_buf[s.sym_buf + s.sym_next++] = lc;
-    if (dist === 0) {
-      /* lc is the unmatched char */
-      s.dyn_ltree[lc * 2]/*.Freq*/++;
-    } else {
-      s.matches++;
-      /* Here, lc is the match length - MIN_MATCH */
-      dist--;             /* dist = match distance - 1 */
-      //Assert((ush)dist < (ush)MAX_DIST(s) &&
-      //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-      //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
-
-      s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;
-      s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
-    }
-
-    return (s.sym_next === s.sym_end);
-  };
-
-  var _tr_init_1  = _tr_init$1;
-  var _tr_stored_block_1 = _tr_stored_block$1;
-  var _tr_flush_block_1  = _tr_flush_block$1;
-  var _tr_tally_1 = _tr_tally$1;
-  var _tr_align_1 = _tr_align$1;
-
-  var trees = {
-  	_tr_init: _tr_init_1,
-  	_tr_stored_block: _tr_stored_block_1,
-  	_tr_flush_block: _tr_flush_block_1,
-  	_tr_tally: _tr_tally_1,
-  	_tr_align: _tr_align_1
-  };
-
-  // Note: adler32 takes 12% for level 0 and 2% for level 6.
-  // It isn't worth it to make additional optimizations as in original.
-  // Small size is preferable.
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  const adler32 = (adler, buf, len, pos) => {
-    let s1 = (adler & 0xffff) |0,
-        s2 = ((adler >>> 16) & 0xffff) |0,
-        n = 0;
-
-    while (len !== 0) {
-      // Set limit ~ twice less than 5552, to keep
-      // s2 in 31-bits, because we force signed ints.
-      // in other case %= will fail.
-      n = len > 2000 ? 2000 : len;
-      len -= n;
-
-      do {
-        s1 = (s1 + buf[pos++]) |0;
-        s2 = (s2 + s1) |0;
-      } while (--n);
-
-      s1 %= 65521;
-      s2 %= 65521;
-    }
-
-    return (s1 | (s2 << 16)) |0;
-  };
-
-
-  var adler32_1 = adler32;
-
-  // Note: we can't get significant speed boost here.
-  // So write code to minimize size - no pregenerated tables
-  // and array tools dependencies.
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  // Use ordinary array, since untyped makes no boost here
-  const makeTable = () => {
-    let c, table = [];
-
-    for (var n = 0; n < 256; n++) {
-      c = n;
-      for (var k = 0; k < 8; k++) {
-        c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
-      }
-      table[n] = c;
-    }
-
-    return table;
-  };
-
-  // Create table on load. Just 255 signed longs. Not a problem.
-  const crcTable = new Uint32Array(makeTable());
-
-
-  const crc32 = (crc, buf, len, pos) => {
-    const t = crcTable;
-    const end = pos + len;
-
-    crc ^= -1;
-
-    for (let i = pos; i < end; i++) {
-      crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
-    }
-
-    return (crc ^ (-1)); // >>> 0;
-  };
-
-
-  var crc32_1 = crc32;
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  var messages = {
-    2:      'need dictionary',     /* Z_NEED_DICT       2  */
-    1:      'stream end',          /* Z_STREAM_END      1  */
-    0:      '',                    /* Z_OK              0  */
-    '-1':   'file error',          /* Z_ERRNO         (-1) */
-    '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
-    '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
-    '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
-    '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
-    '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  var constants$2 = {
-
-    /* Allowed flush values; see deflate() and inflate() below for details */
-    Z_NO_FLUSH:         0,
-    Z_PARTIAL_FLUSH:    1,
-    Z_SYNC_FLUSH:       2,
-    Z_FULL_FLUSH:       3,
-    Z_FINISH:           4,
-    Z_BLOCK:            5,
-    Z_TREES:            6,
-
-    /* Return codes for the compression/decompression functions. Negative values
-    * are errors, positive values are used for special but normal events.
-    */
-    Z_OK:               0,
-    Z_STREAM_END:       1,
-    Z_NEED_DICT:        2,
-    Z_ERRNO:           -1,
-    Z_STREAM_ERROR:    -2,
-    Z_DATA_ERROR:      -3,
-    Z_MEM_ERROR:       -4,
-    Z_BUF_ERROR:       -5,
-    //Z_VERSION_ERROR: -6,
-
-    /* compression levels */
-    Z_NO_COMPRESSION:         0,
-    Z_BEST_SPEED:             1,
-    Z_BEST_COMPRESSION:       9,
-    Z_DEFAULT_COMPRESSION:   -1,
-
-
-    Z_FILTERED:               1,
-    Z_HUFFMAN_ONLY:           2,
-    Z_RLE:                    3,
-    Z_FIXED:                  4,
-    Z_DEFAULT_STRATEGY:       0,
-
-    /* Possible values of the data_type field (though see inflate()) */
-    Z_BINARY:                 0,
-    Z_TEXT:                   1,
-    //Z_ASCII:                1, // = Z_TEXT (deprecated)
-    Z_UNKNOWN:                2,
-
-    /* The deflate compression method */
-    Z_DEFLATED:               8
-    //Z_NULL:                 null // Use -1 or null inline, depending on var type
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  const { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;
-
-
-
-
-  /* Public constants ==========================================================*/
-  /* ===========================================================================*/
-
-  const {
-    Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,
-    Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,
-    Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,
-    Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,
-    Z_UNKNOWN,
-    Z_DEFLATED: Z_DEFLATED$2
-  } = constants$2;
-
-  /*============================================================================*/
-
-
-  const MAX_MEM_LEVEL = 9;
-  /* Maximum value for memLevel in deflateInit2 */
-  const MAX_WBITS$1 = 15;
-  /* 32K LZ77 window */
-  const DEF_MEM_LEVEL = 8;
-
-
-  const LENGTH_CODES  = 29;
-  /* number of length codes, not counting the special END_BLOCK code */
-  const LITERALS      = 256;
-  /* number of literal bytes 0..255 */
-  const L_CODES       = LITERALS + 1 + LENGTH_CODES;
-  /* number of Literal or Length codes, including the END_BLOCK code */
-  const D_CODES       = 30;
-  /* number of distance codes */
-  const BL_CODES      = 19;
-  /* number of codes used to transfer the bit lengths */
-  const HEAP_SIZE     = 2 * L_CODES + 1;
-  /* maximum heap size */
-  const MAX_BITS  = 15;
-  /* All codes must not exceed MAX_BITS bits */
-
-  const MIN_MATCH = 3;
-  const MAX_MATCH = 258;
-  const MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
-
-  const PRESET_DICT = 0x20;
-
-  const INIT_STATE    =  42;    /* zlib header -> BUSY_STATE */
-  //#ifdef GZIP
-  const GZIP_STATE    =  57;    /* gzip header -> BUSY_STATE | EXTRA_STATE */
-  //#endif
-  const EXTRA_STATE   =  69;    /* gzip extra block -> NAME_STATE */
-  const NAME_STATE    =  73;    /* gzip file name -> COMMENT_STATE */
-  const COMMENT_STATE =  91;    /* gzip comment -> HCRC_STATE */
-  const HCRC_STATE    = 103;    /* gzip header CRC -> BUSY_STATE */
-  const BUSY_STATE    = 113;    /* deflate -> FINISH_STATE */
-  const FINISH_STATE  = 666;    /* stream complete */
-
-  const BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
-  const BS_BLOCK_DONE     = 2; /* block flush performed */
-  const BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
-  const BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
-
-  const OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
-
-  const err = (strm, errorCode) => {
-    strm.msg = messages[errorCode];
-    return errorCode;
-  };
-
-  const rank = (f) => {
-    return ((f) * 2) - ((f) > 4 ? 9 : 0);
-  };
-
-  const zero = (buf) => {
-    let len = buf.length; while (--len >= 0) { buf[len] = 0; }
-  };
-
-  /* ===========================================================================
-   * Slide the hash table when sliding the window down (could be avoided with 32
-   * bit values at the expense of memory usage). We slide even when level == 0 to
-   * keep the hash table consistent if we switch back to level > 0 later.
-   */
-  const slide_hash = (s) => {
-    let n, m;
-    let p;
-    let wsize = s.w_size;
-
-    n = s.hash_size;
-    p = n;
-    do {
-      m = s.head[--p];
-      s.head[p] = (m >= wsize ? m - wsize : 0);
-    } while (--n);
-    n = wsize;
-  //#ifndef FASTEST
-    p = n;
-    do {
-      m = s.prev[--p];
-      s.prev[p] = (m >= wsize ? m - wsize : 0);
-      /* If n is not on any hash chain, prev[n] is garbage but
-       * its value will never be used.
-       */
-    } while (--n);
-  //#endif
-  };
-
-  /* eslint-disable new-cap */
-  let HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;
-  // This hash causes less collisions, https://github.com/nodeca/pako/issues/135
-  // But breaks binary compatibility
-  //let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;
-  let HASH = HASH_ZLIB;
-
-
-  /* =========================================================================
-   * Flush as much pending output as possible. All deflate() output, except for
-   * some deflate_stored() output, goes through this function so some
-   * applications may wish to modify it to avoid allocating a large
-   * strm->next_out buffer and copying into it. (See also read_buf()).
-   */
-  const flush_pending = (strm) => {
-    const s = strm.state;
-
-    //_tr_flush_bits(s);
-    let len = s.pending;
-    if (len > strm.avail_out) {
-      len = strm.avail_out;
-    }
-    if (len === 0) { return; }
-
-    strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);
-    strm.next_out  += len;
-    s.pending_out  += len;
-    strm.total_out += len;
-    strm.avail_out -= len;
-    s.pending      -= len;
-    if (s.pending === 0) {
-      s.pending_out = 0;
-    }
-  };
-
-
-  const flush_block_only = (s, last) => {
-    _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
-    s.block_start = s.strstart;
-    flush_pending(s.strm);
-  };
-
-
-  const put_byte = (s, b) => {
-    s.pending_buf[s.pending++] = b;
-  };
-
-
-  /* =========================================================================
-   * Put a short in the pending buffer. The 16-bit value is put in MSB order.
-   * IN assertion: the stream state is correct and there is enough room in
-   * pending_buf.
-   */
-  const putShortMSB = (s, b) => {
-
-    //  put_byte(s, (Byte)(b >> 8));
-  //  put_byte(s, (Byte)(b & 0xff));
-    s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
-    s.pending_buf[s.pending++] = b & 0xff;
-  };
-
-
-  /* ===========================================================================
-   * Read a new buffer from the current input stream, update the adler32
-   * and total number of bytes read.  All deflate() input goes through
-   * this function so some applications may wish to modify it to avoid
-   * allocating a large strm->input buffer and copying from it.
-   * (See also flush_pending()).
-   */
-  const read_buf = (strm, buf, start, size) => {
-
-    let len = strm.avail_in;
-
-    if (len > size) { len = size; }
-    if (len === 0) { return 0; }
-
-    strm.avail_in -= len;
-
-    // zmemcpy(buf, strm->next_in, len);
-    buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);
-    if (strm.state.wrap === 1) {
-      strm.adler = adler32_1(strm.adler, buf, len, start);
-    }
-
-    else if (strm.state.wrap === 2) {
-      strm.adler = crc32_1(strm.adler, buf, len, start);
-    }
-
-    strm.next_in += len;
-    strm.total_in += len;
-
-    return len;
-  };
-
-
-  /* ===========================================================================
-   * Set match_start to the longest match starting at the given string and
-   * return its length. Matches shorter or equal to prev_length are discarded,
-   * in which case the result is equal to prev_length and match_start is
-   * garbage.
-   * IN assertions: cur_match is the head of the hash chain for the current
-   *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
-   * OUT assertion: the match length is not greater than s->lookahead.
-   */
-  const longest_match = (s, cur_match) => {
-
-    let chain_length = s.max_chain_length;      /* max hash chain length */
-    let scan = s.strstart; /* current string */
-    let match;                       /* matched string */
-    let len;                           /* length of current match */
-    let best_len = s.prev_length;              /* best match length so far */
-    let nice_match = s.nice_match;             /* stop if match long enough */
-    const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
-        s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
-
-    const _win = s.window; // shortcut
-
-    const wmask = s.w_mask;
-    const prev  = s.prev;
-
-    /* Stop when cur_match becomes <= limit. To simplify the code,
-     * we prevent matches with the string of window index 0.
-     */
-
-    const strend = s.strstart + MAX_MATCH;
-    let scan_end1  = _win[scan + best_len - 1];
-    let scan_end   = _win[scan + best_len];
-
-    /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-     * It is easy to get rid of this optimization if necessary.
-     */
-    // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-
-    /* Do not waste too much time if we already have a good match: */
-    if (s.prev_length >= s.good_match) {
-      chain_length >>= 2;
-    }
-    /* Do not look for matches beyond the end of the input. This is necessary
-     * to make deflate deterministic.
-     */
-    if (nice_match > s.lookahead) { nice_match = s.lookahead; }
-
-    // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-
-    do {
-      // Assert(cur_match < s->strstart, "no future");
-      match = cur_match;
-
-      /* Skip to next match if the match length cannot increase
-       * or if the match length is less than 2.  Note that the checks below
-       * for insufficient lookahead only occur occasionally for performance
-       * reasons.  Therefore uninitialized memory will be accessed, and
-       * conditional jumps will be made that depend on those values.
-       * However the length of the match is limited to the lookahead, so
-       * the output of deflate is not affected by the uninitialized values.
-       */
-
-      if (_win[match + best_len]     !== scan_end  ||
-          _win[match + best_len - 1] !== scan_end1 ||
-          _win[match]                !== _win[scan] ||
-          _win[++match]              !== _win[scan + 1]) {
-        continue;
-      }
-
-      /* The check at best_len-1 can be removed because it will be made
-       * again later. (This heuristic is not always a win.)
-       * It is not necessary to compare scan[2] and match[2] since they
-       * are always equal when the other bytes match, given that
-       * the hash keys are equal and that HASH_BITS >= 8.
-       */
-      scan += 2;
-      match++;
-      // Assert(*scan == *match, "match[2]?");
-
-      /* We check for insufficient lookahead only every 8th comparison;
-       * the 256th check will be made at strstart+258.
-       */
-      do {
-        /*jshint noempty:false*/
-      } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-               _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-               _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-               _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
-               scan < strend);
-
-      // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-
-      len = MAX_MATCH - (strend - scan);
-      scan = strend - MAX_MATCH;
-
-      if (len > best_len) {
-        s.match_start = cur_match;
-        best_len = len;
-        if (len >= nice_match) {
-          break;
-        }
-        scan_end1  = _win[scan + best_len - 1];
-        scan_end   = _win[scan + best_len];
-      }
-    } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
-
-    if (best_len <= s.lookahead) {
-      return best_len;
-    }
-    return s.lookahead;
-  };
-
-
-  /* ===========================================================================
-   * Fill the window when the lookahead becomes insufficient.
-   * Updates strstart and lookahead.
-   *
-   * IN assertion: lookahead < MIN_LOOKAHEAD
-   * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
-   *    At least one byte has been read, or avail_in == 0; reads are
-   *    performed for at least two bytes (required for the zip translate_eol
-   *    option -- not supported here).
-   */
-  const fill_window = (s) => {
-
-    const _w_size = s.w_size;
-    let n, more, str;
-
-    //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
-
-    do {
-      more = s.window_size - s.lookahead - s.strstart;
-
-      // JS ints have 32 bit, block below not needed
-      /* Deal with !@#$% 64K limit: */
-      //if (sizeof(int) <= 2) {
-      //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-      //        more = wsize;
-      //
-      //  } else if (more == (unsigned)(-1)) {
-      //        /* Very unlikely, but possible on 16 bit machine if
-      //         * strstart == 0 && lookahead == 1 (input done a byte at time)
-      //         */
-      //        more--;
-      //    }
-      //}
-
-
-      /* If the window is almost full and there is insufficient lookahead,
-       * move the upper half to the lower one to make room in the upper half.
-       */
-      if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
-
-        s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);
-        s.match_start -= _w_size;
-        s.strstart -= _w_size;
-        /* we now have strstart >= MAX_DIST */
-        s.block_start -= _w_size;
-        if (s.insert > s.strstart) {
-          s.insert = s.strstart;
-        }
-        slide_hash(s);
-        more += _w_size;
-      }
-      if (s.strm.avail_in === 0) {
-        break;
-      }
-
-      /* If there was no sliding:
-       *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-       *    more == window_size - lookahead - strstart
-       * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-       * => more >= window_size - 2*WSIZE + 2
-       * In the BIG_MEM or MMAP case (not yet supported),
-       *   window_size == input_size + MIN_LOOKAHEAD  &&
-       *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-       * Otherwise, window_size == 2*WSIZE so more >= 2.
-       * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-       */
-      //Assert(more >= 2, "more < 2");
-      n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
-      s.lookahead += n;
-
-      /* Initialize the hash value now that we have some input: */
-      if (s.lookahead + s.insert >= MIN_MATCH) {
-        str = s.strstart - s.insert;
-        s.ins_h = s.window[str];
-
-        /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
-        s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);
-  //#if MIN_MATCH != 3
-  //        Call update_hash() MIN_MATCH-3 more times
-  //#endif
-        while (s.insert) {
-          /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
-          s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);
-
-          s.prev[str & s.w_mask] = s.head[s.ins_h];
-          s.head[s.ins_h] = str;
-          str++;
-          s.insert--;
-          if (s.lookahead + s.insert < MIN_MATCH) {
-            break;
-          }
-        }
-      }
-      /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-       * but this is not important since only literal bytes will be emitted.
-       */
-
-    } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
-
-    /* If the WIN_INIT bytes after the end of the current data have never been
-     * written, then zero those bytes in order to avoid memory check reports of
-     * the use of uninitialized (or uninitialised as Julian writes) bytes by
-     * the longest match routines.  Update the high water mark for the next
-     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
-     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
-     */
-  //  if (s.high_water < s.window_size) {
-  //    const curr = s.strstart + s.lookahead;
-  //    let init = 0;
-  //
-  //    if (s.high_water < curr) {
-  //      /* Previous high water mark below current data -- zero WIN_INIT
-  //       * bytes or up to end of window, whichever is less.
-  //       */
-  //      init = s.window_size - curr;
-  //      if (init > WIN_INIT)
-  //        init = WIN_INIT;
-  //      zmemzero(s->window + curr, (unsigned)init);
-  //      s->high_water = curr + init;
-  //    }
-  //    else if (s->high_water < (ulg)curr + WIN_INIT) {
-  //      /* High water mark at or above current data, but below current data
-  //       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
-  //       * to end of window, whichever is less.
-  //       */
-  //      init = (ulg)curr + WIN_INIT - s->high_water;
-  //      if (init > s->window_size - s->high_water)
-  //        init = s->window_size - s->high_water;
-  //      zmemzero(s->window + s->high_water, (unsigned)init);
-  //      s->high_water += init;
-  //    }
-  //  }
-  //
-  //  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
-  //    "not enough room for search");
-  };
-
-  /* ===========================================================================
-   * Copy without compression as much as possible from the input stream, return
-   * the current block state.
-   *
-   * In case deflateParams() is used to later switch to a non-zero compression
-   * level, s->matches (otherwise unused when storing) keeps track of the number
-   * of hash table slides to perform. If s->matches is 1, then one hash table
-   * slide will be done when switching. If s->matches is 2, the maximum value
-   * allowed here, then the hash table will be cleared, since two or more slides
-   * is the same as a clear.
-   *
-   * deflate_stored() is written to minimize the number of times an input byte is
-   * copied. It is most efficient with large input and output buffers, which
-   * maximizes the opportunites to have a single copy from next_in to next_out.
-   */
-  const deflate_stored = (s, flush) => {
-
-    /* Smallest worthy block size when not flushing or finishing. By default
-     * this is 32K. This can be as small as 507 bytes for memLevel == 1. For
-     * large input and output buffers, the stored block size will be larger.
-     */
-    let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;
-
-    /* Copy as many min_block or larger stored blocks directly to next_out as
-     * possible. If flushing, copy the remaining available input to next_out as
-     * stored blocks, if there is enough space.
-     */
-    let len, left, have, last = 0;
-    let used = s.strm.avail_in;
-    do {
-      /* Set len to the maximum size block that we can copy directly with the
-       * available input data and output space. Set left to how much of that
-       * would be copied from what's left in the window.
-       */
-      len = 65535/* MAX_STORED */;     /* maximum deflate stored block length */
-      have = (s.bi_valid + 42) >> 3;     /* number of header bytes */
-      if (s.strm.avail_out < have) {         /* need room for header */
-        break;
-      }
-        /* maximum stored block length that will fit in avail_out: */
-      have = s.strm.avail_out - have;
-      left = s.strstart - s.block_start;  /* bytes left in window */
-      if (len > left + s.strm.avail_in) {
-        len = left + s.strm.avail_in;   /* limit len to the input */
-      }
-      if (len > have) {
-        len = have;             /* limit len to the output */
-      }
-
-      /* If the stored block would be less than min_block in length, or if
-       * unable to copy all of the available input when flushing, then try
-       * copying to the window and the pending buffer instead. Also don't
-       * write an empty block when flushing -- deflate() does that.
-       */
-      if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||
-                          flush === Z_NO_FLUSH$2 ||
-                          len !== left + s.strm.avail_in)) {
-        break;
-      }
-
-      /* Make a dummy stored block in pending to get the header bytes,
-       * including any pending bits. This also updates the debugging counts.
-       */
-      last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;
-      _tr_stored_block(s, 0, 0, last);
-
-      /* Replace the lengths in the dummy stored block with len. */
-      s.pending_buf[s.pending - 4] = len;
-      s.pending_buf[s.pending - 3] = len >> 8;
-      s.pending_buf[s.pending - 2] = ~len;
-      s.pending_buf[s.pending - 1] = ~len >> 8;
-
-      /* Write the stored block header bytes. */
-      flush_pending(s.strm);
-
-  //#ifdef ZLIB_DEBUG
-  //    /* Update debugging counts for the data about to be copied. */
-  //    s->compressed_len += len << 3;
-  //    s->bits_sent += len << 3;
-  //#endif
-
-      /* Copy uncompressed bytes from the window to next_out. */
-      if (left) {
-        if (left > len) {
-          left = len;
-        }
-        //zmemcpy(s->strm->next_out, s->window + s->block_start, left);
-        s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);
-        s.strm.next_out += left;
-        s.strm.avail_out -= left;
-        s.strm.total_out += left;
-        s.block_start += left;
-        len -= left;
-      }
-
-      /* Copy uncompressed bytes directly from next_in to next_out, updating
-       * the check value.
-       */
-      if (len) {
-        read_buf(s.strm, s.strm.output, s.strm.next_out, len);
-        s.strm.next_out += len;
-        s.strm.avail_out -= len;
-        s.strm.total_out += len;
-      }
-    } while (last === 0);
-
-    /* Update the sliding window with the last s->w_size bytes of the copied
-     * data, or append all of the copied data to the existing window if less
-     * than s->w_size bytes were copied. Also update the number of bytes to
-     * insert in the hash tables, in the event that deflateParams() switches to
-     * a non-zero compression level.
-     */
-    used -= s.strm.avail_in;    /* number of input bytes directly copied */
-    if (used) {
-      /* If any input was used, then no unused input remains in the window,
-       * therefore s->block_start == s->strstart.
-       */
-      if (used >= s.w_size) {  /* supplant the previous history */
-        s.matches = 2;     /* clear hash */
-        //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
-        s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);
-        s.strstart = s.w_size;
-        s.insert = s.strstart;
-      }
-      else {
-        if (s.window_size - s.strstart <= used) {
-          /* Slide the window down. */
-          s.strstart -= s.w_size;
-          //zmemcpy(s->window, s->window + s->w_size, s->strstart);
-          s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
-          if (s.matches < 2) {
-            s.matches++;   /* add a pending slide_hash() */
-          }
-          if (s.insert > s.strstart) {
-            s.insert = s.strstart;
-          }
-        }
-        //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
-        s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);
-        s.strstart += used;
-        s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;
-      }
-      s.block_start = s.strstart;
-    }
-    if (s.high_water < s.strstart) {
-      s.high_water = s.strstart;
-    }
-
-    /* If the last block was written to next_out, then done. */
-    if (last) {
-      return BS_FINISH_DONE;
-    }
-
-    /* If flushing and all input has been consumed, then done. */
-    if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&
-      s.strm.avail_in === 0 && s.strstart === s.block_start) {
-      return BS_BLOCK_DONE;
-    }
-
-    /* Fill the window with any remaining input. */
-    have = s.window_size - s.strstart;
-    if (s.strm.avail_in > have && s.block_start >= s.w_size) {
-      /* Slide the window down. */
-      s.block_start -= s.w_size;
-      s.strstart -= s.w_size;
-      //zmemcpy(s->window, s->window + s->w_size, s->strstart);
-      s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
-      if (s.matches < 2) {
-        s.matches++;       /* add a pending slide_hash() */
-      }
-      have += s.w_size;      /* more space now */
-      if (s.insert > s.strstart) {
-        s.insert = s.strstart;
-      }
-    }
-    if (have > s.strm.avail_in) {
-      have = s.strm.avail_in;
-    }
-    if (have) {
-      read_buf(s.strm, s.window, s.strstart, have);
-      s.strstart += have;
-      s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;
-    }
-    if (s.high_water < s.strstart) {
-      s.high_water = s.strstart;
-    }
-
-    /* There was not enough avail_out to write a complete worthy or flushed
-     * stored block to next_out. Write a stored block to pending instead, if we
-     * have enough input for a worthy block, or if flushing and there is enough
-     * room for the remaining input as a stored block in the pending buffer.
-     */
-    have = (s.bi_valid + 42) >> 3;     /* number of header bytes */
-      /* maximum stored block length that will fit in pending: */
-    have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;
-    min_block = have > s.w_size ? s.w_size : have;
-    left = s.strstart - s.block_start;
-    if (left >= min_block ||
-       ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&
-       s.strm.avail_in === 0 && left <= have)) {
-      len = left > have ? have : left;
-      last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&
-           len === left ? 1 : 0;
-      _tr_stored_block(s, s.block_start, len, last);
-      s.block_start += len;
-      flush_pending(s.strm);
-    }
-
-    /* We've done all we can with the available input and output. */
-    return last ? BS_FINISH_STARTED : BS_NEED_MORE;
-  };
-
-
-  /* ===========================================================================
-   * Compress as much as possible from the input stream, return the current
-   * block state.
-   * This function does not perform lazy evaluation of matches and inserts
-   * new strings in the dictionary only for unmatched strings or for short
-   * matches. It is used only for the fast compression options.
-   */
-  const deflate_fast = (s, flush) => {
-
-    let hash_head;        /* head of the hash chain */
-    let bflush;           /* set if current block must be flushed */
-
-    for (;;) {
-      /* Make sure that we always have enough lookahead, except
-       * at the end of the input file. We need MAX_MATCH bytes
-       * for the next match, plus MIN_MATCH bytes to insert the
-       * string following the next match.
-       */
-      if (s.lookahead < MIN_LOOKAHEAD) {
-        fill_window(s);
-        if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {
-          return BS_NEED_MORE;
-        }
-        if (s.lookahead === 0) {
-          break; /* flush the current block */
-        }
-      }
-
-      /* Insert the string window[strstart .. strstart+2] in the
-       * dictionary, and set hash_head to the head of the hash chain:
-       */
-      hash_head = 0/*NIL*/;
-      if (s.lookahead >= MIN_MATCH) {
-        /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
-        hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-        s.head[s.ins_h] = s.strstart;
-        /***/
-      }
-
-      /* Find the longest match, discarding those <= prev_length.
-       * At this point we have always match_length < MIN_MATCH
-       */
-      if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
-        /* To simplify the code, we prevent matches with the string
-         * of window index 0 (in particular we have to avoid a match
-         * of the string with itself at the start of the input file).
-         */
-        s.match_length = longest_match(s, hash_head);
-        /* longest_match() sets match_start */
-      }
-      if (s.match_length >= MIN_MATCH) {
-        // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
-
-        /*** _tr_tally_dist(s, s.strstart - s.match_start,
-                       s.match_length - MIN_MATCH, bflush); ***/
-        bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
-
-        s.lookahead -= s.match_length;
-
-        /* Insert new strings in the hash table only if the match length
-         * is not too large. This saves time but degrades compression.
-         */
-        if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
-          s.match_length--; /* string at strstart already in table */
-          do {
-            s.strstart++;
-            /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
-            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-            s.head[s.ins_h] = s.strstart;
-            /***/
-            /* strstart never exceeds WSIZE-MAX_MATCH, so there are
-             * always MIN_MATCH bytes ahead.
-             */
-          } while (--s.match_length !== 0);
-          s.strstart++;
-        } else
-        {
-          s.strstart += s.match_length;
-          s.match_length = 0;
-          s.ins_h = s.window[s.strstart];
-          /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
-          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);
-
-  //#if MIN_MATCH != 3
-  //                Call UPDATE_HASH() MIN_MATCH-3 more times
-  //#endif
-          /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
-           * matter since it will be recomputed at next deflate call.
-           */
-        }
-      } else {
-        /* No match, output a literal byte */
-        //Tracevv((stderr,"%c", s.window[s.strstart]));
-        /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-        bflush = _tr_tally(s, 0, s.window[s.strstart]);
-
-        s.lookahead--;
-        s.strstart++;
-      }
-      if (bflush) {
-        /*** FLUSH_BLOCK(s, 0); ***/
-        flush_block_only(s, false);
-        if (s.strm.avail_out === 0) {
-          return BS_NEED_MORE;
-        }
-        /***/
-      }
-    }
-    s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
-    if (flush === Z_FINISH$3) {
-      /*** FLUSH_BLOCK(s, 1); ***/
-      flush_block_only(s, true);
-      if (s.strm.avail_out === 0) {
-        return BS_FINISH_STARTED;
-      }
-      /***/
-      return BS_FINISH_DONE;
-    }
-    if (s.sym_next) {
-      /*** FLUSH_BLOCK(s, 0); ***/
-      flush_block_only(s, false);
-      if (s.strm.avail_out === 0) {
-        return BS_NEED_MORE;
-      }
-      /***/
-    }
-    return BS_BLOCK_DONE;
-  };
-
-  /* ===========================================================================
-   * Same as above, but achieves better compression. We use a lazy
-   * evaluation for matches: a match is finally adopted only if there is
-   * no better match at the next window position.
-   */
-  const deflate_slow = (s, flush) => {
-
-    let hash_head;          /* head of hash chain */
-    let bflush;              /* set if current block must be flushed */
-
-    let max_insert;
-
-    /* Process the input block. */
-    for (;;) {
-      /* Make sure that we always have enough lookahead, except
-       * at the end of the input file. We need MAX_MATCH bytes
-       * for the next match, plus MIN_MATCH bytes to insert the
-       * string following the next match.
-       */
-      if (s.lookahead < MIN_LOOKAHEAD) {
-        fill_window(s);
-        if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {
-          return BS_NEED_MORE;
-        }
-        if (s.lookahead === 0) { break; } /* flush the current block */
-      }
-
-      /* Insert the string window[strstart .. strstart+2] in the
-       * dictionary, and set hash_head to the head of the hash chain:
-       */
-      hash_head = 0/*NIL*/;
-      if (s.lookahead >= MIN_MATCH) {
-        /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
-        hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-        s.head[s.ins_h] = s.strstart;
-        /***/
-      }
-
-      /* Find the longest match, discarding those <= prev_length.
-       */
-      s.prev_length = s.match_length;
-      s.prev_match = s.match_start;
-      s.match_length = MIN_MATCH - 1;
-
-      if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
-          s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
-        /* To simplify the code, we prevent matches with the string
-         * of window index 0 (in particular we have to avoid a match
-         * of the string with itself at the start of the input file).
-         */
-        s.match_length = longest_match(s, hash_head);
-        /* longest_match() sets match_start */
-
-        if (s.match_length <= 5 &&
-           (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
-
-          /* If prev_match is also MIN_MATCH, match_start is garbage
-           * but we will ignore the current match anyway.
-           */
-          s.match_length = MIN_MATCH - 1;
-        }
-      }
-      /* If there was a match at the previous step and the current
-       * match is not better, output the previous match:
-       */
-      if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
-        max_insert = s.strstart + s.lookahead - MIN_MATCH;
-        /* Do not insert strings in hash table beyond this. */
-
-        //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
-
-        /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
-                       s.prev_length - MIN_MATCH, bflush);***/
-        bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
-        /* Insert in hash table all strings up to the end of the match.
-         * strstart-1 and strstart are already inserted. If there is not
-         * enough lookahead, the last two strings are not inserted in
-         * the hash table.
-         */
-        s.lookahead -= s.prev_length - 1;
-        s.prev_length -= 2;
-        do {
-          if (++s.strstart <= max_insert) {
-            /*** INSERT_STRING(s, s.strstart, hash_head); ***/
-            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
-            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
-            s.head[s.ins_h] = s.strstart;
-            /***/
-          }
-        } while (--s.prev_length !== 0);
-        s.match_available = 0;
-        s.match_length = MIN_MATCH - 1;
-        s.strstart++;
-
-        if (bflush) {
-          /*** FLUSH_BLOCK(s, 0); ***/
-          flush_block_only(s, false);
-          if (s.strm.avail_out === 0) {
-            return BS_NEED_MORE;
-          }
-          /***/
-        }
-
-      } else if (s.match_available) {
-        /* If there was no match at the previous position, output a
-         * single literal. If there was a match but the current match
-         * is longer, truncate the previous match to a single literal.
-         */
-        //Tracevv((stderr,"%c", s->window[s->strstart-1]));
-        /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
-        bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
-
-        if (bflush) {
-          /*** FLUSH_BLOCK_ONLY(s, 0) ***/
-          flush_block_only(s, false);
-          /***/
-        }
-        s.strstart++;
-        s.lookahead--;
-        if (s.strm.avail_out === 0) {
-          return BS_NEED_MORE;
-        }
-      } else {
-        /* There is no previous match to compare with, wait for
-         * the next step to decide.
-         */
-        s.match_available = 1;
-        s.strstart++;
-        s.lookahead--;
-      }
-    }
-    //Assert (flush != Z_NO_FLUSH, "no flush?");
-    if (s.match_available) {
-      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
-      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
-      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
-
-      s.match_available = 0;
-    }
-    s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
-    if (flush === Z_FINISH$3) {
-      /*** FLUSH_BLOCK(s, 1); ***/
-      flush_block_only(s, true);
-      if (s.strm.avail_out === 0) {
-        return BS_FINISH_STARTED;
-      }
-      /***/
-      return BS_FINISH_DONE;
-    }
-    if (s.sym_next) {
-      /*** FLUSH_BLOCK(s, 0); ***/
-      flush_block_only(s, false);
-      if (s.strm.avail_out === 0) {
-        return BS_NEED_MORE;
-      }
-      /***/
-    }
-
-    return BS_BLOCK_DONE;
-  };
-
-
-  /* ===========================================================================
-   * For Z_RLE, simply look for runs of bytes, generate matches only of distance
-   * one.  Do not maintain a hash table.  (It will be regenerated if this run of
-   * deflate switches away from Z_RLE.)
-   */
-  const deflate_rle = (s, flush) => {
-
-    let bflush;            /* set if current block must be flushed */
-    let prev;              /* byte at distance one to match */
-    let scan, strend;      /* scan goes up to strend for length of run */
-
-    const _win = s.window;
-
-    for (;;) {
-      /* Make sure that we always have enough lookahead, except
-       * at the end of the input file. We need MAX_MATCH bytes
-       * for the longest run, plus one for the unrolled loop.
-       */
-      if (s.lookahead <= MAX_MATCH) {
-        fill_window(s);
-        if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {
-          return BS_NEED_MORE;
-        }
-        if (s.lookahead === 0) { break; } /* flush the current block */
-      }
-
-      /* See how many times the previous byte repeats */
-      s.match_length = 0;
-      if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
-        scan = s.strstart - 1;
-        prev = _win[scan];
-        if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
-          strend = s.strstart + MAX_MATCH;
-          do {
-            /*jshint noempty:false*/
-          } while (prev === _win[++scan] && prev === _win[++scan] &&
-                   prev === _win[++scan] && prev === _win[++scan] &&
-                   prev === _win[++scan] && prev === _win[++scan] &&
-                   prev === _win[++scan] && prev === _win[++scan] &&
-                   scan < strend);
-          s.match_length = MAX_MATCH - (strend - scan);
-          if (s.match_length > s.lookahead) {
-            s.match_length = s.lookahead;
-          }
-        }
-        //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
-      }
-
-      /* Emit match if have run of MIN_MATCH or longer, else emit literal */
-      if (s.match_length >= MIN_MATCH) {
-        //check_match(s, s.strstart, s.strstart - 1, s.match_length);
-
-        /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
-        bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);
-
-        s.lookahead -= s.match_length;
-        s.strstart += s.match_length;
-        s.match_length = 0;
-      } else {
-        /* No match, output a literal byte */
-        //Tracevv((stderr,"%c", s->window[s->strstart]));
-        /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-        bflush = _tr_tally(s, 0, s.window[s.strstart]);
-
-        s.lookahead--;
-        s.strstart++;
-      }
-      if (bflush) {
-        /*** FLUSH_BLOCK(s, 0); ***/
-        flush_block_only(s, false);
-        if (s.strm.avail_out === 0) {
-          return BS_NEED_MORE;
-        }
-        /***/
-      }
-    }
-    s.insert = 0;
-    if (flush === Z_FINISH$3) {
-      /*** FLUSH_BLOCK(s, 1); ***/
-      flush_block_only(s, true);
-      if (s.strm.avail_out === 0) {
-        return BS_FINISH_STARTED;
-      }
-      /***/
-      return BS_FINISH_DONE;
-    }
-    if (s.sym_next) {
-      /*** FLUSH_BLOCK(s, 0); ***/
-      flush_block_only(s, false);
-      if (s.strm.avail_out === 0) {
-        return BS_NEED_MORE;
-      }
-      /***/
-    }
-    return BS_BLOCK_DONE;
-  };
-
-  /* ===========================================================================
-   * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
-   * (It will be regenerated if this run of deflate switches away from Huffman.)
-   */
-  const deflate_huff = (s, flush) => {
-
-    let bflush;             /* set if current block must be flushed */
-
-    for (;;) {
-      /* Make sure that we have a literal to write. */
-      if (s.lookahead === 0) {
-        fill_window(s);
-        if (s.lookahead === 0) {
-          if (flush === Z_NO_FLUSH$2) {
-            return BS_NEED_MORE;
-          }
-          break;      /* flush the current block */
-        }
-      }
-
-      /* Output a literal byte */
-      s.match_length = 0;
-      //Tracevv((stderr,"%c", s->window[s->strstart]));
-      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
-      bflush = _tr_tally(s, 0, s.window[s.strstart]);
-      s.lookahead--;
-      s.strstart++;
-      if (bflush) {
-        /*** FLUSH_BLOCK(s, 0); ***/
-        flush_block_only(s, false);
-        if (s.strm.avail_out === 0) {
-          return BS_NEED_MORE;
-        }
-        /***/
-      }
-    }
-    s.insert = 0;
-    if (flush === Z_FINISH$3) {
-      /*** FLUSH_BLOCK(s, 1); ***/
-      flush_block_only(s, true);
-      if (s.strm.avail_out === 0) {
-        return BS_FINISH_STARTED;
-      }
-      /***/
-      return BS_FINISH_DONE;
-    }
-    if (s.sym_next) {
-      /*** FLUSH_BLOCK(s, 0); ***/
-      flush_block_only(s, false);
-      if (s.strm.avail_out === 0) {
-        return BS_NEED_MORE;
-      }
-      /***/
-    }
-    return BS_BLOCK_DONE;
-  };
-
-  /* Values for max_lazy_match, good_match and max_chain_length, depending on
-   * the desired pack level (0..9). The values given below have been tuned to
-   * exclude worst case performance for pathological files. Better values may be
-   * found for specific files.
-   */
-  function Config(good_length, max_lazy, nice_length, max_chain, func) {
-
-    this.good_length = good_length;
-    this.max_lazy = max_lazy;
-    this.nice_length = nice_length;
-    this.max_chain = max_chain;
-    this.func = func;
-  }
-
-  const configuration_table = [
-    /*      good lazy nice chain */
-    new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
-    new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
-    new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
-    new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
-
-    new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
-    new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
-    new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
-    new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
-    new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
-    new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
-  ];
-
-
-  /* ===========================================================================
-   * Initialize the "longest match" routines for a new zlib stream
-   */
-  const lm_init = (s) => {
-
-    s.window_size = 2 * s.w_size;
-
-    /*** CLEAR_HASH(s); ***/
-    zero(s.head); // Fill with NIL (= 0);
-
-    /* Set the default configuration parameters:
-     */
-    s.max_lazy_match = configuration_table[s.level].max_lazy;
-    s.good_match = configuration_table[s.level].good_length;
-    s.nice_match = configuration_table[s.level].nice_length;
-    s.max_chain_length = configuration_table[s.level].max_chain;
-
-    s.strstart = 0;
-    s.block_start = 0;
-    s.lookahead = 0;
-    s.insert = 0;
-    s.match_length = s.prev_length = MIN_MATCH - 1;
-    s.match_available = 0;
-    s.ins_h = 0;
-  };
-
-
-  function DeflateState() {
-    this.strm = null;            /* pointer back to this zlib stream */
-    this.status = 0;            /* as the name implies */
-    this.pending_buf = null;      /* output still pending */
-    this.pending_buf_size = 0;  /* size of pending_buf */
-    this.pending_out = 0;       /* next pending byte to output to the stream */
-    this.pending = 0;           /* nb of bytes in the pending buffer */
-    this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
-    this.gzhead = null;         /* gzip header information to write */
-    this.gzindex = 0;           /* where in extra, name, or comment */
-    this.method = Z_DEFLATED$2; /* can only be DEFLATED */
-    this.last_flush = -1;   /* value of flush param for previous deflate call */
-
-    this.w_size = 0;  /* LZ77 window size (32K by default) */
-    this.w_bits = 0;  /* log2(w_size)  (8..16) */
-    this.w_mask = 0;  /* w_size - 1 */
-
-    this.window = null;
-    /* Sliding window. Input bytes are read into the second half of the window,
-     * and move to the first half later to keep a dictionary of at least wSize
-     * bytes. With this organization, matches are limited to a distance of
-     * wSize-MAX_MATCH bytes, but this ensures that IO is always
-     * performed with a length multiple of the block size.
-     */
-
-    this.window_size = 0;
-    /* Actual size of window: 2*wSize, except when the user input buffer
-     * is directly used as sliding window.
-     */
-
-    this.prev = null;
-    /* Link to older string with same hash index. To limit the size of this
-     * array to 64K, this link is maintained only for the last 32K strings.
-     * An index in this array is thus a window index modulo 32K.
-     */
-
-    this.head = null;   /* Heads of the hash chains or NIL. */
-
-    this.ins_h = 0;       /* hash index of string to be inserted */
-    this.hash_size = 0;   /* number of elements in hash table */
-    this.hash_bits = 0;   /* log2(hash_size) */
-    this.hash_mask = 0;   /* hash_size-1 */
-
-    this.hash_shift = 0;
-    /* Number of bits by which ins_h must be shifted at each input
-     * step. It must be such that after MIN_MATCH steps, the oldest
-     * byte no longer takes part in the hash key, that is:
-     *   hash_shift * MIN_MATCH >= hash_bits
-     */
-
-    this.block_start = 0;
-    /* Window position at the beginning of the current output block. Gets
-     * negative when the window is moved backwards.
-     */
-
-    this.match_length = 0;      /* length of best match */
-    this.prev_match = 0;        /* previous match */
-    this.match_available = 0;   /* set if previous match exists */
-    this.strstart = 0;          /* start of string to insert */
-    this.match_start = 0;       /* start of matching string */
-    this.lookahead = 0;         /* number of valid bytes ahead in window */
-
-    this.prev_length = 0;
-    /* Length of the best match at previous step. Matches not greater than this
-     * are discarded. This is used in the lazy match evaluation.
-     */
-
-    this.max_chain_length = 0;
-    /* To speed up deflation, hash chains are never searched beyond this
-     * length.  A higher limit improves compression ratio but degrades the
-     * speed.
-     */
-
-    this.max_lazy_match = 0;
-    /* Attempt to find a better match only when the current match is strictly
-     * smaller than this value. This mechanism is used only for compression
-     * levels >= 4.
-     */
-    // That's alias to max_lazy_match, don't use directly
-    //this.max_insert_length = 0;
-    /* Insert new strings in the hash table only if the match length is not
-     * greater than this length. This saves time but degrades compression.
-     * max_insert_length is used only for compression levels <= 3.
-     */
-
-    this.level = 0;     /* compression level (1..9) */
-    this.strategy = 0;  /* favor or force Huffman coding*/
-
-    this.good_match = 0;
-    /* Use a faster search when the previous match is longer than this */
-
-    this.nice_match = 0; /* Stop searching when current match exceeds this */
-
-                /* used by trees.c: */
-
-    /* Didn't use ct_data typedef below to suppress compiler warning */
-
-    // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
-    // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-    // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
-
-    // Use flat array of DOUBLE size, with interleaved fata,
-    // because JS does not support effective
-    this.dyn_ltree  = new Uint16Array(HEAP_SIZE * 2);
-    this.dyn_dtree  = new Uint16Array((2 * D_CODES + 1) * 2);
-    this.bl_tree    = new Uint16Array((2 * BL_CODES + 1) * 2);
-    zero(this.dyn_ltree);
-    zero(this.dyn_dtree);
-    zero(this.bl_tree);
-
-    this.l_desc   = null;         /* desc. for literal tree */
-    this.d_desc   = null;         /* desc. for distance tree */
-    this.bl_desc  = null;         /* desc. for bit length tree */
-
-    //ush bl_count[MAX_BITS+1];
-    this.bl_count = new Uint16Array(MAX_BITS + 1);
-    /* number of codes at each bit length for an optimal tree */
-
-    //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
-    this.heap = new Uint16Array(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
-    zero(this.heap);
-
-    this.heap_len = 0;               /* number of elements in the heap */
-    this.heap_max = 0;               /* element of largest frequency */
-    /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
-     * The same heap array is used to build all trees.
-     */
-
-    this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
-    zero(this.depth);
-    /* Depth of each subtree used as tie breaker for trees of equal frequency
-     */
-
-    this.sym_buf = 0;        /* buffer for distances and literals/lengths */
-
-    this.lit_bufsize = 0;
-    /* Size of match buffer for literals/lengths.  There are 4 reasons for
-     * limiting lit_bufsize to 64K:
-     *   - frequencies can be kept in 16 bit counters
-     *   - if compression is not successful for the first block, all input
-     *     data is still in the window so we can still emit a stored block even
-     *     when input comes from standard input.  (This can also be done for
-     *     all blocks if lit_bufsize is not greater than 32K.)
-     *   - if compression is not successful for a file smaller than 64K, we can
-     *     even emit a stored file instead of a stored block (saving 5 bytes).
-     *     This is applicable only for zip (not gzip or zlib).
-     *   - creating new Huffman trees less frequently may not provide fast
-     *     adaptation to changes in the input data statistics. (Take for
-     *     example a binary file with poorly compressible code followed by
-     *     a highly compressible string table.) Smaller buffer sizes give
-     *     fast adaptation but have of course the overhead of transmitting
-     *     trees more frequently.
-     *   - I can't count above 4
-     */
-
-    this.sym_next = 0;      /* running index in sym_buf */
-    this.sym_end = 0;       /* symbol table full when sym_next reaches this */
-
-    this.opt_len = 0;       /* bit length of current block with optimal trees */
-    this.static_len = 0;    /* bit length of current block with static trees */
-    this.matches = 0;       /* number of string matches in current block */
-    this.insert = 0;        /* bytes at end of window left to insert */
-
-
-    this.bi_buf = 0;
-    /* Output buffer. bits are inserted starting at the bottom (least
-     * significant bits).
-     */
-    this.bi_valid = 0;
-    /* Number of valid bits in bi_buf.  All bits above the last valid bit
-     * are always zero.
-     */
-
-    // Used for window memory init. We safely ignore it for JS. That makes
-    // sense only for pointers and memory check tools.
-    //this.high_water = 0;
-    /* High water mark offset in window for initialized bytes -- bytes above
-     * this are set to zero in order to avoid memory check warnings when
-     * longest match routines access bytes past the input.  This is then
-     * updated to the new high water mark.
-     */
-  }
-
-
-  /* =========================================================================
-   * Check for a valid deflate stream state. Return 0 if ok, 1 if not.
-   */
-  const deflateStateCheck = (strm) => {
-
-    if (!strm) {
-      return 1;
-    }
-    const s = strm.state;
-    if (!s || s.strm !== strm || (s.status !== INIT_STATE &&
-  //#ifdef GZIP
-                                  s.status !== GZIP_STATE &&
-  //#endif
-                                  s.status !== EXTRA_STATE &&
-                                  s.status !== NAME_STATE &&
-                                  s.status !== COMMENT_STATE &&
-                                  s.status !== HCRC_STATE &&
-                                  s.status !== BUSY_STATE &&
-                                  s.status !== FINISH_STATE)) {
-      return 1;
-    }
-    return 0;
-  };
-
-
-  const deflateResetKeep = (strm) => {
-
-    if (deflateStateCheck(strm)) {
-      return err(strm, Z_STREAM_ERROR$2);
-    }
-
-    strm.total_in = strm.total_out = 0;
-    strm.data_type = Z_UNKNOWN;
-
-    const s = strm.state;
-    s.pending = 0;
-    s.pending_out = 0;
-
-    if (s.wrap < 0) {
-      s.wrap = -s.wrap;
-      /* was made negative by deflate(..., Z_FINISH); */
-    }
-    s.status =
-  //#ifdef GZIP
-      s.wrap === 2 ? GZIP_STATE :
-  //#endif
-      s.wrap ? INIT_STATE : BUSY_STATE;
-    strm.adler = (s.wrap === 2) ?
-      0  // crc32(0, Z_NULL, 0)
-    :
-      1; // adler32(0, Z_NULL, 0)
-    s.last_flush = -2;
-    _tr_init(s);
-    return Z_OK$3;
-  };
-
-
-  const deflateReset = (strm) => {
-
-    const ret = deflateResetKeep(strm);
-    if (ret === Z_OK$3) {
-      lm_init(strm.state);
-    }
-    return ret;
-  };
-
-
-  const deflateSetHeader = (strm, head) => {
-
-    if (deflateStateCheck(strm) || strm.state.wrap !== 2) {
-      return Z_STREAM_ERROR$2;
-    }
-    strm.state.gzhead = head;
-    return Z_OK$3;
-  };
-
-
-  const deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {
-
-    if (!strm) { // === Z_NULL
-      return Z_STREAM_ERROR$2;
-    }
-    let wrap = 1;
-
-    if (level === Z_DEFAULT_COMPRESSION$1) {
-      level = 6;
-    }
-
-    if (windowBits < 0) { /* suppress zlib wrapper */
-      wrap = 0;
-      windowBits = -windowBits;
-    }
-
-    else if (windowBits > 15) {
-      wrap = 2;           /* write gzip wrapper instead */
-      windowBits -= 16;
-    }
-
-
-    if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||
-      windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
-      strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {
-      return err(strm, Z_STREAM_ERROR$2);
-    }
-
-
-    if (windowBits === 8) {
-      windowBits = 9;
-    }
-    /* until 256-byte window bug fixed */
-
-    const s = new DeflateState();
-
-    strm.state = s;
-    s.strm = strm;
-    s.status = INIT_STATE;     /* to pass state test in deflateReset() */
-
-    s.wrap = wrap;
-    s.gzhead = null;
-    s.w_bits = windowBits;
-    s.w_size = 1 << s.w_bits;
-    s.w_mask = s.w_size - 1;
-
-    s.hash_bits = memLevel + 7;
-    s.hash_size = 1 << s.hash_bits;
-    s.hash_mask = s.hash_size - 1;
-    s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
-
-    s.window = new Uint8Array(s.w_size * 2);
-    s.head = new Uint16Array(s.hash_size);
-    s.prev = new Uint16Array(s.w_size);
-
-    // Don't need mem init magic for JS.
-    //s.high_water = 0;  /* nothing written to s->window yet */
-
-    s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-
-    /* We overlay pending_buf and sym_buf. This works since the average size
-     * for length/distance pairs over any compressed block is assured to be 31
-     * bits or less.
-     *
-     * Analysis: The longest fixed codes are a length code of 8 bits plus 5
-     * extra bits, for lengths 131 to 257. The longest fixed distance codes are
-     * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
-     * possible fixed-codes length/distance pair is then 31 bits total.
-     *
-     * sym_buf starts one-fourth of the way into pending_buf. So there are
-     * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
-     * in sym_buf is three bytes -- two for the distance and one for the
-     * literal/length. As each symbol is consumed, the pointer to the next
-     * sym_buf value to read moves forward three bytes. From that symbol, up to
-     * 31 bits are written to pending_buf. The closest the written pending_buf
-     * bits gets to the next sym_buf symbol to read is just before the last
-     * code is written. At that time, 31*(n-2) bits have been written, just
-     * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
-     * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
-     * symbols are written.) The closest the writing gets to what is unread is
-     * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
-     * can range from 128 to 32768.
-     *
-     * Therefore, at a minimum, there are 142 bits of space between what is
-     * written and what is read in the overlain buffers, so the symbols cannot
-     * be overwritten by the compressed data. That space is actually 139 bits,
-     * due to the three-bit fixed-code block header.
-     *
-     * That covers the case where either Z_FIXED is specified, forcing fixed
-     * codes, or when the use of fixed codes is chosen, because that choice
-     * results in a smaller compressed block than dynamic codes. That latter
-     * condition then assures that the above analysis also covers all dynamic
-     * blocks. A dynamic-code block will only be chosen to be emitted if it has
-     * fewer bits than a fixed-code block would for the same set of symbols.
-     * Therefore its average symbol length is assured to be less than 31. So
-     * the compressed data for a dynamic block also cannot overwrite the
-     * symbols from which it is being constructed.
-     */
-
-    s.pending_buf_size = s.lit_bufsize * 4;
-    s.pending_buf = new Uint8Array(s.pending_buf_size);
-
-    // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
-    //s->sym_buf = s->pending_buf + s->lit_bufsize;
-    s.sym_buf = s.lit_bufsize;
-
-    //s->sym_end = (s->lit_bufsize - 1) * 3;
-    s.sym_end = (s.lit_bufsize - 1) * 3;
-    /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
-     * on 16 bit machines and because stored blocks are restricted to
-     * 64K-1 bytes.
-     */
-
-    s.level = level;
-    s.strategy = strategy;
-    s.method = method;
-
-    return deflateReset(strm);
-  };
-
-  const deflateInit = (strm, level) => {
-
-    return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);
-  };
-
-
-  /* ========================================================================= */
-  const deflate$2 = (strm, flush) => {
-
-    if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {
-      return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;
-    }
-
-    const s = strm.state;
-
-    if (!strm.output ||
-        (strm.avail_in !== 0 && !strm.input) ||
-        (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {
-      return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);
-    }
-
-    const old_flush = s.last_flush;
-    s.last_flush = flush;
-
-    /* Flush as much pending output as possible */
-    if (s.pending !== 0) {
-      flush_pending(strm);
-      if (strm.avail_out === 0) {
-        /* Since avail_out is 0, deflate will be called again with
-         * more output space, but possibly with both pending and
-         * avail_in equal to zero. There won't be anything to do,
-         * but this is not an error situation so make sure we
-         * return OK instead of BUF_ERROR at next call of deflate:
-         */
-        s.last_flush = -1;
-        return Z_OK$3;
-      }
-
-      /* Make sure there is something to do and avoid duplicate consecutive
-       * flushes. For repeated and useless calls with Z_FINISH, we keep
-       * returning Z_STREAM_END instead of Z_BUF_ERROR.
-       */
-    } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
-      flush !== Z_FINISH$3) {
-      return err(strm, Z_BUF_ERROR$1);
-    }
-
-    /* User must not provide more input after the first FINISH: */
-    if (s.status === FINISH_STATE && strm.avail_in !== 0) {
-      return err(strm, Z_BUF_ERROR$1);
-    }
-
-    /* Write the header */
-    if (s.status === INIT_STATE && s.wrap === 0) {
-      s.status = BUSY_STATE;
-    }
-    if (s.status === INIT_STATE) {
-      /* zlib header */
-      let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;
-      let level_flags = -1;
-
-      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
-        level_flags = 0;
-      } else if (s.level < 6) {
-        level_flags = 1;
-      } else if (s.level === 6) {
-        level_flags = 2;
-      } else {
-        level_flags = 3;
-      }
-      header |= (level_flags << 6);
-      if (s.strstart !== 0) { header |= PRESET_DICT; }
-      header += 31 - (header % 31);
-
-      putShortMSB(s, header);
-
-      /* Save the adler32 of the preset dictionary: */
-      if (s.strstart !== 0) {
-        putShortMSB(s, strm.adler >>> 16);
-        putShortMSB(s, strm.adler & 0xffff);
-      }
-      strm.adler = 1; // adler32(0L, Z_NULL, 0);
-      s.status = BUSY_STATE;
-
-      /* Compression must start with an empty pending buffer */
-      flush_pending(strm);
-      if (s.pending !== 0) {
-        s.last_flush = -1;
-        return Z_OK$3;
-      }
-    }
-  //#ifdef GZIP
-    if (s.status === GZIP_STATE) {
-      /* gzip header */
-      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
-      put_byte(s, 31);
-      put_byte(s, 139);
-      put_byte(s, 8);
-      if (!s.gzhead) { // s->gzhead == Z_NULL
-        put_byte(s, 0);
-        put_byte(s, 0);
-        put_byte(s, 0);
-        put_byte(s, 0);
-        put_byte(s, 0);
-        put_byte(s, s.level === 9 ? 2 :
-                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
-                     4 : 0));
-        put_byte(s, OS_CODE);
-        s.status = BUSY_STATE;
-
-        /* Compression must start with an empty pending buffer */
-        flush_pending(strm);
-        if (s.pending !== 0) {
-          s.last_flush = -1;
-          return Z_OK$3;
-        }
-      }
-      else {
-        put_byte(s, (s.gzhead.text ? 1 : 0) +
-                    (s.gzhead.hcrc ? 2 : 0) +
-                    (!s.gzhead.extra ? 0 : 4) +
-                    (!s.gzhead.name ? 0 : 8) +
-                    (!s.gzhead.comment ? 0 : 16)
-        );
-        put_byte(s, s.gzhead.time & 0xff);
-        put_byte(s, (s.gzhead.time >> 8) & 0xff);
-        put_byte(s, (s.gzhead.time >> 16) & 0xff);
-        put_byte(s, (s.gzhead.time >> 24) & 0xff);
-        put_byte(s, s.level === 9 ? 2 :
-                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
-                     4 : 0));
-        put_byte(s, s.gzhead.os & 0xff);
-        if (s.gzhead.extra && s.gzhead.extra.length) {
-          put_byte(s, s.gzhead.extra.length & 0xff);
-          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
-        }
-        if (s.gzhead.hcrc) {
-          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);
-        }
-        s.gzindex = 0;
-        s.status = EXTRA_STATE;
-      }
-    }
-    if (s.status === EXTRA_STATE) {
-      if (s.gzhead.extra/* != Z_NULL*/) {
-        let beg = s.pending;   /* start of bytes to update crc */
-        let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;
-        while (s.pending + left > s.pending_buf_size) {
-          let copy = s.pending_buf_size - s.pending;
-          // zmemcpy(s.pending_buf + s.pending,
-          //    s.gzhead.extra + s.gzindex, copy);
-          s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);
-          s.pending = s.pending_buf_size;
-          //--- HCRC_UPDATE(beg) ---//
-          if (s.gzhead.hcrc && s.pending > beg) {
-            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-          }
-          //---//
-          s.gzindex += copy;
-          flush_pending(strm);
-          if (s.pending !== 0) {
-            s.last_flush = -1;
-            return Z_OK$3;
-          }
-          beg = 0;
-          left -= copy;
-        }
-        // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility
-        //              TypedArray.slice and TypedArray.from don't exist in IE10-IE11
-        let gzhead_extra = new Uint8Array(s.gzhead.extra);
-        // zmemcpy(s->pending_buf + s->pending,
-        //     s->gzhead->extra + s->gzindex, left);
-        s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);
-        s.pending += left;
-        //--- HCRC_UPDATE(beg) ---//
-        if (s.gzhead.hcrc && s.pending > beg) {
-          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-        }
-        //---//
-        s.gzindex = 0;
-      }
-      s.status = NAME_STATE;
-    }
-    if (s.status === NAME_STATE) {
-      if (s.gzhead.name/* != Z_NULL*/) {
-        let beg = s.pending;   /* start of bytes to update crc */
-        let val;
-        do {
-          if (s.pending === s.pending_buf_size) {
-            //--- HCRC_UPDATE(beg) ---//
-            if (s.gzhead.hcrc && s.pending > beg) {
-              strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-            }
-            //---//
-            flush_pending(strm);
-            if (s.pending !== 0) {
-              s.last_flush = -1;
-              return Z_OK$3;
-            }
-            beg = 0;
-          }
-          // JS specific: little magic to add zero terminator to end of string
-          if (s.gzindex < s.gzhead.name.length) {
-            val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
-          } else {
-            val = 0;
-          }
-          put_byte(s, val);
-        } while (val !== 0);
-        //--- HCRC_UPDATE(beg) ---//
-        if (s.gzhead.hcrc && s.pending > beg) {
-          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-        }
-        //---//
-        s.gzindex = 0;
-      }
-      s.status = COMMENT_STATE;
-    }
-    if (s.status === COMMENT_STATE) {
-      if (s.gzhead.comment/* != Z_NULL*/) {
-        let beg = s.pending;   /* start of bytes to update crc */
-        let val;
-        do {
-          if (s.pending === s.pending_buf_size) {
-            //--- HCRC_UPDATE(beg) ---//
-            if (s.gzhead.hcrc && s.pending > beg) {
-              strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-            }
-            //---//
-            flush_pending(strm);
-            if (s.pending !== 0) {
-              s.last_flush = -1;
-              return Z_OK$3;
-            }
-            beg = 0;
-          }
-          // JS specific: little magic to add zero terminator to end of string
-          if (s.gzindex < s.gzhead.comment.length) {
-            val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
-          } else {
-            val = 0;
-          }
-          put_byte(s, val);
-        } while (val !== 0);
-        //--- HCRC_UPDATE(beg) ---//
-        if (s.gzhead.hcrc && s.pending > beg) {
-          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
-        }
-        //---//
-      }
-      s.status = HCRC_STATE;
-    }
-    if (s.status === HCRC_STATE) {
-      if (s.gzhead.hcrc) {
-        if (s.pending + 2 > s.pending_buf_size) {
-          flush_pending(strm);
-          if (s.pending !== 0) {
-            s.last_flush = -1;
-            return Z_OK$3;
-          }
-        }
-        put_byte(s, strm.adler & 0xff);
-        put_byte(s, (strm.adler >> 8) & 0xff);
-        strm.adler = 0; //crc32(0L, Z_NULL, 0);
-      }
-      s.status = BUSY_STATE;
-
-      /* Compression must start with an empty pending buffer */
-      flush_pending(strm);
-      if (s.pending !== 0) {
-        s.last_flush = -1;
-        return Z_OK$3;
-      }
-    }
-  //#endif
-
-    /* Start a new block or continue the current one.
-     */
-    if (strm.avail_in !== 0 || s.lookahead !== 0 ||
-      (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {
-      let bstate = s.level === 0 ? deflate_stored(s, flush) :
-                   s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
-                   s.strategy === Z_RLE ? deflate_rle(s, flush) :
-                   configuration_table[s.level].func(s, flush);
-
-      if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
-        s.status = FINISH_STATE;
-      }
-      if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
-        if (strm.avail_out === 0) {
-          s.last_flush = -1;
-          /* avoid BUF_ERROR next call, see above */
-        }
-        return Z_OK$3;
-        /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
-         * of deflate should use the same flush parameter to make sure
-         * that the flush is complete. So we don't have to output an
-         * empty block here, this will be done at next call. This also
-         * ensures that for a very small output buffer, we emit at most
-         * one empty block.
-         */
-      }
-      if (bstate === BS_BLOCK_DONE) {
-        if (flush === Z_PARTIAL_FLUSH) {
-          _tr_align(s);
-        }
-        else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */
-
-          _tr_stored_block(s, 0, 0, false);
-          /* For a full flush, this empty block will be recognized
-           * as a special marker by inflate_sync().
-           */
-          if (flush === Z_FULL_FLUSH$1) {
-            /*** CLEAR_HASH(s); ***/             /* forget history */
-            zero(s.head); // Fill with NIL (= 0);
-
-            if (s.lookahead === 0) {
-              s.strstart = 0;
-              s.block_start = 0;
-              s.insert = 0;
-            }
-          }
-        }
-        flush_pending(strm);
-        if (strm.avail_out === 0) {
-          s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
-          return Z_OK$3;
-        }
-      }
-    }
-
-    if (flush !== Z_FINISH$3) { return Z_OK$3; }
-    if (s.wrap <= 0) { return Z_STREAM_END$3; }
-
-    /* Write the trailer */
-    if (s.wrap === 2) {
-      put_byte(s, strm.adler & 0xff);
-      put_byte(s, (strm.adler >> 8) & 0xff);
-      put_byte(s, (strm.adler >> 16) & 0xff);
-      put_byte(s, (strm.adler >> 24) & 0xff);
-      put_byte(s, strm.total_in & 0xff);
-      put_byte(s, (strm.total_in >> 8) & 0xff);
-      put_byte(s, (strm.total_in >> 16) & 0xff);
-      put_byte(s, (strm.total_in >> 24) & 0xff);
-    }
-    else
-    {
-      putShortMSB(s, strm.adler >>> 16);
-      putShortMSB(s, strm.adler & 0xffff);
-    }
-
-    flush_pending(strm);
-    /* If avail_out is zero, the application will call deflate again
-     * to flush the rest.
-     */
-    if (s.wrap > 0) { s.wrap = -s.wrap; }
-    /* write the trailer only once! */
-    return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;
-  };
-
-
-  const deflateEnd = (strm) => {
-
-    if (deflateStateCheck(strm)) {
-      return Z_STREAM_ERROR$2;
-    }
-
-    const status = strm.state.status;
-
-    strm.state = null;
-
-    return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;
-  };
-
-
-  /* =========================================================================
-   * Initializes the compression dictionary from the given byte
-   * sequence without producing any compressed output.
-   */
-  const deflateSetDictionary = (strm, dictionary) => {
-
-    let dictLength = dictionary.length;
-
-    if (deflateStateCheck(strm)) {
-      return Z_STREAM_ERROR$2;
-    }
-
-    const s = strm.state;
-    const wrap = s.wrap;
-
-    if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
-      return Z_STREAM_ERROR$2;
-    }
-
-    /* when using zlib wrappers, compute Adler-32 for provided dictionary */
-    if (wrap === 1) {
-      /* adler32(strm->adler, dictionary, dictLength); */
-      strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);
-    }
-
-    s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
-
-    /* if dictionary would fill window, just replace the history */
-    if (dictLength >= s.w_size) {
-      if (wrap === 0) {            /* already empty otherwise */
-        /*** CLEAR_HASH(s); ***/
-        zero(s.head); // Fill with NIL (= 0);
-        s.strstart = 0;
-        s.block_start = 0;
-        s.insert = 0;
-      }
-      /* use the tail */
-      // dictionary = dictionary.slice(dictLength - s.w_size);
-      let tmpDict = new Uint8Array(s.w_size);
-      tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);
-      dictionary = tmpDict;
-      dictLength = s.w_size;
-    }
-    /* insert dictionary into window and hash */
-    const avail = strm.avail_in;
-    const next = strm.next_in;
-    const input = strm.input;
-    strm.avail_in = dictLength;
-    strm.next_in = 0;
-    strm.input = dictionary;
-    fill_window(s);
-    while (s.lookahead >= MIN_MATCH) {
-      let str = s.strstart;
-      let n = s.lookahead - (MIN_MATCH - 1);
-      do {
-        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
-        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);
-
-        s.prev[str & s.w_mask] = s.head[s.ins_h];
-
-        s.head[s.ins_h] = str;
-        str++;
-      } while (--n);
-      s.strstart = str;
-      s.lookahead = MIN_MATCH - 1;
-      fill_window(s);
-    }
-    s.strstart += s.lookahead;
-    s.block_start = s.strstart;
-    s.insert = s.lookahead;
-    s.lookahead = 0;
-    s.match_length = s.prev_length = MIN_MATCH - 1;
-    s.match_available = 0;
-    strm.next_in = next;
-    strm.input = input;
-    strm.avail_in = avail;
-    s.wrap = wrap;
-    return Z_OK$3;
-  };
-
-
-  var deflateInit_1 = deflateInit;
-  var deflateInit2_1 = deflateInit2;
-  var deflateReset_1 = deflateReset;
-  var deflateResetKeep_1 = deflateResetKeep;
-  var deflateSetHeader_1 = deflateSetHeader;
-  var deflate_2$1 = deflate$2;
-  var deflateEnd_1 = deflateEnd;
-  var deflateSetDictionary_1 = deflateSetDictionary;
-  var deflateInfo = 'pako deflate (from Nodeca project)';
-
-  /* Not implemented
-  module.exports.deflateBound = deflateBound;
-  module.exports.deflateCopy = deflateCopy;
-  module.exports.deflateGetDictionary = deflateGetDictionary;
-  module.exports.deflateParams = deflateParams;
-  module.exports.deflatePending = deflatePending;
-  module.exports.deflatePrime = deflatePrime;
-  module.exports.deflateTune = deflateTune;
-  */
-
-  var deflate_1$2 = {
-  	deflateInit: deflateInit_1,
-  	deflateInit2: deflateInit2_1,
-  	deflateReset: deflateReset_1,
-  	deflateResetKeep: deflateResetKeep_1,
-  	deflateSetHeader: deflateSetHeader_1,
-  	deflate: deflate_2$1,
-  	deflateEnd: deflateEnd_1,
-  	deflateSetDictionary: deflateSetDictionary_1,
-  	deflateInfo: deflateInfo
-  };
-
-  const _has = (obj, key) => {
-    return Object.prototype.hasOwnProperty.call(obj, key);
-  };
-
-  var assign = function (obj /*from1, from2, from3, ...*/) {
-    const sources = Array.prototype.slice.call(arguments, 1);
-    while (sources.length) {
-      const source = sources.shift();
-      if (!source) { continue; }
-
-      if (typeof source !== 'object') {
-        throw new TypeError(source + 'must be non-object');
-      }
-
-      for (const p in source) {
-        if (_has(source, p)) {
-          obj[p] = source[p];
-        }
-      }
-    }
-
-    return obj;
-  };
-
-
-  // Join array of chunks to single array.
-  var flattenChunks = (chunks) => {
-    // calculate data length
-    let len = 0;
-
-    for (let i = 0, l = chunks.length; i < l; i++) {
-      len += chunks[i].length;
-    }
-
-    // join chunks
-    const result = new Uint8Array(len);
-
-    for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {
-      let chunk = chunks[i];
-      result.set(chunk, pos);
-      pos += chunk.length;
-    }
-
-    return result;
-  };
-
-  var common = {
-  	assign: assign,
-  	flattenChunks: flattenChunks
-  };
-
-  // String encode/decode helpers
-
-
-  // Quick check if we can use fast array to bin string conversion
-  //
-  // - apply(Array) can fail on Android 2.2
-  // - apply(Uint8Array) can fail on iOS 5.1 Safari
-  //
-  let STR_APPLY_UIA_OK = true;
-
-  try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
-
-
-  // Table with utf8 lengths (calculated by first byte of sequence)
-  // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
-  // because max possible codepoint is 0x10ffff
-  const _utf8len = new Uint8Array(256);
-  for (let q = 0; q < 256; q++) {
-    _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
-  }
-  _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
-
-
-  // convert string to array (typed, when possible)
-  var string2buf = (str) => {
-    if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {
-      return new TextEncoder().encode(str);
-    }
-
-    let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
-
-    // count binary size
-    for (m_pos = 0; m_pos < str_len; m_pos++) {
-      c = str.charCodeAt(m_pos);
-      if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
-        c2 = str.charCodeAt(m_pos + 1);
-        if ((c2 & 0xfc00) === 0xdc00) {
-          c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
-          m_pos++;
-        }
-      }
-      buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
-    }
-
-    // allocate buffer
-    buf = new Uint8Array(buf_len);
-
-    // convert
-    for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
-      c = str.charCodeAt(m_pos);
-      if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
-        c2 = str.charCodeAt(m_pos + 1);
-        if ((c2 & 0xfc00) === 0xdc00) {
-          c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
-          m_pos++;
-        }
-      }
-      if (c < 0x80) {
-        /* one byte */
-        buf[i++] = c;
-      } else if (c < 0x800) {
-        /* two bytes */
-        buf[i++] = 0xC0 | (c >>> 6);
-        buf[i++] = 0x80 | (c & 0x3f);
-      } else if (c < 0x10000) {
-        /* three bytes */
-        buf[i++] = 0xE0 | (c >>> 12);
-        buf[i++] = 0x80 | (c >>> 6 & 0x3f);
-        buf[i++] = 0x80 | (c & 0x3f);
-      } else {
-        /* four bytes */
-        buf[i++] = 0xf0 | (c >>> 18);
-        buf[i++] = 0x80 | (c >>> 12 & 0x3f);
-        buf[i++] = 0x80 | (c >>> 6 & 0x3f);
-        buf[i++] = 0x80 | (c & 0x3f);
-      }
-    }
-
-    return buf;
-  };
-
-  // Helper
-  const buf2binstring = (buf, len) => {
-    // On Chrome, the arguments in a function call that are allowed is `65534`.
-    // If the length of the buffer is smaller than that, we can use this optimization,
-    // otherwise we will take a slower path.
-    if (len < 65534) {
-      if (buf.subarray && STR_APPLY_UIA_OK) {
-        return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));
-      }
-    }
-
-    let result = '';
-    for (let i = 0; i < len; i++) {
-      result += String.fromCharCode(buf[i]);
-    }
-    return result;
-  };
-
-
-  // convert array to string
-  var buf2string = (buf, max) => {
-    const len = max || buf.length;
-
-    if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {
-      return new TextDecoder().decode(buf.subarray(0, max));
-    }
-
-    let i, out;
-
-    // Reserve max possible length (2 words per char)
-    // NB: by unknown reasons, Array is significantly faster for
-    //     String.fromCharCode.apply than Uint16Array.
-    const utf16buf = new Array(len * 2);
-
-    for (out = 0, i = 0; i < len;) {
-      let c = buf[i++];
-      // quick process ascii
-      if (c < 0x80) { utf16buf[out++] = c; continue; }
-
-      let c_len = _utf8len[c];
-      // skip 5 & 6 byte codes
-      if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
-
-      // apply mask on first byte
-      c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
-      // join the rest
-      while (c_len > 1 && i < len) {
-        c = (c << 6) | (buf[i++] & 0x3f);
-        c_len--;
-      }
-
-      // terminated by end of string?
-      if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
-
-      if (c < 0x10000) {
-        utf16buf[out++] = c;
-      } else {
-        c -= 0x10000;
-        utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
-        utf16buf[out++] = 0xdc00 | (c & 0x3ff);
-      }
-    }
-
-    return buf2binstring(utf16buf, out);
-  };
-
-
-  // Calculate max possible position in utf8 buffer,
-  // that will not break sequence. If that's not possible
-  // - (very small limits) return max size as is.
-  //
-  // buf[] - utf8 bytes array
-  // max   - length limit (mandatory);
-  var utf8border = (buf, max) => {
-
-    max = max || buf.length;
-    if (max > buf.length) { max = buf.length; }
-
-    // go back from last position, until start of sequence found
-    let pos = max - 1;
-    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
-
-    // Very small and broken sequence,
-    // return max, because we should return something anyway.
-    if (pos < 0) { return max; }
-
-    // If we came to start of buffer - that means buffer is too small,
-    // return max too.
-    if (pos === 0) { return max; }
-
-    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
-  };
-
-  var strings = {
-  	string2buf: string2buf,
-  	buf2string: buf2string,
-  	utf8border: utf8border
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  function ZStream() {
-    /* next input byte */
-    this.input = null; // JS specific, because we have no pointers
-    this.next_in = 0;
-    /* number of bytes available at input */
-    this.avail_in = 0;
-    /* total number of input bytes read so far */
-    this.total_in = 0;
-    /* next output byte should be put there */
-    this.output = null; // JS specific, because we have no pointers
-    this.next_out = 0;
-    /* remaining free space at output */
-    this.avail_out = 0;
-    /* total number of bytes output so far */
-    this.total_out = 0;
-    /* last error message, NULL if no error */
-    this.msg = ''/*Z_NULL*/;
-    /* not visible by applications */
-    this.state = null;
-    /* best guess about the data type: binary or text */
-    this.data_type = 2/*Z_UNKNOWN*/;
-    /* adler32 value of the uncompressed data */
-    this.adler = 0;
-  }
-
-  var zstream = ZStream;
-
-  const toString$1 = Object.prototype.toString;
-
-  /* Public constants ==========================================================*/
-  /* ===========================================================================*/
-
-  const {
-    Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,
-    Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,
-    Z_DEFAULT_COMPRESSION,
-    Z_DEFAULT_STRATEGY,
-    Z_DEFLATED: Z_DEFLATED$1
-  } = constants$2;
-
-  /* ===========================================================================*/
-
-
-  /**
-   * class Deflate
-   *
-   * Generic JS-style wrapper for zlib calls. If you don't need
-   * streaming behaviour - use more simple functions: [[deflate]],
-   * [[deflateRaw]] and [[gzip]].
-   **/
-
-  /* internal
-   * Deflate.chunks -> Array
-   *
-   * Chunks of output data, if [[Deflate#onData]] not overridden.
-   **/
-
-  /**
-   * Deflate.result -> Uint8Array
-   *
-   * Compressed result, generated by default [[Deflate#onData]]
-   * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
-   * (call [[Deflate#push]] with `Z_FINISH` / `true` param).
-   **/
-
-  /**
-   * Deflate.err -> Number
-   *
-   * Error code after deflate finished. 0 (Z_OK) on success.
-   * You will not need it in real life, because deflate errors
-   * are possible only on wrong options or bad `onData` / `onEnd`
-   * custom handlers.
-   **/
-
-  /**
-   * Deflate.msg -> String
-   *
-   * Error message, if [[Deflate.err]] != 0
-   **/
-
-
-  /**
-   * new Deflate(options)
-   * - options (Object): zlib deflate options.
-   *
-   * Creates new deflator instance with specified params. Throws exception
-   * on bad params. Supported options:
-   *
-   * - `level`
-   * - `windowBits`
-   * - `memLevel`
-   * - `strategy`
-   * - `dictionary`
-   *
-   * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-   * for more information on these.
-   *
-   * Additional options, for internal needs:
-   *
-   * - `chunkSize` - size of generated data chunks (16K by default)
-   * - `raw` (Boolean) - do raw deflate
-   * - `gzip` (Boolean) - create gzip wrapper
-   * - `header` (Object) - custom header for gzip
-   *   - `text` (Boolean) - true if compressed data believed to be text
-   *   - `time` (Number) - modification time, unix timestamp
-   *   - `os` (Number) - operation system code
-   *   - `extra` (Array) - array of bytes with extra data (max 65536)
-   *   - `name` (String) - file name (binary string)
-   *   - `comment` (String) - comment (binary string)
-   *   - `hcrc` (Boolean) - true if header crc should be added
-   *
-   * ##### Example:
-   *
-   * ```javascript
-   * const pako = require('pako')
-   *   , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])
-   *   , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);
-   *
-   * const deflate = new pako.Deflate({ level: 3});
-   *
-   * deflate.push(chunk1, false);
-   * deflate.push(chunk2, true);  // true -> last chunk
-   *
-   * if (deflate.err) { throw new Error(deflate.err); }
-   *
-   * console.log(deflate.result);
-   * ```
-   **/
-  function Deflate$1(options) {
-    this.options = common.assign({
-      level: Z_DEFAULT_COMPRESSION,
-      method: Z_DEFLATED$1,
-      chunkSize: 16384,
-      windowBits: 15,
-      memLevel: 8,
-      strategy: Z_DEFAULT_STRATEGY
-    }, options || {});
-
-    let opt = this.options;
-
-    if (opt.raw && (opt.windowBits > 0)) {
-      opt.windowBits = -opt.windowBits;
-    }
-
-    else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
-      opt.windowBits += 16;
-    }
-
-    this.err    = 0;      // error code, if happens (0 = Z_OK)
-    this.msg    = '';     // error message
-    this.ended  = false;  // used to avoid multiple onEnd() calls
-    this.chunks = [];     // chunks of compressed data
-
-    this.strm = new zstream();
-    this.strm.avail_out = 0;
-
-    let status = deflate_1$2.deflateInit2(
-      this.strm,
-      opt.level,
-      opt.method,
-      opt.windowBits,
-      opt.memLevel,
-      opt.strategy
-    );
-
-    if (status !== Z_OK$2) {
-      throw new Error(messages[status]);
-    }
-
-    if (opt.header) {
-      deflate_1$2.deflateSetHeader(this.strm, opt.header);
-    }
-
-    if (opt.dictionary) {
-      let dict;
-      // Convert data if needed
-      if (typeof opt.dictionary === 'string') {
-        // If we need to compress text, change encoding to utf8.
-        dict = strings.string2buf(opt.dictionary);
-      } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {
-        dict = new Uint8Array(opt.dictionary);
-      } else {
-        dict = opt.dictionary;
-      }
-
-      status = deflate_1$2.deflateSetDictionary(this.strm, dict);
-
-      if (status !== Z_OK$2) {
-        throw new Error(messages[status]);
-      }
-
-      this._dict_set = true;
-    }
-  }
-
-  /**
-   * Deflate#push(data[, flush_mode]) -> Boolean
-   * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be
-   *   converted to utf8 byte sequence.
-   * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
-   *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
-   *
-   * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
-   * new compressed chunks. Returns `true` on success. The last data block must
-   * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending
-   * buffers and call [[Deflate#onEnd]].
-   *
-   * On fail call [[Deflate#onEnd]] with error code and return false.
-   *
-   * ##### Example
-   *
-   * ```javascript
-   * push(chunk, false); // push one of data chunks
-   * ...
-   * push(chunk, true);  // push last chunk
-   * ```
-   **/
-  Deflate$1.prototype.push = function (data, flush_mode) {
-    const strm = this.strm;
-    const chunkSize = this.options.chunkSize;
-    let status, _flush_mode;
-
-    if (this.ended) { return false; }
-
-    if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;
-    else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;
-
-    // Convert data if needed
-    if (typeof data === 'string') {
-      // If we need to compress text, change encoding to utf8.
-      strm.input = strings.string2buf(data);
-    } else if (toString$1.call(data) === '[object ArrayBuffer]') {
-      strm.input = new Uint8Array(data);
-    } else {
-      strm.input = data;
-    }
-
-    strm.next_in = 0;
-    strm.avail_in = strm.input.length;
-
-    for (;;) {
-      if (strm.avail_out === 0) {
-        strm.output = new Uint8Array(chunkSize);
-        strm.next_out = 0;
-        strm.avail_out = chunkSize;
-      }
-
-      // Make sure avail_out > 6 to avoid repeating markers
-      if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {
-        this.onData(strm.output.subarray(0, strm.next_out));
-        strm.avail_out = 0;
-        continue;
-      }
-
-      status = deflate_1$2.deflate(strm, _flush_mode);
-
-      // Ended => flush and finish
-      if (status === Z_STREAM_END$2) {
-        if (strm.next_out > 0) {
-          this.onData(strm.output.subarray(0, strm.next_out));
-        }
-        status = deflate_1$2.deflateEnd(this.strm);
-        this.onEnd(status);
-        this.ended = true;
-        return status === Z_OK$2;
-      }
-
-      // Flush if out buffer full
-      if (strm.avail_out === 0) {
-        this.onData(strm.output);
-        continue;
-      }
-
-      // Flush if requested and has data
-      if (_flush_mode > 0 && strm.next_out > 0) {
-        this.onData(strm.output.subarray(0, strm.next_out));
-        strm.avail_out = 0;
-        continue;
-      }
-
-      if (strm.avail_in === 0) break;
-    }
-
-    return true;
-  };
-
-
-  /**
-   * Deflate#onData(chunk) -> Void
-   * - chunk (Uint8Array): output data.
-   *
-   * By default, stores data blocks in `chunks[]` property and glue
-   * those in `onEnd`. Override this handler, if you need another behaviour.
-   **/
-  Deflate$1.prototype.onData = function (chunk) {
-    this.chunks.push(chunk);
-  };
-
-
-  /**
-   * Deflate#onEnd(status) -> Void
-   * - status (Number): deflate status. 0 (Z_OK) on success,
-   *   other if not.
-   *
-   * Called once after you tell deflate that the input stream is
-   * complete (Z_FINISH). By default - join collected chunks,
-   * free memory and fill `results` / `err` properties.
-   **/
-  Deflate$1.prototype.onEnd = function (status) {
-    // On success - join
-    if (status === Z_OK$2) {
-      this.result = common.flattenChunks(this.chunks);
-    }
-    this.chunks = [];
-    this.err = status;
-    this.msg = this.strm.msg;
-  };
-
-
-  /**
-   * deflate(data[, options]) -> Uint8Array
-   * - data (Uint8Array|ArrayBuffer|String): input data to compress.
-   * - options (Object): zlib deflate options.
-   *
-   * Compress `data` with deflate algorithm and `options`.
-   *
-   * Supported options are:
-   *
-   * - level
-   * - windowBits
-   * - memLevel
-   * - strategy
-   * - dictionary
-   *
-   * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-   * for more information on these.
-   *
-   * Sugar (options):
-   *
-   * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
-   *   negative windowBits implicitly.
-   *
-   * ##### Example:
-   *
-   * ```javascript
-   * const pako = require('pako')
-   * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);
-   *
-   * console.log(pako.deflate(data));
-   * ```
-   **/
-  function deflate$1(input, options) {
-    const deflator = new Deflate$1(options);
-
-    deflator.push(input, true);
-
-    // That will never happens, if you don't cheat with options :)
-    if (deflator.err) { throw deflator.msg || messages[deflator.err]; }
-
-    return deflator.result;
-  }
-
-
-  /**
-   * deflateRaw(data[, options]) -> Uint8Array
-   * - data (Uint8Array|ArrayBuffer|String): input data to compress.
-   * - options (Object): zlib deflate options.
-   *
-   * The same as [[deflate]], but creates raw data, without wrapper
-   * (header and adler32 crc).
-   **/
-  function deflateRaw$1(input, options) {
-    options = options || {};
-    options.raw = true;
-    return deflate$1(input, options);
-  }
-
-
-  /**
-   * gzip(data[, options]) -> Uint8Array
-   * - data (Uint8Array|ArrayBuffer|String): input data to compress.
-   * - options (Object): zlib deflate options.
-   *
-   * The same as [[deflate]], but create gzip wrapper instead of
-   * deflate one.
-   **/
-  function gzip$1(input, options) {
-    options = options || {};
-    options.gzip = true;
-    return deflate$1(input, options);
-  }
-
-
-  var Deflate_1$1 = Deflate$1;
-  var deflate_2 = deflate$1;
-  var deflateRaw_1$1 = deflateRaw$1;
-  var gzip_1$1 = gzip$1;
-  var constants$1 = constants$2;
-
-  var deflate_1$1 = {
-  	Deflate: Deflate_1$1,
-  	deflate: deflate_2,
-  	deflateRaw: deflateRaw_1$1,
-  	gzip: gzip_1$1,
-  	constants: constants$1
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  // See state defs from inflate.js
-  const BAD$1 = 16209;       /* got a data error -- remain here until reset */
-  const TYPE$1 = 16191;      /* i: waiting for type bits, including last-flag bit */
-
-  /*
-     Decode literal, length, and distance codes and write out the resulting
-     literal and match bytes until either not enough input or output is
-     available, an end-of-block is encountered, or a data error is encountered.
-     When large enough input and output buffers are supplied to inflate(), for
-     example, a 16K input buffer and a 64K output buffer, more than 95% of the
-     inflate execution time is spent in this routine.
-
-     Entry assumptions:
-
-          state.mode === LEN
-          strm.avail_in >= 6
-          strm.avail_out >= 258
-          start >= strm.avail_out
-          state.bits < 8
-
-     On return, state.mode is one of:
-
-          LEN -- ran out of enough output space or enough available input
-          TYPE -- reached end of block code, inflate() to interpret next block
-          BAD -- error in block data
-
-     Notes:
-
-      - The maximum input bits used by a length/distance pair is 15 bits for the
-        length code, 5 bits for the length extra, 15 bits for the distance code,
-        and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-        Therefore if strm.avail_in >= 6, then there is enough input to avoid
-        checking for available input while decoding.
-
-      - The maximum bytes that a single length/distance pair can output is 258
-        bytes, which is the maximum length that can be coded.  inflate_fast()
-        requires strm.avail_out >= 258 for each loop to avoid checking for
-        output space.
-   */
-  var inffast = function inflate_fast(strm, start) {
-    let _in;                    /* local strm.input */
-    let last;                   /* have enough input while in < last */
-    let _out;                   /* local strm.output */
-    let beg;                    /* inflate()'s initial strm.output */
-    let end;                    /* while out < end, enough space available */
-  //#ifdef INFLATE_STRICT
-    let dmax;                   /* maximum distance from zlib header */
-  //#endif
-    let wsize;                  /* window size or zero if not using window */
-    let whave;                  /* valid bytes in the window */
-    let wnext;                  /* window write index */
-    // Use `s_window` instead `window`, avoid conflict with instrumentation tools
-    let s_window;               /* allocated sliding window, if wsize != 0 */
-    let hold;                   /* local strm.hold */
-    let bits;                   /* local strm.bits */
-    let lcode;                  /* local strm.lencode */
-    let dcode;                  /* local strm.distcode */
-    let lmask;                  /* mask for first level of length codes */
-    let dmask;                  /* mask for first level of distance codes */
-    let here;                   /* retrieved table entry */
-    let op;                     /* code bits, operation, extra bits, or */
-                                /*  window position, window bytes to copy */
-    let len;                    /* match length, unused bytes */
-    let dist;                   /* match distance */
-    let from;                   /* where to copy match from */
-    let from_source;
-
-
-    let input, output; // JS specific, because we have no pointers
-
-    /* copy state to local variables */
-    const state = strm.state;
-    //here = state.here;
-    _in = strm.next_in;
-    input = strm.input;
-    last = _in + (strm.avail_in - 5);
-    _out = strm.next_out;
-    output = strm.output;
-    beg = _out - (start - strm.avail_out);
-    end = _out + (strm.avail_out - 257);
-  //#ifdef INFLATE_STRICT
-    dmax = state.dmax;
-  //#endif
-    wsize = state.wsize;
-    whave = state.whave;
-    wnext = state.wnext;
-    s_window = state.window;
-    hold = state.hold;
-    bits = state.bits;
-    lcode = state.lencode;
-    dcode = state.distcode;
-    lmask = (1 << state.lenbits) - 1;
-    dmask = (1 << state.distbits) - 1;
-
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-
-    top:
-    do {
-      if (bits < 15) {
-        hold += input[_in++] << bits;
-        bits += 8;
-        hold += input[_in++] << bits;
-        bits += 8;
-      }
-
-      here = lcode[hold & lmask];
-
-      dolen:
-      for (;;) { // Goto emulation
-        op = here >>> 24/*here.bits*/;
-        hold >>>= op;
-        bits -= op;
-        op = (here >>> 16) & 0xff/*here.op*/;
-        if (op === 0) {                          /* literal */
-          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
-          //        "inflate:         literal '%c'\n" :
-          //        "inflate:         literal 0x%02x\n", here.val));
-          output[_out++] = here & 0xffff/*here.val*/;
-        }
-        else if (op & 16) {                     /* length base */
-          len = here & 0xffff/*here.val*/;
-          op &= 15;                           /* number of extra bits */
-          if (op) {
-            if (bits < op) {
-              hold += input[_in++] << bits;
-              bits += 8;
-            }
-            len += hold & ((1 << op) - 1);
-            hold >>>= op;
-            bits -= op;
-          }
-          //Tracevv((stderr, "inflate:         length %u\n", len));
-          if (bits < 15) {
-            hold += input[_in++] << bits;
-            bits += 8;
-            hold += input[_in++] << bits;
-            bits += 8;
-          }
-          here = dcode[hold & dmask];
-
-          dodist:
-          for (;;) { // goto emulation
-            op = here >>> 24/*here.bits*/;
-            hold >>>= op;
-            bits -= op;
-            op = (here >>> 16) & 0xff/*here.op*/;
-
-            if (op & 16) {                      /* distance base */
-              dist = here & 0xffff/*here.val*/;
-              op &= 15;                       /* number of extra bits */
-              if (bits < op) {
-                hold += input[_in++] << bits;
-                bits += 8;
-                if (bits < op) {
-                  hold += input[_in++] << bits;
-                  bits += 8;
-                }
-              }
-              dist += hold & ((1 << op) - 1);
-  //#ifdef INFLATE_STRICT
-              if (dist > dmax) {
-                strm.msg = 'invalid distance too far back';
-                state.mode = BAD$1;
-                break top;
-              }
-  //#endif
-              hold >>>= op;
-              bits -= op;
-              //Tracevv((stderr, "inflate:         distance %u\n", dist));
-              op = _out - beg;                /* max distance in output */
-              if (dist > op) {                /* see if copy from window */
-                op = dist - op;               /* distance back in window */
-                if (op > whave) {
-                  if (state.sane) {
-                    strm.msg = 'invalid distance too far back';
-                    state.mode = BAD$1;
-                    break top;
-                  }
-
-  // (!) This block is disabled in zlib defaults,
-  // don't enable it for binary compatibility
-  //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
-  //                if (len <= op - whave) {
-  //                  do {
-  //                    output[_out++] = 0;
-  //                  } while (--len);
-  //                  continue top;
-  //                }
-  //                len -= op - whave;
-  //                do {
-  //                  output[_out++] = 0;
-  //                } while (--op > whave);
-  //                if (op === 0) {
-  //                  from = _out - dist;
-  //                  do {
-  //                    output[_out++] = output[from++];
-  //                  } while (--len);
-  //                  continue top;
-  //                }
-  //#endif
-                }
-                from = 0; // window index
-                from_source = s_window;
-                if (wnext === 0) {           /* very common case */
-                  from += wsize - op;
-                  if (op < len) {         /* some from window */
-                    len -= op;
-                    do {
-                      output[_out++] = s_window[from++];
-                    } while (--op);
-                    from = _out - dist;  /* rest from output */
-                    from_source = output;
-                  }
-                }
-                else if (wnext < op) {      /* wrap around window */
-                  from += wsize + wnext - op;
-                  op -= wnext;
-                  if (op < len) {         /* some from end of window */
-                    len -= op;
-                    do {
-                      output[_out++] = s_window[from++];
-                    } while (--op);
-                    from = 0;
-                    if (wnext < len) {  /* some from start of window */
-                      op = wnext;
-                      len -= op;
-                      do {
-                        output[_out++] = s_window[from++];
-                      } while (--op);
-                      from = _out - dist;      /* rest from output */
-                      from_source = output;
-                    }
-                  }
-                }
-                else {                      /* contiguous in window */
-                  from += wnext - op;
-                  if (op < len) {         /* some from window */
-                    len -= op;
-                    do {
-                      output[_out++] = s_window[from++];
-                    } while (--op);
-                    from = _out - dist;  /* rest from output */
-                    from_source = output;
-                  }
-                }
-                while (len > 2) {
-                  output[_out++] = from_source[from++];
-                  output[_out++] = from_source[from++];
-                  output[_out++] = from_source[from++];
-                  len -= 3;
-                }
-                if (len) {
-                  output[_out++] = from_source[from++];
-                  if (len > 1) {
-                    output[_out++] = from_source[from++];
-                  }
-                }
-              }
-              else {
-                from = _out - dist;          /* copy direct from output */
-                do {                        /* minimum length is three */
-                  output[_out++] = output[from++];
-                  output[_out++] = output[from++];
-                  output[_out++] = output[from++];
-                  len -= 3;
-                } while (len > 2);
-                if (len) {
-                  output[_out++] = output[from++];
-                  if (len > 1) {
-                    output[_out++] = output[from++];
-                  }
-                }
-              }
-            }
-            else if ((op & 64) === 0) {          /* 2nd level distance code */
-              here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
-              continue dodist;
-            }
-            else {
-              strm.msg = 'invalid distance code';
-              state.mode = BAD$1;
-              break top;
-            }
-
-            break; // need to emulate goto via "continue"
-          }
-        }
-        else if ((op & 64) === 0) {              /* 2nd level length code */
-          here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
-          continue dolen;
-        }
-        else if (op & 32) {                     /* end-of-block */
-          //Tracevv((stderr, "inflate:         end of block\n"));
-          state.mode = TYPE$1;
-          break top;
-        }
-        else {
-          strm.msg = 'invalid literal/length code';
-          state.mode = BAD$1;
-          break top;
-        }
-
-        break; // need to emulate goto via "continue"
-      }
-    } while (_in < last && _out < end);
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    len = bits >> 3;
-    _in -= len;
-    bits -= len << 3;
-    hold &= (1 << bits) - 1;
-
-    /* update state and return */
-    strm.next_in = _in;
-    strm.next_out = _out;
-    strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
-    strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
-    state.hold = hold;
-    state.bits = bits;
-    return;
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  const MAXBITS = 15;
-  const ENOUGH_LENS$1 = 852;
-  const ENOUGH_DISTS$1 = 592;
-  //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
-
-  const CODES$1 = 0;
-  const LENS$1 = 1;
-  const DISTS$1 = 2;
-
-  const lbase = new Uint16Array([ /* Length codes 257..285 base */
-    3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-    35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
-  ]);
-
-  const lext = new Uint8Array([ /* Length codes 257..285 extra */
-    16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-    19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
-  ]);
-
-  const dbase = new Uint16Array([ /* Distance codes 0..29 base */
-    1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-    257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-    8193, 12289, 16385, 24577, 0, 0
-  ]);
-
-  const dext = new Uint8Array([ /* Distance codes 0..29 extra */
-    16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
-    23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
-    28, 28, 29, 29, 64, 64
-  ]);
-
-  const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>
-  {
-    const bits = opts.bits;
-        //here = opts.here; /* table entry for duplication */
-
-    let len = 0;               /* a code's length in bits */
-    let sym = 0;               /* index of code symbols */
-    let min = 0, max = 0;          /* minimum and maximum code lengths */
-    let root = 0;              /* number of index bits for root table */
-    let curr = 0;              /* number of index bits for current table */
-    let drop = 0;              /* code bits to drop for sub-table */
-    let left = 0;                   /* number of prefix codes available */
-    let used = 0;              /* code entries in table used */
-    let huff = 0;              /* Huffman code */
-    let incr;              /* for incrementing code, index */
-    let fill;              /* index for replicating entries */
-    let low;               /* low bits for current root entry */
-    let mask;              /* mask for low root bits */
-    let next;             /* next available space in table */
-    let base = null;     /* base value table to use */
-  //  let shoextra;    /* extra bits table to use */
-    let match;                  /* use base and extra for symbol >= match */
-    const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
-    const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
-    let extra = null;
-
-    let here_bits, here_op, here_val;
-
-    /*
-     Process a set of code lengths to create a canonical Huffman code.  The
-     code lengths are lens[0..codes-1].  Each length corresponds to the
-     symbols 0..codes-1.  The Huffman code is generated by first sorting the
-     symbols by length from short to long, and retaining the symbol order
-     for codes with equal lengths.  Then the code starts with all zero bits
-     for the first code of the shortest length, and the codes are integer
-     increments for the same length, and zeros are appended as the length
-     increases.  For the deflate format, these bits are stored backwards
-     from their more natural integer increment ordering, and so when the
-     decoding tables are built in the large loop below, the integer codes
-     are incremented backwards.
-
-     This routine assumes, but does not check, that all of the entries in
-     lens[] are in the range 0..MAXBITS.  The caller must assure this.
-     1..MAXBITS is interpreted as that code length.  zero means that that
-     symbol does not occur in this code.
-
-     The codes are sorted by computing a count of codes for each length,
-     creating from that a table of starting indices for each length in the
-     sorted table, and then entering the symbols in order in the sorted
-     table.  The sorted table is work[], with that space being provided by
-     the caller.
-
-     The length counts are used for other purposes as well, i.e. finding
-     the minimum and maximum length codes, determining if there are any
-     codes at all, checking for a valid set of lengths, and looking ahead
-     at length counts to determine sub-table sizes when building the
-     decoding tables.
-     */
-
-    /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
-    for (len = 0; len <= MAXBITS; len++) {
-      count[len] = 0;
-    }
-    for (sym = 0; sym < codes; sym++) {
-      count[lens[lens_index + sym]]++;
-    }
-
-    /* bound code lengths, force root to be within code lengths */
-    root = bits;
-    for (max = MAXBITS; max >= 1; max--) {
-      if (count[max] !== 0) { break; }
-    }
-    if (root > max) {
-      root = max;
-    }
-    if (max === 0) {                     /* no symbols to code at all */
-      //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
-      //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
-      //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
-      table[table_index++] = (1 << 24) | (64 << 16) | 0;
-
-
-      //table.op[opts.table_index] = 64;
-      //table.bits[opts.table_index] = 1;
-      //table.val[opts.table_index++] = 0;
-      table[table_index++] = (1 << 24) | (64 << 16) | 0;
-
-      opts.bits = 1;
-      return 0;     /* no symbols, but wait for decoding to report error */
-    }
-    for (min = 1; min < max; min++) {
-      if (count[min] !== 0) { break; }
-    }
-    if (root < min) {
-      root = min;
-    }
-
-    /* check for an over-subscribed or incomplete set of lengths */
-    left = 1;
-    for (len = 1; len <= MAXBITS; len++) {
-      left <<= 1;
-      left -= count[len];
-      if (left < 0) {
-        return -1;
-      }        /* over-subscribed */
-    }
-    if (left > 0 && (type === CODES$1 || max !== 1)) {
-      return -1;                      /* incomplete set */
-    }
-
-    /* generate offsets into symbol table for each length for sorting */
-    offs[1] = 0;
-    for (len = 1; len < MAXBITS; len++) {
-      offs[len + 1] = offs[len] + count[len];
-    }
-
-    /* sort symbols by length, by symbol order within each length */
-    for (sym = 0; sym < codes; sym++) {
-      if (lens[lens_index + sym] !== 0) {
-        work[offs[lens[lens_index + sym]]++] = sym;
-      }
-    }
-
-    /*
-     Create and fill in decoding tables.  In this loop, the table being
-     filled is at next and has curr index bits.  The code being used is huff
-     with length len.  That code is converted to an index by dropping drop
-     bits off of the bottom.  For codes where len is less than drop + curr,
-     those top drop + curr - len bits are incremented through all values to
-     fill the table with replicated entries.
-
-     root is the number of index bits for the root table.  When len exceeds
-     root, sub-tables are created pointed to by the root entry with an index
-     of the low root bits of huff.  This is saved in low to check for when a
-     new sub-table should be started.  drop is zero when the root table is
-     being filled, and drop is root when sub-tables are being filled.
-
-     When a new sub-table is needed, it is necessary to look ahead in the
-     code lengths to determine what size sub-table is needed.  The length
-     counts are used for this, and so count[] is decremented as codes are
-     entered in the tables.
-
-     used keeps track of how many table entries have been allocated from the
-     provided *table space.  It is checked for LENS and DIST tables against
-     the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
-     the initial root table size constants.  See the comments in inftrees.h
-     for more information.
-
-     sym increments through all symbols, and the loop terminates when
-     all codes of length max, i.e. all codes, have been processed.  This
-     routine permits incomplete codes, so another loop after this one fills
-     in the rest of the decoding tables with invalid code markers.
-     */
-
-    /* set up for code type */
-    // poor man optimization - use if-else instead of switch,
-    // to avoid deopts in old v8
-    if (type === CODES$1) {
-      base = extra = work;    /* dummy value--not used */
-      match = 20;
-
-    } else if (type === LENS$1) {
-      base = lbase;
-      extra = lext;
-      match = 257;
-
-    } else {                    /* DISTS */
-      base = dbase;
-      extra = dext;
-      match = 0;
-    }
-
-    /* initialize opts for loop */
-    huff = 0;                   /* starting code */
-    sym = 0;                    /* starting code symbol */
-    len = min;                  /* starting code length */
-    next = table_index;              /* current table to fill in */
-    curr = root;                /* current table index bits */
-    drop = 0;                   /* current bits to drop from code for index */
-    low = -1;                   /* trigger new sub-table when len > root */
-    used = 1 << root;          /* use root table entries */
-    mask = used - 1;            /* mask for comparing low */
-
-    /* check available table space */
-    if ((type === LENS$1 && used > ENOUGH_LENS$1) ||
-      (type === DISTS$1 && used > ENOUGH_DISTS$1)) {
-      return 1;
-    }
-
-    /* process all codes and make table entries */
-    for (;;) {
-      /* create table entry */
-      here_bits = len - drop;
-      if (work[sym] + 1 < match) {
-        here_op = 0;
-        here_val = work[sym];
-      }
-      else if (work[sym] >= match) {
-        here_op = extra[work[sym] - match];
-        here_val = base[work[sym] - match];
-      }
-      else {
-        here_op = 32 + 64;         /* end of block */
-        here_val = 0;
-      }
-
-      /* replicate for those indices with low len bits equal to huff */
-      incr = 1 << (len - drop);
-      fill = 1 << curr;
-      min = fill;                 /* save offset to next table */
-      do {
-        fill -= incr;
-        table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
-      } while (fill !== 0);
-
-      /* backwards increment the len-bit code huff */
-      incr = 1 << (len - 1);
-      while (huff & incr) {
-        incr >>= 1;
-      }
-      if (incr !== 0) {
-        huff &= incr - 1;
-        huff += incr;
-      } else {
-        huff = 0;
-      }
-
-      /* go to next symbol, update count, len */
-      sym++;
-      if (--count[len] === 0) {
-        if (len === max) { break; }
-        len = lens[lens_index + work[sym]];
-      }
-
-      /* create new sub-table if needed */
-      if (len > root && (huff & mask) !== low) {
-        /* if first time, transition to sub-tables */
-        if (drop === 0) {
-          drop = root;
-        }
-
-        /* increment past last table */
-        next += min;            /* here min is 1 << curr */
-
-        /* determine length of next table */
-        curr = len - drop;
-        left = 1 << curr;
-        while (curr + drop < max) {
-          left -= count[curr + drop];
-          if (left <= 0) { break; }
-          curr++;
-          left <<= 1;
-        }
-
-        /* check for enough space */
-        used += 1 << curr;
-        if ((type === LENS$1 && used > ENOUGH_LENS$1) ||
-          (type === DISTS$1 && used > ENOUGH_DISTS$1)) {
-          return 1;
-        }
-
-        /* point entry in root table to sub-table */
-        low = huff & mask;
-        /*table.op[low] = curr;
-        table.bits[low] = root;
-        table.val[low] = next - opts.table_index;*/
-        table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
-      }
-    }
-
-    /* fill in remaining table entry if code is incomplete (guaranteed to have
-     at most one remaining entry, since if the code is incomplete, the
-     maximum code length that was allowed to get this far is one bit) */
-    if (huff !== 0) {
-      //table.op[next + huff] = 64;            /* invalid code marker */
-      //table.bits[next + huff] = len - drop;
-      //table.val[next + huff] = 0;
-      table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
-    }
-
-    /* set return parameters */
-    //opts.table_index += used;
-    opts.bits = root;
-    return 0;
-  };
-
-
-  var inftrees = inflate_table;
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-
-
-
-
-
-  const CODES = 0;
-  const LENS = 1;
-  const DISTS = 2;
-
-  /* Public constants ==========================================================*/
-  /* ===========================================================================*/
-
-  const {
-    Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,
-    Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,
-    Z_DEFLATED
-  } = constants$2;
-
-
-  /* STATES ====================================================================*/
-  /* ===========================================================================*/
-
-
-  const    HEAD = 16180;       /* i: waiting for magic header */
-  const    FLAGS = 16181;      /* i: waiting for method and flags (gzip) */
-  const    TIME = 16182;       /* i: waiting for modification time (gzip) */
-  const    OS = 16183;         /* i: waiting for extra flags and operating system (gzip) */
-  const    EXLEN = 16184;      /* i: waiting for extra length (gzip) */
-  const    EXTRA = 16185;      /* i: waiting for extra bytes (gzip) */
-  const    NAME = 16186;       /* i: waiting for end of file name (gzip) */
-  const    COMMENT = 16187;    /* i: waiting for end of comment (gzip) */
-  const    HCRC = 16188;       /* i: waiting for header crc (gzip) */
-  const    DICTID = 16189;    /* i: waiting for dictionary check value */
-  const    DICT = 16190;      /* waiting for inflateSetDictionary() call */
-  const        TYPE = 16191;      /* i: waiting for type bits, including last-flag bit */
-  const        TYPEDO = 16192;    /* i: same, but skip check to exit inflate on new block */
-  const        STORED = 16193;    /* i: waiting for stored size (length and complement) */
-  const        COPY_ = 16194;     /* i/o: same as COPY below, but only first time in */
-  const        COPY = 16195;      /* i/o: waiting for input or output to copy stored block */
-  const        TABLE = 16196;     /* i: waiting for dynamic block table lengths */
-  const        LENLENS = 16197;   /* i: waiting for code length code lengths */
-  const        CODELENS = 16198;  /* i: waiting for length/lit and distance code lengths */
-  const            LEN_ = 16199;      /* i: same as LEN below, but only first time in */
-  const            LEN = 16200;       /* i: waiting for length/lit/eob code */
-  const            LENEXT = 16201;    /* i: waiting for length extra bits */
-  const            DIST = 16202;      /* i: waiting for distance code */
-  const            DISTEXT = 16203;   /* i: waiting for distance extra bits */
-  const            MATCH = 16204;     /* o: waiting for output space to copy string */
-  const            LIT = 16205;       /* o: waiting for output space to write literal */
-  const    CHECK = 16206;     /* i: waiting for 32-bit check value */
-  const    LENGTH = 16207;    /* i: waiting for 32-bit length (gzip) */
-  const    DONE = 16208;      /* finished check, done -- remain here until reset */
-  const    BAD = 16209;       /* got a data error -- remain here until reset */
-  const    MEM = 16210;       /* got an inflate() memory error -- remain here until reset */
-  const    SYNC = 16211;      /* looking for synchronization bytes to restart inflate() */
-
-  /* ===========================================================================*/
-
-
-
-  const ENOUGH_LENS = 852;
-  const ENOUGH_DISTS = 592;
-  //const ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
-
-  const MAX_WBITS = 15;
-  /* 32K LZ77 window */
-  const DEF_WBITS = MAX_WBITS;
-
-
-  const zswap32 = (q) => {
-
-    return  (((q >>> 24) & 0xff) +
-            ((q >>> 8) & 0xff00) +
-            ((q & 0xff00) << 8) +
-            ((q & 0xff) << 24));
-  };
-
-
-  function InflateState() {
-    this.strm = null;           /* pointer back to this zlib stream */
-    this.mode = 0;              /* current inflate mode */
-    this.last = false;          /* true if processing last block */
-    this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip,
-                                   bit 2 true to validate check value */
-    this.havedict = false;      /* true if dictionary provided */
-    this.flags = 0;             /* gzip header method and flags (0 if zlib), or
-                                   -1 if raw or no header yet */
-    this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
-    this.check = 0;             /* protected copy of check value */
-    this.total = 0;             /* protected copy of output count */
-    // TODO: may be {}
-    this.head = null;           /* where to save gzip header information */
-
-    /* sliding window */
-    this.wbits = 0;             /* log base 2 of requested window size */
-    this.wsize = 0;             /* window size or zero if not using window */
-    this.whave = 0;             /* valid bytes in the window */
-    this.wnext = 0;             /* window write index */
-    this.window = null;         /* allocated sliding window, if needed */
-
-    /* bit accumulator */
-    this.hold = 0;              /* input bit accumulator */
-    this.bits = 0;              /* number of bits in "in" */
-
-    /* for string and stored block copying */
-    this.length = 0;            /* literal or length of data to copy */
-    this.offset = 0;            /* distance back to copy string from */
-
-    /* for table and code decoding */
-    this.extra = 0;             /* extra bits needed */
-
-    /* fixed and dynamic code tables */
-    this.lencode = null;          /* starting table for length/literal codes */
-    this.distcode = null;         /* starting table for distance codes */
-    this.lenbits = 0;           /* index bits for lencode */
-    this.distbits = 0;          /* index bits for distcode */
-
-    /* dynamic table building */
-    this.ncode = 0;             /* number of code length code lengths */
-    this.nlen = 0;              /* number of length code lengths */
-    this.ndist = 0;             /* number of distance code lengths */
-    this.have = 0;              /* number of code lengths in lens[] */
-    this.next = null;              /* next available space in codes[] */
-
-    this.lens = new Uint16Array(320); /* temporary storage for code lengths */
-    this.work = new Uint16Array(288); /* work area for code table building */
-
-    /*
-     because we don't have pointers in js, we use lencode and distcode directly
-     as buffers so we don't need codes
-    */
-    //this.codes = new Int32Array(ENOUGH);       /* space for code tables */
-    this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
-    this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
-    this.sane = 0;                   /* if false, allow invalid distance too far */
-    this.back = 0;                   /* bits back of last unprocessed length/lit */
-    this.was = 0;                    /* initial length of match */
-  }
-
-
-  const inflateStateCheck = (strm) => {
-
-    if (!strm) {
-      return 1;
-    }
-    const state = strm.state;
-    if (!state || state.strm !== strm ||
-      state.mode < HEAD || state.mode > SYNC) {
-      return 1;
-    }
-    return 0;
-  };
-
-
-  const inflateResetKeep = (strm) => {
-
-    if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }
-    const state = strm.state;
-    strm.total_in = strm.total_out = state.total = 0;
-    strm.msg = ''; /*Z_NULL*/
-    if (state.wrap) {       /* to support ill-conceived Java test suite */
-      strm.adler = state.wrap & 1;
-    }
-    state.mode = HEAD;
-    state.last = 0;
-    state.havedict = 0;
-    state.flags = -1;
-    state.dmax = 32768;
-    state.head = null/*Z_NULL*/;
-    state.hold = 0;
-    state.bits = 0;
-    //state.lencode = state.distcode = state.next = state.codes;
-    state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);
-    state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);
-
-    state.sane = 1;
-    state.back = -1;
-    //Tracev((stderr, "inflate: reset\n"));
-    return Z_OK$1;
-  };
-
-
-  const inflateReset = (strm) => {
-
-    if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }
-    const state = strm.state;
-    state.wsize = 0;
-    state.whave = 0;
-    state.wnext = 0;
-    return inflateResetKeep(strm);
-
-  };
-
-
-  const inflateReset2 = (strm, windowBits) => {
-    let wrap;
-
-    /* get the state */
-    if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }
-    const state = strm.state;
-
-    /* extract wrap request from windowBits parameter */
-    if (windowBits < 0) {
-      wrap = 0;
-      windowBits = -windowBits;
-    }
-    else {
-      wrap = (windowBits >> 4) + 5;
-      if (windowBits < 48) {
-        windowBits &= 15;
-      }
-    }
-
-    /* set number of window bits, free window if different */
-    if (windowBits && (windowBits < 8 || windowBits > 15)) {
-      return Z_STREAM_ERROR$1;
-    }
-    if (state.window !== null && state.wbits !== windowBits) {
-      state.window = null;
-    }
-
-    /* update state and reset the rest of it */
-    state.wrap = wrap;
-    state.wbits = windowBits;
-    return inflateReset(strm);
-  };
-
-
-  const inflateInit2 = (strm, windowBits) => {
-
-    if (!strm) { return Z_STREAM_ERROR$1; }
-    //strm.msg = Z_NULL;                 /* in case we return an error */
-
-    const state = new InflateState();
-
-    //if (state === Z_NULL) return Z_MEM_ERROR;
-    //Tracev((stderr, "inflate: allocated\n"));
-    strm.state = state;
-    state.strm = strm;
-    state.window = null/*Z_NULL*/;
-    state.mode = HEAD;     /* to pass state test in inflateReset2() */
-    const ret = inflateReset2(strm, windowBits);
-    if (ret !== Z_OK$1) {
-      strm.state = null/*Z_NULL*/;
-    }
-    return ret;
-  };
-
-
-  const inflateInit = (strm) => {
-
-    return inflateInit2(strm, DEF_WBITS);
-  };
-
-
-  /*
-   Return state with length and distance decoding tables and index sizes set to
-   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
-   If BUILDFIXED is defined, then instead this routine builds the tables the
-   first time it's called, and returns those tables the first time and
-   thereafter.  This reduces the size of the code by about 2K bytes, in
-   exchange for a little execution time.  However, BUILDFIXED should not be
-   used for threaded applications, since the rewriting of the tables and virgin
-   may not be thread-safe.
-   */
-  let virgin = true;
-
-  let lenfix, distfix; // We have no pointers in JS, so keep tables separate
-
-
-  const fixedtables = (state) => {
-
-    /* build fixed huffman tables if first call (may not be thread safe) */
-    if (virgin) {
-      lenfix = new Int32Array(512);
-      distfix = new Int32Array(32);
-
-      /* literal/length table */
-      let sym = 0;
-      while (sym < 144) { state.lens[sym++] = 8; }
-      while (sym < 256) { state.lens[sym++] = 9; }
-      while (sym < 280) { state.lens[sym++] = 7; }
-      while (sym < 288) { state.lens[sym++] = 8; }
-
-      inftrees(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
-
-      /* distance table */
-      sym = 0;
-      while (sym < 32) { state.lens[sym++] = 5; }
-
-      inftrees(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
-
-      /* do this just once */
-      virgin = false;
-    }
-
-    state.lencode = lenfix;
-    state.lenbits = 9;
-    state.distcode = distfix;
-    state.distbits = 5;
-  };
-
-
-  /*
-   Update the window with the last wsize (normally 32K) bytes written before
-   returning.  If window does not exist yet, create it.  This is only called
-   when a window is already in use, or when output has been written during this
-   inflate call, but the end of the deflate stream has not been reached yet.
-   It is also called to create a window for dictionary data when a dictionary
-   is loaded.
-
-   Providing output buffers larger than 32K to inflate() should provide a speed
-   advantage, since only the last 32K of output is copied to the sliding window
-   upon return from inflate(), and since all distances after the first 32K of
-   output will fall in the output data, making match copies simpler and faster.
-   The advantage may be dependent on the size of the processor's data caches.
-   */
-  const updatewindow = (strm, src, end, copy) => {
-
-    let dist;
-    const state = strm.state;
-
-    /* if it hasn't been done already, allocate space for the window */
-    if (state.window === null) {
-      state.wsize = 1 << state.wbits;
-      state.wnext = 0;
-      state.whave = 0;
-
-      state.window = new Uint8Array(state.wsize);
-    }
-
-    /* copy state->wsize or less output bytes into the circular window */
-    if (copy >= state.wsize) {
-      state.window.set(src.subarray(end - state.wsize, end), 0);
-      state.wnext = 0;
-      state.whave = state.wsize;
-    }
-    else {
-      dist = state.wsize - state.wnext;
-      if (dist > copy) {
-        dist = copy;
-      }
-      //zmemcpy(state->window + state->wnext, end - copy, dist);
-      state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);
-      copy -= dist;
-      if (copy) {
-        //zmemcpy(state->window, end - copy, copy);
-        state.window.set(src.subarray(end - copy, end), 0);
-        state.wnext = copy;
-        state.whave = state.wsize;
-      }
-      else {
-        state.wnext += dist;
-        if (state.wnext === state.wsize) { state.wnext = 0; }
-        if (state.whave < state.wsize) { state.whave += dist; }
-      }
-    }
-    return 0;
-  };
-
-
-  const inflate$2 = (strm, flush) => {
-
-    let state;
-    let input, output;          // input/output buffers
-    let next;                   /* next input INDEX */
-    let put;                    /* next output INDEX */
-    let have, left;             /* available input and output */
-    let hold;                   /* bit buffer */
-    let bits;                   /* bits in bit buffer */
-    let _in, _out;              /* save starting available input and output */
-    let copy;                   /* number of stored or match bytes to copy */
-    let from;                   /* where to copy match bytes from */
-    let from_source;
-    let here = 0;               /* current decoding table entry */
-    let here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
-    //let last;                   /* parent table entry */
-    let last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
-    let len;                    /* length to copy for repeats, bits to drop */
-    let ret;                    /* return code */
-    const hbuf = new Uint8Array(4);    /* buffer for gzip header crc calculation */
-    let opts;
-
-    let n; // temporary variable for NEED_BITS
-
-    const order = /* permutation of code lengths */
-      new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);
-
-
-    if (inflateStateCheck(strm) || !strm.output ||
-        (!strm.input && strm.avail_in !== 0)) {
-      return Z_STREAM_ERROR$1;
-    }
-
-    state = strm.state;
-    if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
-
-
-    //--- LOAD() ---
-    put = strm.next_out;
-    output = strm.output;
-    left = strm.avail_out;
-    next = strm.next_in;
-    input = strm.input;
-    have = strm.avail_in;
-    hold = state.hold;
-    bits = state.bits;
-    //---
-
-    _in = have;
-    _out = left;
-    ret = Z_OK$1;
-
-    inf_leave: // goto emulation
-    for (;;) {
-      switch (state.mode) {
-        case HEAD:
-          if (state.wrap === 0) {
-            state.mode = TYPEDO;
-            break;
-          }
-          //=== NEEDBITS(16);
-          while (bits < 16) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
-            if (state.wbits === 0) {
-              state.wbits = 15;
-            }
-            state.check = 0/*crc32(0L, Z_NULL, 0)*/;
-            //=== CRC2(state.check, hold);
-            hbuf[0] = hold & 0xff;
-            hbuf[1] = (hold >>> 8) & 0xff;
-            state.check = crc32_1(state.check, hbuf, 2, 0);
-            //===//
-
-            //=== INITBITS();
-            hold = 0;
-            bits = 0;
-            //===//
-            state.mode = FLAGS;
-            break;
-          }
-          if (state.head) {
-            state.head.done = false;
-          }
-          if (!(state.wrap & 1) ||   /* check if zlib header allowed */
-            (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
-            strm.msg = 'incorrect header check';
-            state.mode = BAD;
-            break;
-          }
-          if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
-            strm.msg = 'unknown compression method';
-            state.mode = BAD;
-            break;
-          }
-          //--- DROPBITS(4) ---//
-          hold >>>= 4;
-          bits -= 4;
-          //---//
-          len = (hold & 0x0f)/*BITS(4)*/ + 8;
-          if (state.wbits === 0) {
-            state.wbits = len;
-          }
-          if (len > 15 || len > state.wbits) {
-            strm.msg = 'invalid window size';
-            state.mode = BAD;
-            break;
-          }
-
-          // !!! pako patch. Force use `options.windowBits` if passed.
-          // Required to always use max window size by default.
-          state.dmax = 1 << state.wbits;
-          //state.dmax = 1 << len;
-
-          state.flags = 0;               /* indicate zlib header */
-          //Tracev((stderr, "inflate:   zlib header ok\n"));
-          strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
-          state.mode = hold & 0x200 ? DICTID : TYPE;
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          break;
-        case FLAGS:
-          //=== NEEDBITS(16); */
-          while (bits < 16) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          state.flags = hold;
-          if ((state.flags & 0xff) !== Z_DEFLATED) {
-            strm.msg = 'unknown compression method';
-            state.mode = BAD;
-            break;
-          }
-          if (state.flags & 0xe000) {
-            strm.msg = 'unknown header flags set';
-            state.mode = BAD;
-            break;
-          }
-          if (state.head) {
-            state.head.text = ((hold >> 8) & 1);
-          }
-          if ((state.flags & 0x0200) && (state.wrap & 4)) {
-            //=== CRC2(state.check, hold);
-            hbuf[0] = hold & 0xff;
-            hbuf[1] = (hold >>> 8) & 0xff;
-            state.check = crc32_1(state.check, hbuf, 2, 0);
-            //===//
-          }
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          state.mode = TIME;
-          /* falls through */
-        case TIME:
-          //=== NEEDBITS(32); */
-          while (bits < 32) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          if (state.head) {
-            state.head.time = hold;
-          }
-          if ((state.flags & 0x0200) && (state.wrap & 4)) {
-            //=== CRC4(state.check, hold)
-            hbuf[0] = hold & 0xff;
-            hbuf[1] = (hold >>> 8) & 0xff;
-            hbuf[2] = (hold >>> 16) & 0xff;
-            hbuf[3] = (hold >>> 24) & 0xff;
-            state.check = crc32_1(state.check, hbuf, 4, 0);
-            //===
-          }
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          state.mode = OS;
-          /* falls through */
-        case OS:
-          //=== NEEDBITS(16); */
-          while (bits < 16) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          if (state.head) {
-            state.head.xflags = (hold & 0xff);
-            state.head.os = (hold >> 8);
-          }
-          if ((state.flags & 0x0200) && (state.wrap & 4)) {
-            //=== CRC2(state.check, hold);
-            hbuf[0] = hold & 0xff;
-            hbuf[1] = (hold >>> 8) & 0xff;
-            state.check = crc32_1(state.check, hbuf, 2, 0);
-            //===//
-          }
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          state.mode = EXLEN;
-          /* falls through */
-        case EXLEN:
-          if (state.flags & 0x0400) {
-            //=== NEEDBITS(16); */
-            while (bits < 16) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            state.length = hold;
-            if (state.head) {
-              state.head.extra_len = hold;
-            }
-            if ((state.flags & 0x0200) && (state.wrap & 4)) {
-              //=== CRC2(state.check, hold);
-              hbuf[0] = hold & 0xff;
-              hbuf[1] = (hold >>> 8) & 0xff;
-              state.check = crc32_1(state.check, hbuf, 2, 0);
-              //===//
-            }
-            //=== INITBITS();
-            hold = 0;
-            bits = 0;
-            //===//
-          }
-          else if (state.head) {
-            state.head.extra = null/*Z_NULL*/;
-          }
-          state.mode = EXTRA;
-          /* falls through */
-        case EXTRA:
-          if (state.flags & 0x0400) {
-            copy = state.length;
-            if (copy > have) { copy = have; }
-            if (copy) {
-              if (state.head) {
-                len = state.head.extra_len - state.length;
-                if (!state.head.extra) {
-                  // Use untyped array for more convenient processing later
-                  state.head.extra = new Uint8Array(state.head.extra_len);
-                }
-                state.head.extra.set(
-                  input.subarray(
-                    next,
-                    // extra field is limited to 65536 bytes
-                    // - no need for additional size check
-                    next + copy
-                  ),
-                  /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
-                  len
-                );
-                //zmemcpy(state.head.extra + len, next,
-                //        len + copy > state.head.extra_max ?
-                //        state.head.extra_max - len : copy);
-              }
-              if ((state.flags & 0x0200) && (state.wrap & 4)) {
-                state.check = crc32_1(state.check, input, copy, next);
-              }
-              have -= copy;
-              next += copy;
-              state.length -= copy;
-            }
-            if (state.length) { break inf_leave; }
-          }
-          state.length = 0;
-          state.mode = NAME;
-          /* falls through */
-        case NAME:
-          if (state.flags & 0x0800) {
-            if (have === 0) { break inf_leave; }
-            copy = 0;
-            do {
-              // TODO: 2 or 1 bytes?
-              len = input[next + copy++];
-              /* use constant limit because in js we should not preallocate memory */
-              if (state.head && len &&
-                  (state.length < 65536 /*state.head.name_max*/)) {
-                state.head.name += String.fromCharCode(len);
-              }
-            } while (len && copy < have);
-
-            if ((state.flags & 0x0200) && (state.wrap & 4)) {
-              state.check = crc32_1(state.check, input, copy, next);
-            }
-            have -= copy;
-            next += copy;
-            if (len) { break inf_leave; }
-          }
-          else if (state.head) {
-            state.head.name = null;
-          }
-          state.length = 0;
-          state.mode = COMMENT;
-          /* falls through */
-        case COMMENT:
-          if (state.flags & 0x1000) {
-            if (have === 0) { break inf_leave; }
-            copy = 0;
-            do {
-              len = input[next + copy++];
-              /* use constant limit because in js we should not preallocate memory */
-              if (state.head && len &&
-                  (state.length < 65536 /*state.head.comm_max*/)) {
-                state.head.comment += String.fromCharCode(len);
-              }
-            } while (len && copy < have);
-            if ((state.flags & 0x0200) && (state.wrap & 4)) {
-              state.check = crc32_1(state.check, input, copy, next);
-            }
-            have -= copy;
-            next += copy;
-            if (len) { break inf_leave; }
-          }
-          else if (state.head) {
-            state.head.comment = null;
-          }
-          state.mode = HCRC;
-          /* falls through */
-        case HCRC:
-          if (state.flags & 0x0200) {
-            //=== NEEDBITS(16); */
-            while (bits < 16) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {
-              strm.msg = 'header crc mismatch';
-              state.mode = BAD;
-              break;
-            }
-            //=== INITBITS();
-            hold = 0;
-            bits = 0;
-            //===//
-          }
-          if (state.head) {
-            state.head.hcrc = ((state.flags >> 9) & 1);
-            state.head.done = true;
-          }
-          strm.adler = state.check = 0;
-          state.mode = TYPE;
-          break;
-        case DICTID:
-          //=== NEEDBITS(32); */
-          while (bits < 32) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          strm.adler = state.check = zswap32(hold);
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          state.mode = DICT;
-          /* falls through */
-        case DICT:
-          if (state.havedict === 0) {
-            //--- RESTORE() ---
-            strm.next_out = put;
-            strm.avail_out = left;
-            strm.next_in = next;
-            strm.avail_in = have;
-            state.hold = hold;
-            state.bits = bits;
-            //---
-            return Z_NEED_DICT$1;
-          }
-          strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
-          state.mode = TYPE;
-          /* falls through */
-        case TYPE:
-          if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
-          /* falls through */
-        case TYPEDO:
-          if (state.last) {
-            //--- BYTEBITS() ---//
-            hold >>>= bits & 7;
-            bits -= bits & 7;
-            //---//
-            state.mode = CHECK;
-            break;
-          }
-          //=== NEEDBITS(3); */
-          while (bits < 3) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          state.last = (hold & 0x01)/*BITS(1)*/;
-          //--- DROPBITS(1) ---//
-          hold >>>= 1;
-          bits -= 1;
-          //---//
-
-          switch ((hold & 0x03)/*BITS(2)*/) {
-            case 0:                             /* stored block */
-              //Tracev((stderr, "inflate:     stored block%s\n",
-              //        state.last ? " (last)" : ""));
-              state.mode = STORED;
-              break;
-            case 1:                             /* fixed block */
-              fixedtables(state);
-              //Tracev((stderr, "inflate:     fixed codes block%s\n",
-              //        state.last ? " (last)" : ""));
-              state.mode = LEN_;             /* decode codes */
-              if (flush === Z_TREES) {
-                //--- DROPBITS(2) ---//
-                hold >>>= 2;
-                bits -= 2;
-                //---//
-                break inf_leave;
-              }
-              break;
-            case 2:                             /* dynamic block */
-              //Tracev((stderr, "inflate:     dynamic codes block%s\n",
-              //        state.last ? " (last)" : ""));
-              state.mode = TABLE;
-              break;
-            case 3:
-              strm.msg = 'invalid block type';
-              state.mode = BAD;
-          }
-          //--- DROPBITS(2) ---//
-          hold >>>= 2;
-          bits -= 2;
-          //---//
-          break;
-        case STORED:
-          //--- BYTEBITS() ---// /* go to byte boundary */
-          hold >>>= bits & 7;
-          bits -= bits & 7;
-          //---//
-          //=== NEEDBITS(32); */
-          while (bits < 32) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
-            strm.msg = 'invalid stored block lengths';
-            state.mode = BAD;
-            break;
-          }
-          state.length = hold & 0xffff;
-          //Tracev((stderr, "inflate:       stored length %u\n",
-          //        state.length));
-          //=== INITBITS();
-          hold = 0;
-          bits = 0;
-          //===//
-          state.mode = COPY_;
-          if (flush === Z_TREES) { break inf_leave; }
-          /* falls through */
-        case COPY_:
-          state.mode = COPY;
-          /* falls through */
-        case COPY:
-          copy = state.length;
-          if (copy) {
-            if (copy > have) { copy = have; }
-            if (copy > left) { copy = left; }
-            if (copy === 0) { break inf_leave; }
-            //--- zmemcpy(put, next, copy); ---
-            output.set(input.subarray(next, next + copy), put);
-            //---//
-            have -= copy;
-            next += copy;
-            left -= copy;
-            put += copy;
-            state.length -= copy;
-            break;
-          }
-          //Tracev((stderr, "inflate:       stored end\n"));
-          state.mode = TYPE;
-          break;
-        case TABLE:
-          //=== NEEDBITS(14); */
-          while (bits < 14) {
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-          }
-          //===//
-          state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
-          //--- DROPBITS(5) ---//
-          hold >>>= 5;
-          bits -= 5;
-          //---//
-          state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
-          //--- DROPBITS(5) ---//
-          hold >>>= 5;
-          bits -= 5;
-          //---//
-          state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
-          //--- DROPBITS(4) ---//
-          hold >>>= 4;
-          bits -= 4;
-          //---//
-  //#ifndef PKZIP_BUG_WORKAROUND
-          if (state.nlen > 286 || state.ndist > 30) {
-            strm.msg = 'too many length or distance symbols';
-            state.mode = BAD;
-            break;
-          }
-  //#endif
-          //Tracev((stderr, "inflate:       table sizes ok\n"));
-          state.have = 0;
-          state.mode = LENLENS;
-          /* falls through */
-        case LENLENS:
-          while (state.have < state.ncode) {
-            //=== NEEDBITS(3);
-            while (bits < 3) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
-            //--- DROPBITS(3) ---//
-            hold >>>= 3;
-            bits -= 3;
-            //---//
-          }
-          while (state.have < 19) {
-            state.lens[order[state.have++]] = 0;
-          }
-          // We have separate tables & no pointers. 2 commented lines below not needed.
-          //state.next = state.codes;
-          //state.lencode = state.next;
-          // Switch to use dynamic table
-          state.lencode = state.lendyn;
-          state.lenbits = 7;
-
-          opts = { bits: state.lenbits };
-          ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
-          state.lenbits = opts.bits;
-
-          if (ret) {
-            strm.msg = 'invalid code lengths set';
-            state.mode = BAD;
-            break;
-          }
-          //Tracev((stderr, "inflate:       code lengths ok\n"));
-          state.have = 0;
-          state.mode = CODELENS;
-          /* falls through */
-        case CODELENS:
-          while (state.have < state.nlen + state.ndist) {
-            for (;;) {
-              here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
-              here_bits = here >>> 24;
-              here_op = (here >>> 16) & 0xff;
-              here_val = here & 0xffff;
-
-              if ((here_bits) <= bits) { break; }
-              //--- PULLBYTE() ---//
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-              //---//
-            }
-            if (here_val < 16) {
-              //--- DROPBITS(here.bits) ---//
-              hold >>>= here_bits;
-              bits -= here_bits;
-              //---//
-              state.lens[state.have++] = here_val;
-            }
-            else {
-              if (here_val === 16) {
-                //=== NEEDBITS(here.bits + 2);
-                n = here_bits + 2;
-                while (bits < n) {
-                  if (have === 0) { break inf_leave; }
-                  have--;
-                  hold += input[next++] << bits;
-                  bits += 8;
-                }
-                //===//
-                //--- DROPBITS(here.bits) ---//
-                hold >>>= here_bits;
-                bits -= here_bits;
-                //---//
-                if (state.have === 0) {
-                  strm.msg = 'invalid bit length repeat';
-                  state.mode = BAD;
-                  break;
-                }
-                len = state.lens[state.have - 1];
-                copy = 3 + (hold & 0x03);//BITS(2);
-                //--- DROPBITS(2) ---//
-                hold >>>= 2;
-                bits -= 2;
-                //---//
-              }
-              else if (here_val === 17) {
-                //=== NEEDBITS(here.bits + 3);
-                n = here_bits + 3;
-                while (bits < n) {
-                  if (have === 0) { break inf_leave; }
-                  have--;
-                  hold += input[next++] << bits;
-                  bits += 8;
-                }
-                //===//
-                //--- DROPBITS(here.bits) ---//
-                hold >>>= here_bits;
-                bits -= here_bits;
-                //---//
-                len = 0;
-                copy = 3 + (hold & 0x07);//BITS(3);
-                //--- DROPBITS(3) ---//
-                hold >>>= 3;
-                bits -= 3;
-                //---//
-              }
-              else {
-                //=== NEEDBITS(here.bits + 7);
-                n = here_bits + 7;
-                while (bits < n) {
-                  if (have === 0) { break inf_leave; }
-                  have--;
-                  hold += input[next++] << bits;
-                  bits += 8;
-                }
-                //===//
-                //--- DROPBITS(here.bits) ---//
-                hold >>>= here_bits;
-                bits -= here_bits;
-                //---//
-                len = 0;
-                copy = 11 + (hold & 0x7f);//BITS(7);
-                //--- DROPBITS(7) ---//
-                hold >>>= 7;
-                bits -= 7;
-                //---//
-              }
-              if (state.have + copy > state.nlen + state.ndist) {
-                strm.msg = 'invalid bit length repeat';
-                state.mode = BAD;
-                break;
-              }
-              while (copy--) {
-                state.lens[state.have++] = len;
-              }
-            }
-          }
-
-          /* handle error breaks in while */
-          if (state.mode === BAD) { break; }
-
-          /* check for end-of-block code (better have one) */
-          if (state.lens[256] === 0) {
-            strm.msg = 'invalid code -- missing end-of-block';
-            state.mode = BAD;
-            break;
-          }
-
-          /* build code tables -- note: do not change the lenbits or distbits
-             values here (9 and 6) without reading the comments in inftrees.h
-             concerning the ENOUGH constants, which depend on those values */
-          state.lenbits = 9;
-
-          opts = { bits: state.lenbits };
-          ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
-          // We have separate tables & no pointers. 2 commented lines below not needed.
-          // state.next_index = opts.table_index;
-          state.lenbits = opts.bits;
-          // state.lencode = state.next;
-
-          if (ret) {
-            strm.msg = 'invalid literal/lengths set';
-            state.mode = BAD;
-            break;
-          }
-
-          state.distbits = 6;
-          //state.distcode.copy(state.codes);
-          // Switch to use dynamic table
-          state.distcode = state.distdyn;
-          opts = { bits: state.distbits };
-          ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
-          // We have separate tables & no pointers. 2 commented lines below not needed.
-          // state.next_index = opts.table_index;
-          state.distbits = opts.bits;
-          // state.distcode = state.next;
-
-          if (ret) {
-            strm.msg = 'invalid distances set';
-            state.mode = BAD;
-            break;
-          }
-          //Tracev((stderr, 'inflate:       codes ok\n'));
-          state.mode = LEN_;
-          if (flush === Z_TREES) { break inf_leave; }
-          /* falls through */
-        case LEN_:
-          state.mode = LEN;
-          /* falls through */
-        case LEN:
-          if (have >= 6 && left >= 258) {
-            //--- RESTORE() ---
-            strm.next_out = put;
-            strm.avail_out = left;
-            strm.next_in = next;
-            strm.avail_in = have;
-            state.hold = hold;
-            state.bits = bits;
-            //---
-            inffast(strm, _out);
-            //--- LOAD() ---
-            put = strm.next_out;
-            output = strm.output;
-            left = strm.avail_out;
-            next = strm.next_in;
-            input = strm.input;
-            have = strm.avail_in;
-            hold = state.hold;
-            bits = state.bits;
-            //---
-
-            if (state.mode === TYPE) {
-              state.back = -1;
-            }
-            break;
-          }
-          state.back = 0;
-          for (;;) {
-            here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
-            here_bits = here >>> 24;
-            here_op = (here >>> 16) & 0xff;
-            here_val = here & 0xffff;
-
-            if (here_bits <= bits) { break; }
-            //--- PULLBYTE() ---//
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-            //---//
-          }
-          if (here_op && (here_op & 0xf0) === 0) {
-            last_bits = here_bits;
-            last_op = here_op;
-            last_val = here_val;
-            for (;;) {
-              here = state.lencode[last_val +
-                      ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
-              here_bits = here >>> 24;
-              here_op = (here >>> 16) & 0xff;
-              here_val = here & 0xffff;
-
-              if ((last_bits + here_bits) <= bits) { break; }
-              //--- PULLBYTE() ---//
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-              //---//
-            }
-            //--- DROPBITS(last.bits) ---//
-            hold >>>= last_bits;
-            bits -= last_bits;
-            //---//
-            state.back += last_bits;
-          }
-          //--- DROPBITS(here.bits) ---//
-          hold >>>= here_bits;
-          bits -= here_bits;
-          //---//
-          state.back += here_bits;
-          state.length = here_val;
-          if (here_op === 0) {
-            //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
-            //        "inflate:         literal '%c'\n" :
-            //        "inflate:         literal 0x%02x\n", here.val));
-            state.mode = LIT;
-            break;
-          }
-          if (here_op & 32) {
-            //Tracevv((stderr, "inflate:         end of block\n"));
-            state.back = -1;
-            state.mode = TYPE;
-            break;
-          }
-          if (here_op & 64) {
-            strm.msg = 'invalid literal/length code';
-            state.mode = BAD;
-            break;
-          }
-          state.extra = here_op & 15;
-          state.mode = LENEXT;
-          /* falls through */
-        case LENEXT:
-          if (state.extra) {
-            //=== NEEDBITS(state.extra);
-            n = state.extra;
-            while (bits < n) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
-            //--- DROPBITS(state.extra) ---//
-            hold >>>= state.extra;
-            bits -= state.extra;
-            //---//
-            state.back += state.extra;
-          }
-          //Tracevv((stderr, "inflate:         length %u\n", state.length));
-          state.was = state.length;
-          state.mode = DIST;
-          /* falls through */
-        case DIST:
-          for (;;) {
-            here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
-            here_bits = here >>> 24;
-            here_op = (here >>> 16) & 0xff;
-            here_val = here & 0xffff;
-
-            if ((here_bits) <= bits) { break; }
-            //--- PULLBYTE() ---//
-            if (have === 0) { break inf_leave; }
-            have--;
-            hold += input[next++] << bits;
-            bits += 8;
-            //---//
-          }
-          if ((here_op & 0xf0) === 0) {
-            last_bits = here_bits;
-            last_op = here_op;
-            last_val = here_val;
-            for (;;) {
-              here = state.distcode[last_val +
-                      ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
-              here_bits = here >>> 24;
-              here_op = (here >>> 16) & 0xff;
-              here_val = here & 0xffff;
-
-              if ((last_bits + here_bits) <= bits) { break; }
-              //--- PULLBYTE() ---//
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-              //---//
-            }
-            //--- DROPBITS(last.bits) ---//
-            hold >>>= last_bits;
-            bits -= last_bits;
-            //---//
-            state.back += last_bits;
-          }
-          //--- DROPBITS(here.bits) ---//
-          hold >>>= here_bits;
-          bits -= here_bits;
-          //---//
-          state.back += here_bits;
-          if (here_op & 64) {
-            strm.msg = 'invalid distance code';
-            state.mode = BAD;
-            break;
-          }
-          state.offset = here_val;
-          state.extra = (here_op) & 15;
-          state.mode = DISTEXT;
-          /* falls through */
-        case DISTEXT:
-          if (state.extra) {
-            //=== NEEDBITS(state.extra);
-            n = state.extra;
-            while (bits < n) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
-            //--- DROPBITS(state.extra) ---//
-            hold >>>= state.extra;
-            bits -= state.extra;
-            //---//
-            state.back += state.extra;
-          }
-  //#ifdef INFLATE_STRICT
-          if (state.offset > state.dmax) {
-            strm.msg = 'invalid distance too far back';
-            state.mode = BAD;
-            break;
-          }
-  //#endif
-          //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
-          state.mode = MATCH;
-          /* falls through */
-        case MATCH:
-          if (left === 0) { break inf_leave; }
-          copy = _out - left;
-          if (state.offset > copy) {         /* copy from window */
-            copy = state.offset - copy;
-            if (copy > state.whave) {
-              if (state.sane) {
-                strm.msg = 'invalid distance too far back';
-                state.mode = BAD;
-                break;
-              }
-  // (!) This block is disabled in zlib defaults,
-  // don't enable it for binary compatibility
-  //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
-  //          Trace((stderr, "inflate.c too far\n"));
-  //          copy -= state.whave;
-  //          if (copy > state.length) { copy = state.length; }
-  //          if (copy > left) { copy = left; }
-  //          left -= copy;
-  //          state.length -= copy;
-  //          do {
-  //            output[put++] = 0;
-  //          } while (--copy);
-  //          if (state.length === 0) { state.mode = LEN; }
-  //          break;
-  //#endif
-            }
-            if (copy > state.wnext) {
-              copy -= state.wnext;
-              from = state.wsize - copy;
-            }
-            else {
-              from = state.wnext - copy;
-            }
-            if (copy > state.length) { copy = state.length; }
-            from_source = state.window;
-          }
-          else {                              /* copy from output */
-            from_source = output;
-            from = put - state.offset;
-            copy = state.length;
-          }
-          if (copy > left) { copy = left; }
-          left -= copy;
-          state.length -= copy;
-          do {
-            output[put++] = from_source[from++];
-          } while (--copy);
-          if (state.length === 0) { state.mode = LEN; }
-          break;
-        case LIT:
-          if (left === 0) { break inf_leave; }
-          output[put++] = state.length;
-          left--;
-          state.mode = LEN;
-          break;
-        case CHECK:
-          if (state.wrap) {
-            //=== NEEDBITS(32);
-            while (bits < 32) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              // Use '|' instead of '+' to make sure that result is signed
-              hold |= input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            _out -= left;
-            strm.total_out += _out;
-            state.total += _out;
-            if ((state.wrap & 4) && _out) {
-              strm.adler = state.check =
-                  /*UPDATE_CHECK(state.check, put - _out, _out);*/
-                  (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));
-
-            }
-            _out = left;
-            // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
-            if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {
-              strm.msg = 'incorrect data check';
-              state.mode = BAD;
-              break;
-            }
-            //=== INITBITS();
-            hold = 0;
-            bits = 0;
-            //===//
-            //Tracev((stderr, "inflate:   check matches trailer\n"));
-          }
-          state.mode = LENGTH;
-          /* falls through */
-        case LENGTH:
-          if (state.wrap && state.flags) {
-            //=== NEEDBITS(32);
-            while (bits < 32) {
-              if (have === 0) { break inf_leave; }
-              have--;
-              hold += input[next++] << bits;
-              bits += 8;
-            }
-            //===//
-            if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {
-              strm.msg = 'incorrect length check';
-              state.mode = BAD;
-              break;
-            }
-            //=== INITBITS();
-            hold = 0;
-            bits = 0;
-            //===//
-            //Tracev((stderr, "inflate:   length matches trailer\n"));
-          }
-          state.mode = DONE;
-          /* falls through */
-        case DONE:
-          ret = Z_STREAM_END$1;
-          break inf_leave;
-        case BAD:
-          ret = Z_DATA_ERROR$1;
-          break inf_leave;
-        case MEM:
-          return Z_MEM_ERROR$1;
-        case SYNC:
-          /* falls through */
-        default:
-          return Z_STREAM_ERROR$1;
-      }
-    }
-
-    // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
-
-    /*
-       Return from inflate(), updating the total counts and the check value.
-       If there was no progress during the inflate() call, return a buffer
-       error.  Call updatewindow() to create and/or update the window state.
-       Note: a memory error from inflate() is non-recoverable.
-     */
-
-    //--- RESTORE() ---
-    strm.next_out = put;
-    strm.avail_out = left;
-    strm.next_in = next;
-    strm.avail_in = have;
-    state.hold = hold;
-    state.bits = bits;
-    //---
-
-    if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
-                        (state.mode < CHECK || flush !== Z_FINISH$1))) {
-      if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;
-    }
-    _in -= strm.avail_in;
-    _out -= strm.avail_out;
-    strm.total_in += _in;
-    strm.total_out += _out;
-    state.total += _out;
-    if ((state.wrap & 4) && _out) {
-      strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/
-        (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));
-    }
-    strm.data_type = state.bits + (state.last ? 64 : 0) +
-                      (state.mode === TYPE ? 128 : 0) +
-                      (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
-    if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {
-      ret = Z_BUF_ERROR;
-    }
-    return ret;
-  };
-
-
-  const inflateEnd = (strm) => {
-
-    if (inflateStateCheck(strm)) {
-      return Z_STREAM_ERROR$1;
-    }
-
-    let state = strm.state;
-    if (state.window) {
-      state.window = null;
-    }
-    strm.state = null;
-    return Z_OK$1;
-  };
-
-
-  const inflateGetHeader = (strm, head) => {
-
-    /* check state */
-    if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }
-    const state = strm.state;
-    if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }
-
-    /* save header structure */
-    state.head = head;
-    head.done = false;
-    return Z_OK$1;
-  };
-
-
-  const inflateSetDictionary = (strm, dictionary) => {
-    const dictLength = dictionary.length;
-
-    let state;
-    let dictid;
-    let ret;
-
-    /* check state */
-    if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }
-    state = strm.state;
-
-    if (state.wrap !== 0 && state.mode !== DICT) {
-      return Z_STREAM_ERROR$1;
-    }
-
-    /* check for correct dictionary identifier */
-    if (state.mode === DICT) {
-      dictid = 1; /* adler32(0, null, 0)*/
-      /* dictid = adler32(dictid, dictionary, dictLength); */
-      dictid = adler32_1(dictid, dictionary, dictLength, 0);
-      if (dictid !== state.check) {
-        return Z_DATA_ERROR$1;
-      }
-    }
-    /* copy dictionary to window using updatewindow(), which will amend the
-     existing dictionary if appropriate */
-    ret = updatewindow(strm, dictionary, dictLength, dictLength);
-    if (ret) {
-      state.mode = MEM;
-      return Z_MEM_ERROR$1;
-    }
-    state.havedict = 1;
-    // Tracev((stderr, "inflate:   dictionary set\n"));
-    return Z_OK$1;
-  };
-
-
-  var inflateReset_1 = inflateReset;
-  var inflateReset2_1 = inflateReset2;
-  var inflateResetKeep_1 = inflateResetKeep;
-  var inflateInit_1 = inflateInit;
-  var inflateInit2_1 = inflateInit2;
-  var inflate_2$1 = inflate$2;
-  var inflateEnd_1 = inflateEnd;
-  var inflateGetHeader_1 = inflateGetHeader;
-  var inflateSetDictionary_1 = inflateSetDictionary;
-  var inflateInfo = 'pako inflate (from Nodeca project)';
-
-  /* Not implemented
-  module.exports.inflateCodesUsed = inflateCodesUsed;
-  module.exports.inflateCopy = inflateCopy;
-  module.exports.inflateGetDictionary = inflateGetDictionary;
-  module.exports.inflateMark = inflateMark;
-  module.exports.inflatePrime = inflatePrime;
-  module.exports.inflateSync = inflateSync;
-  module.exports.inflateSyncPoint = inflateSyncPoint;
-  module.exports.inflateUndermine = inflateUndermine;
-  module.exports.inflateValidate = inflateValidate;
-  */
-
-  var inflate_1$2 = {
-  	inflateReset: inflateReset_1,
-  	inflateReset2: inflateReset2_1,
-  	inflateResetKeep: inflateResetKeep_1,
-  	inflateInit: inflateInit_1,
-  	inflateInit2: inflateInit2_1,
-  	inflate: inflate_2$1,
-  	inflateEnd: inflateEnd_1,
-  	inflateGetHeader: inflateGetHeader_1,
-  	inflateSetDictionary: inflateSetDictionary_1,
-  	inflateInfo: inflateInfo
-  };
-
-  // (C) 1995-2013 Jean-loup Gailly and Mark Adler
-  // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
-  //
-  // This software is provided 'as-is', without any express or implied
-  // warranty. In no event will the authors be held liable for any damages
-  // arising from the use of this software.
-  //
-  // Permission is granted to anyone to use this software for any purpose,
-  // including commercial applications, and to alter it and redistribute it
-  // freely, subject to the following restrictions:
-  //
-  // 1. The origin of this software must not be misrepresented; you must not
-  //   claim that you wrote the original software. If you use this software
-  //   in a product, an acknowledgment in the product documentation would be
-  //   appreciated but is not required.
-  // 2. Altered source versions must be plainly marked as such, and must not be
-  //   misrepresented as being the original software.
-  // 3. This notice may not be removed or altered from any source distribution.
-
-  function GZheader() {
-    /* true if compressed data believed to be text */
-    this.text       = 0;
-    /* modification time */
-    this.time       = 0;
-    /* extra flags (not used when writing a gzip file) */
-    this.xflags     = 0;
-    /* operating system */
-    this.os         = 0;
-    /* pointer to extra field or Z_NULL if none */
-    this.extra      = null;
-    /* extra field length (valid if extra != Z_NULL) */
-    this.extra_len  = 0; // Actually, we don't need it in JS,
-                         // but leave for few code modifications
-
-    //
-    // Setup limits is not necessary because in js we should not preallocate memory
-    // for inflate use constant limit in 65536 bytes
-    //
-
-    /* space at extra (only when reading header) */
-    // this.extra_max  = 0;
-    /* pointer to zero-terminated file name or Z_NULL */
-    this.name       = '';
-    /* space at name (only when reading header) */
-    // this.name_max   = 0;
-    /* pointer to zero-terminated comment or Z_NULL */
-    this.comment    = '';
-    /* space at comment (only when reading header) */
-    // this.comm_max   = 0;
-    /* true if there was or will be a header crc */
-    this.hcrc       = 0;
-    /* true when done reading gzip header (not used when writing a gzip file) */
-    this.done       = false;
-  }
-
-  var gzheader = GZheader;
-
-  const toString = Object.prototype.toString;
-
-  /* Public constants ==========================================================*/
-  /* ===========================================================================*/
-
-  const {
-    Z_NO_FLUSH, Z_FINISH,
-    Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR
-  } = constants$2;
-
-  /* ===========================================================================*/
-
-
-  /**
-   * class Inflate
-   *
-   * Generic JS-style wrapper for zlib calls. If you don't need
-   * streaming behaviour - use more simple functions: [[inflate]]
-   * and [[inflateRaw]].
-   **/
-
-  /* internal
-   * inflate.chunks -> Array
-   *
-   * Chunks of output data, if [[Inflate#onData]] not overridden.
-   **/
-
-  /**
-   * Inflate.result -> Uint8Array|String
-   *
-   * Uncompressed result, generated by default [[Inflate#onData]]
-   * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
-   * (call [[Inflate#push]] with `Z_FINISH` / `true` param).
-   **/
-
-  /**
-   * Inflate.err -> Number
-   *
-   * Error code after inflate finished. 0 (Z_OK) on success.
-   * Should be checked if broken data possible.
-   **/
-
-  /**
-   * Inflate.msg -> String
-   *
-   * Error message, if [[Inflate.err]] != 0
-   **/
-
-
-  /**
-   * new Inflate(options)
-   * - options (Object): zlib inflate options.
-   *
-   * Creates new inflator instance with specified params. Throws exception
-   * on bad params. Supported options:
-   *
-   * - `windowBits`
-   * - `dictionary`
-   *
-   * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-   * for more information on these.
-   *
-   * Additional options, for internal needs:
-   *
-   * - `chunkSize` - size of generated data chunks (16K by default)
-   * - `raw` (Boolean) - do raw inflate
-   * - `to` (String) - if equal to 'string', then result will be converted
-   *   from utf8 to utf16 (javascript) string. When string output requested,
-   *   chunk length can differ from `chunkSize`, depending on content.
-   *
-   * By default, when no options set, autodetect deflate/gzip data format via
-   * wrapper header.
-   *
-   * ##### Example:
-   *
-   * ```javascript
-   * const pako = require('pako')
-   * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])
-   * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);
-   *
-   * const inflate = new pako.Inflate({ level: 3});
-   *
-   * inflate.push(chunk1, false);
-   * inflate.push(chunk2, true);  // true -> last chunk
-   *
-   * if (inflate.err) { throw new Error(inflate.err); }
-   *
-   * console.log(inflate.result);
-   * ```
-   **/
-  function Inflate$1(options) {
-    this.options = common.assign({
-      chunkSize: 1024 * 64,
-      windowBits: 15,
-      to: ''
-    }, options || {});
-
-    const opt = this.options;
-
-    // Force window size for `raw` data, if not set directly,
-    // because we have no header for autodetect.
-    if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
-      opt.windowBits = -opt.windowBits;
-      if (opt.windowBits === 0) { opt.windowBits = -15; }
-    }
-
-    // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
-    if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
-        !(options && options.windowBits)) {
-      opt.windowBits += 32;
-    }
-
-    // Gzip header has no info about windows size, we can do autodetect only
-    // for deflate. So, if window size not set, force it to max when gzip possible
-    if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
-      // bit 3 (16) -> gzipped data
-      // bit 4 (32) -> autodetect gzip/deflate
-      if ((opt.windowBits & 15) === 0) {
-        opt.windowBits |= 15;
-      }
-    }
-
-    this.err    = 0;      // error code, if happens (0 = Z_OK)
-    this.msg    = '';     // error message
-    this.ended  = false;  // used to avoid multiple onEnd() calls
-    this.chunks = [];     // chunks of compressed data
-
-    this.strm   = new zstream();
-    this.strm.avail_out = 0;
-
-    let status  = inflate_1$2.inflateInit2(
-      this.strm,
-      opt.windowBits
-    );
-
-    if (status !== Z_OK) {
-      throw new Error(messages[status]);
-    }
-
-    this.header = new gzheader();
-
-    inflate_1$2.inflateGetHeader(this.strm, this.header);
-
-    // Setup dictionary
-    if (opt.dictionary) {
-      // Convert data if needed
-      if (typeof opt.dictionary === 'string') {
-        opt.dictionary = strings.string2buf(opt.dictionary);
-      } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
-        opt.dictionary = new Uint8Array(opt.dictionary);
-      }
-      if (opt.raw) { //In raw mode we need to set the dictionary early
-        status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);
-        if (status !== Z_OK) {
-          throw new Error(messages[status]);
-        }
-      }
-    }
-  }
-
-  /**
-   * Inflate#push(data[, flush_mode]) -> Boolean
-   * - data (Uint8Array|ArrayBuffer): input data
-   * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE
-   *   flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,
-   *   `true` means Z_FINISH.
-   *
-   * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
-   * new output chunks. Returns `true` on success. If end of stream detected,
-   * [[Inflate#onEnd]] will be called.
-   *
-   * `flush_mode` is not needed for normal operation, because end of stream
-   * detected automatically. You may try to use it for advanced things, but
-   * this functionality was not tested.
-   *
-   * On fail call [[Inflate#onEnd]] with error code and return false.
-   *
-   * ##### Example
-   *
-   * ```javascript
-   * push(chunk, false); // push one of data chunks
-   * ...
-   * push(chunk, true);  // push last chunk
-   * ```
-   **/
-  Inflate$1.prototype.push = function (data, flush_mode) {
-    const strm = this.strm;
-    const chunkSize = this.options.chunkSize;
-    const dictionary = this.options.dictionary;
-    let status, _flush_mode, last_avail_out;
-
-    if (this.ended) return false;
-
-    if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;
-    else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;
-
-    // Convert data if needed
-    if (toString.call(data) === '[object ArrayBuffer]') {
-      strm.input = new Uint8Array(data);
-    } else {
-      strm.input = data;
-    }
-
-    strm.next_in = 0;
-    strm.avail_in = strm.input.length;
-
-    for (;;) {
-      if (strm.avail_out === 0) {
-        strm.output = new Uint8Array(chunkSize);
-        strm.next_out = 0;
-        strm.avail_out = chunkSize;
-      }
-
-      status = inflate_1$2.inflate(strm, _flush_mode);
-
-      if (status === Z_NEED_DICT && dictionary) {
-        status = inflate_1$2.inflateSetDictionary(strm, dictionary);
-
-        if (status === Z_OK) {
-          status = inflate_1$2.inflate(strm, _flush_mode);
-        } else if (status === Z_DATA_ERROR) {
-          // Replace code with more verbose
-          status = Z_NEED_DICT;
-        }
-      }
-
-      // Skip snyc markers if more data follows and not raw mode
-      while (strm.avail_in > 0 &&
-             status === Z_STREAM_END &&
-             strm.state.wrap > 0 &&
-             data[strm.next_in] !== 0)
-      {
-        inflate_1$2.inflateReset(strm);
-        status = inflate_1$2.inflate(strm, _flush_mode);
-      }
-
-      switch (status) {
-        case Z_STREAM_ERROR:
-        case Z_DATA_ERROR:
-        case Z_NEED_DICT:
-        case Z_MEM_ERROR:
-          this.onEnd(status);
-          this.ended = true;
-          return false;
-      }
-
-      // Remember real `avail_out` value, because we may patch out buffer content
-      // to align utf8 strings boundaries.
-      last_avail_out = strm.avail_out;
-
-      if (strm.next_out) {
-        if (strm.avail_out === 0 || status === Z_STREAM_END) {
-
-          if (this.options.to === 'string') {
-
-            let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
-
-            let tail = strm.next_out - next_out_utf8;
-            let utf8str = strings.buf2string(strm.output, next_out_utf8);
-
-            // move tail & realign counters
-            strm.next_out = tail;
-            strm.avail_out = chunkSize - tail;
-            if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);
-
-            this.onData(utf8str);
-
-          } else {
-            this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));
-          }
-        }
-      }
-
-      // Must repeat iteration if out buffer is full
-      if (status === Z_OK && last_avail_out === 0) continue;
-
-      // Finalize if end of stream reached.
-      if (status === Z_STREAM_END) {
-        status = inflate_1$2.inflateEnd(this.strm);
-        this.onEnd(status);
-        this.ended = true;
-        return true;
-      }
-
-      if (strm.avail_in === 0) break;
-    }
-
-    return true;
-  };
-
-
-  /**
-   * Inflate#onData(chunk) -> Void
-   * - chunk (Uint8Array|String): output data. When string output requested,
-   *   each chunk will be string.
-   *
-   * By default, stores data blocks in `chunks[]` property and glue
-   * those in `onEnd`. Override this handler, if you need another behaviour.
-   **/
-  Inflate$1.prototype.onData = function (chunk) {
-    this.chunks.push(chunk);
-  };
-
-
-  /**
-   * Inflate#onEnd(status) -> Void
-   * - status (Number): inflate status. 0 (Z_OK) on success,
-   *   other if not.
-   *
-   * Called either after you tell inflate that the input stream is
-   * complete (Z_FINISH). By default - join collected chunks,
-   * free memory and fill `results` / `err` properties.
-   **/
-  Inflate$1.prototype.onEnd = function (status) {
-    // On success - join
-    if (status === Z_OK) {
-      if (this.options.to === 'string') {
-        this.result = this.chunks.join('');
-      } else {
-        this.result = common.flattenChunks(this.chunks);
-      }
-    }
-    this.chunks = [];
-    this.err = status;
-    this.msg = this.strm.msg;
-  };
-
-
-  /**
-   * inflate(data[, options]) -> Uint8Array|String
-   * - data (Uint8Array|ArrayBuffer): input data to decompress.
-   * - options (Object): zlib inflate options.
-   *
-   * Decompress `data` with inflate/ungzip and `options`. Autodetect
-   * format via wrapper header by default. That's why we don't provide
-   * separate `ungzip` method.
-   *
-   * Supported options are:
-   *
-   * - windowBits
-   *
-   * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
-   * for more information.
-   *
-   * Sugar (options):
-   *
-   * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
-   *   negative windowBits implicitly.
-   * - `to` (String) - if equal to 'string', then result will be converted
-   *   from utf8 to utf16 (javascript) string. When string output requested,
-   *   chunk length can differ from `chunkSize`, depending on content.
-   *
-   *
-   * ##### Example:
-   *
-   * ```javascript
-   * const pako = require('pako');
-   * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));
-   * let output;
-   *
-   * try {
-   *   output = pako.inflate(input);
-   * } catch (err) {
-   *   console.log(err);
-   * }
-   * ```
-   **/
-  function inflate$1(input, options) {
-    const inflator = new Inflate$1(options);
-
-    inflator.push(input);
-
-    // That will never happens, if you don't cheat with options :)
-    if (inflator.err) throw inflator.msg || messages[inflator.err];
-
-    return inflator.result;
-  }
-
-
-  /**
-   * inflateRaw(data[, options]) -> Uint8Array|String
-   * - data (Uint8Array|ArrayBuffer): input data to decompress.
-   * - options (Object): zlib inflate options.
-   *
-   * The same as [[inflate]], but creates raw data, without wrapper
-   * (header and adler32 crc).
-   **/
-  function inflateRaw$1(input, options) {
-    options = options || {};
-    options.raw = true;
-    return inflate$1(input, options);
-  }
-
-
-  /**
-   * ungzip(data[, options]) -> Uint8Array|String
-   * - data (Uint8Array|ArrayBuffer): input data to decompress.
-   * - options (Object): zlib inflate options.
-   *
-   * Just shortcut to [[inflate]], because it autodetects format
-   * by header.content. Done for convenience.
-   **/
-
-
-  var Inflate_1$1 = Inflate$1;
-  var inflate_2 = inflate$1;
-  var inflateRaw_1$1 = inflateRaw$1;
-  var ungzip$1 = inflate$1;
-  var constants = constants$2;
-
-  var inflate_1$1 = {
-  	Inflate: Inflate_1$1,
-  	inflate: inflate_2,
-  	inflateRaw: inflateRaw_1$1,
-  	ungzip: ungzip$1,
-  	constants: constants
-  };
-
-  const { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;
-
-  const { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;
-
-
-
-  var Deflate_1 = Deflate;
-  var deflate_1 = deflate;
-  var deflateRaw_1 = deflateRaw;
-  var gzip_1 = gzip;
-  var Inflate_1 = Inflate;
-  var inflate_1 = inflate;
-  var inflateRaw_1 = inflateRaw;
-  var ungzip_1 = ungzip;
-  var constants_1 = constants$2;
-
-  var pako = {
-  	Deflate: Deflate_1,
-  	deflate: deflate_1,
-  	deflateRaw: deflateRaw_1,
-  	gzip: gzip_1,
-  	Inflate: Inflate_1,
-  	inflate: inflate_1,
-  	inflateRaw: inflateRaw_1,
-  	ungzip: ungzip_1,
-  	constants: constants_1
-  };
-
-  exports.Deflate = Deflate_1;
-  exports.Inflate = Inflate_1;
-  exports.constants = constants_1;
-  exports["default"] = pako;
-  exports.deflate = deflate_1;
-  exports.deflateRaw = deflateRaw_1;
-  exports.gzip = gzip_1;
-  exports.inflate = inflate_1;
-  exports.inflateRaw = inflateRaw_1;
-  exports.ungzip = ungzip_1;
-
-  Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
diff --git a/archived/http-root/res/bulma.min.css b/archived/http-root/res/bulma.min.css
deleted file mode 100644
index 1c274b2abdcf98f8f7285d526b66f1af9a62680b..0000000000000000000000000000000000000000
--- a/archived/http-root/res/bulma.min.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! bulma.io v0.6.2 | MIT License | github.com/jgthms/bulma */
-/*! minireset.css v0.0.2 | MIT License | github.com/jgthms/minireset.css */
-@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{-webkit-box-sizing:border-box;box-sizing:border-box}*{-webkit-box-sizing:inherit;box-sizing:inherit}*:after,*:before{-webkit-box-sizing:inherit;box-sizing:inherit}audio,embed,img,object,video{max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0;text-align:left}html{background-color:white;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1rem;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:whitesmoke;color:#ff3860;font-size:0.875em;font-weight:normal;padding:0.25em 0.5em}hr{background-color:#dbdbdb;border:none;display:block;height:1px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:0.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}pre{-webkit-overflow-scrolling:touch;background-color:whitesmoke;color:#4a4a4a;font-size:0.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{text-align:left;vertical-align:top}table th{color:#363636}.is-clearfix:after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-clipped{overflow:hidden !important}.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7{font-size:0.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:0.75rem !important}}@media screen and (min-width: 769px), print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:0.75rem !important}}@media screen and (max-width: 1023px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:0.75rem !important}}@media screen and (min-width: 1024px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:0.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:0.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:0.75rem !important}}.has-text-centered{text-align:center !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px), print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1023px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1024px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}.has-text-justified{text-align:justify !important}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px), print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1023px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1024px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}.has-text-left{text-align:left !important}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px), print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1023px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1024px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px), print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1023px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.has-text-white{color:white !important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6 !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:focus,a.has-text-black:hover{color:black !important}.has-text-light{color:whitesmoke !important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb !important}.has-text-dark{color:#363636 !important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c !important}.has-text-primary{color:#00d1b2 !important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86 !important}.has-text-link{color:#3273dc !important}a.has-text-link:focus,a.has-text-link:hover{color:#205bbc !important}.has-text-info{color:#209cee !important}a.has-text-info:focus,a.has-text-info:hover{color:#0f81cc !important}.has-text-success{color:#23d160 !important}a.has-text-success:focus,a.has-text-success:hover{color:#1ca64c !important}.has-text-warning{color:#ffdd57 !important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd324 !important}.has-text-danger{color:#ff3860 !important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ff0537 !important}.has-text-black-bis{color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-text-grey{color:#7a7a7a !important}.has-text-grey-light{color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-text-white-ter{color:whitesmoke !important}.has-text-white-bis{color:#fafafa !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px), print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1023px){.is-block-touch{display:block !important}}@media screen and (min-width: 1024px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 769px), print{.is-flex-tablet{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-flex-tablet-only{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (max-width: 1023px){.is-flex-touch{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 1024px){.is-flex-desktop{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-flex-desktop-only{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px), print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1023px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1024px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px), print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1023px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1024px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 769px), print{.is-inline-flex-tablet{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-flex-tablet-only{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (max-width: 1023px){.is-inline-flex-touch{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 1024px){.is-inline-flex-desktop{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.is-hidden{display:none !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px), print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1023px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px), print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1023px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1024px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-radiusless{border-radius:0 !important}.is-shadowless{-webkit-box-shadow:none !important;box-shadow:none !important}.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.box{background-color:white;border-radius:5px;-webkit-box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);color:#4a4a4a;display:block;padding:1.25rem}.box:not(:last-child){margin-bottom:1.5rem}a.box:focus,a.box:hover{-webkit-box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #3273dc;box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #3273dc}a.box:active{-webkit-box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #3273dc;box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #3273dc}.button{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(0.375em - 1px) calc(0.625em - 1px);position:relative;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:white;border-color:#dbdbdb;color:#363636;cursor:pointer;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0.75em;padding-right:0.75em;text-align:center;white-space:nowrap}.button.is-active,.button.is-focused,.button:active,.button:focus{outline:none}.button[disabled]{cursor:not-allowed}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.375em - 1px);margin-right:0.1875em}.button .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:calc(-0.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.375em - 1px);margin-right:calc(-0.375em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#363636}.button.is-focused,.button:focus{border-color:#3273dc;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:whitesmoke;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled]{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-white{background-color:white;border-color:transparent;color:#0a0a0a}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25);box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled]{background-color:white;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:white}.button.is-white.is-inverted:hover{background-color:black}.button.is-white.is-inverted[disabled]{background-color:#0a0a0a;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:white}.button.is-white.is-loading:after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:white;color:white}.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:white;border-color:white;color:#0a0a0a}.button.is-white.is-outlined.is-loading:after{border-color:transparent transparent white white !important}.button.is-white.is-outlined[disabled]{background-color:transparent;border-color:white;-webkit-box-shadow:none;box-shadow:none;color:white}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#0a0a0a;color:white}.button.is-white.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#0a0a0a;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:white}.button.is-black.is-hovered,.button.is-black:hover{background-color:#040404;border-color:transparent;color:white}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:white}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25);box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25)}.button.is-black.is-active,.button.is-black:active{background-color:black;border-color:transparent;color:white}.button.is-black[disabled]{background-color:#0a0a0a;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-black.is-inverted{background-color:white;color:#0a0a0a}.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled]{background-color:white;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading:after{border-color:transparent transparent white white !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:white}.button.is-black.is-outlined.is-loading:after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined[disabled]{background-color:transparent;border-color:#0a0a0a;-webkit-box-shadow:none;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:white;color:white}.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:white;color:#0a0a0a}.button.is-black.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:white;-webkit-box-shadow:none;box-shadow:none;color:white}.button.is-light{background-color:whitesmoke;border-color:transparent;color:#363636}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eeeeee;border-color:transparent;color:#363636}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:#363636}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25);box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:#363636}.button.is-light[disabled]{background-color:whitesmoke;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-light.is-inverted{background-color:#363636;color:whitesmoke}.button.is-light.is-inverted:hover{background-color:#292929}.button.is-light.is-inverted[disabled]{background-color:#363636;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:whitesmoke}.button.is-light.is-loading:after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined{background-color:transparent;border-color:whitesmoke;color:whitesmoke}.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:whitesmoke;border-color:whitesmoke;color:#363636}.button.is-light.is-outlined.is-loading:after{border-color:transparent transparent whitesmoke whitesmoke !important}.button.is-light.is-outlined[disabled]{background-color:transparent;border-color:whitesmoke;-webkit-box-shadow:none;box-shadow:none;color:whitesmoke}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:#363636;color:whitesmoke}.button.is-light.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#363636;-webkit-box-shadow:none;box-shadow:none;color:#363636}.button.is-dark{background-color:#363636;border-color:transparent;color:whitesmoke}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:whitesmoke}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:whitesmoke}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25);box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:whitesmoke}.button.is-dark[disabled]{background-color:#363636;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-dark.is-inverted{background-color:whitesmoke;color:#363636}.button.is-dark.is-inverted:hover{background-color:#e8e8e8}.button.is-dark.is-inverted[disabled]{background-color:whitesmoke;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#363636}.button.is-dark.is-loading:after{border-color:transparent transparent whitesmoke whitesmoke !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:whitesmoke}.button.is-dark.is-outlined.is-loading:after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined[disabled]{background-color:transparent;border-color:#363636;-webkit-box-shadow:none;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:whitesmoke;color:whitesmoke}.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:whitesmoke;color:#363636}.button.is-dark.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:whitesmoke;-webkit-box-shadow:none;box-shadow:none;color:whitesmoke}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25);box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled]{background-color:#00d1b2;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled]{background-color:#fff;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading:after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-outlined[disabled]{background-color:transparent;border-color:#00d1b2;-webkit-box-shadow:none;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#fff;-webkit-box-shadow:none;box-shadow:none;color:#fff}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#276cda;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.button.is-link[disabled]{background-color:#3273dc;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#3273dc}.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled]{background-color:#fff;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#3273dc}.button.is-link.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;color:#3273dc}.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#3273dc;border-color:#3273dc;color:#fff}.button.is-link.is-outlined.is-loading:after{border-color:transparent transparent #3273dc #3273dc !important}.button.is-link.is-outlined[disabled]{background-color:transparent;border-color:#3273dc;-webkit-box-shadow:none;box-shadow:none;color:#3273dc}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#fff;-webkit-box-shadow:none;box-shadow:none;color:#fff}.button.is-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#1496ed;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25);box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25)}.button.is-info.is-active,.button.is-info:active{background-color:#118fe4;border-color:transparent;color:#fff}.button.is-info[disabled]{background-color:#209cee;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled]{background-color:#fff;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#209cee}.button.is-info.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading:after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-outlined[disabled]{background-color:transparent;border-color:#209cee;-webkit-box-shadow:none;box-shadow:none;color:#209cee}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#209cee}.button.is-info.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#fff;-webkit-box-shadow:none;box-shadow:none;color:#fff}.button.is-success{background-color:#23d160;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#22c65b;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25);box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25)}.button.is-success.is-active,.button.is-success:active{background-color:#20bc56;border-color:transparent;color:#fff}.button.is-success[disabled]{background-color:#23d160;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#23d160}.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled]{background-color:#fff;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#23d160}.button.is-success.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#23d160;color:#23d160}.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#23d160;border-color:#23d160;color:#fff}.button.is-success.is-outlined.is-loading:after{border-color:transparent transparent #23d160 #23d160 !important}.button.is-success.is-outlined[disabled]{background-color:transparent;border-color:#23d160;-webkit-box-shadow:none;box-shadow:none;color:#23d160}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#23d160}.button.is-success.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#fff;-webkit-box-shadow:none;box-shadow:none;color:#fff}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdb4a;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25);box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd83d;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.button.is-warning[disabled]{background-color:#ffdd57;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0, 0, 0, 0.7);color:#ffdd57}.button.is-warning.is-inverted:hover{background-color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-inverted[disabled]{background-color:rgba(0, 0, 0, 0.7);border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading:after{border-color:transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-outlined.is-loading:after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-outlined[disabled]{background-color:transparent;border-color:#ffdd57;-webkit-box-shadow:none;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0, 0, 0, 0.7);color:rgba(0, 0, 0, 0.7)}.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0, 0, 0, 0.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:rgba(0, 0, 0, 0.7);-webkit-box-shadow:none;box-shadow:none;color:rgba(0, 0, 0, 0.7)}.button.is-danger{background-color:#ff3860;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#ff2b56;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){-webkit-box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25);box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ff1f4b;border-color:transparent;color:#fff}.button.is-danger[disabled]{background-color:#ff3860;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#ff3860}.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled]{background-color:#fff;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#ff3860}.button.is-danger.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#ff3860;color:#ff3860}.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#ff3860;border-color:#ff3860;color:#fff}.button.is-danger.is-outlined.is-loading:after{border-color:transparent transparent #ff3860 #ff3860 !important}.button.is-danger.is-outlined[disabled]{background-color:transparent;border-color:#ff3860;-webkit-box-shadow:none;box-shadow:none;color:#ff3860}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#ff3860}.button.is-danger.is-inverted.is-outlined[disabled]{background-color:transparent;border-color:#fff;-webkit-box-shadow:none;box-shadow:none;color:#fff}.button.is-small{border-radius:2px;font-size:0.75rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled]{background-color:white;border-color:#dbdbdb;-webkit-box-shadow:none;box-shadow:none;opacity:0.5}.button.is-fullwidth{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading:after{-webkit-animation:spinAround 500ms infinite linear;animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute !important}.button.is-static{background-color:whitesmoke;border-color:#dbdbdb;color:#7a7a7a;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:1em;padding-right:1em}.buttons{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child){margin-right:0.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.buttons.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.container{margin:0 auto;position:relative}@media screen and (min-width: 1024px){.container{max-width:960px;width:960px}.container.is-fluid{margin-left:32px;margin-right:32px;max-width:none;width:auto}}@media screen and (max-width: 1215px){.container.is-widescreen{max-width:1152px;width:auto}}@media screen and (max-width: 1407px){.container.is-fullhd{max-width:1344px;width:auto}}@media screen and (min-width: 1216px){.container{max-width:1152px;width:1152px}}@media screen and (min-width: 1408px){.container{max-width:1344px;width:1344px}}.content:not(:last-child){margin-bottom:1.5rem}.content li + li{margin-top:0.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:400;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:whitesmoke;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style:decimal outside;margin-left:2em;margin-top:1em}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#363636;text-align:left}.content table tr:hover{background-color:whitesmoke}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content.is-small{font-size:0.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.input,.textarea{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(0.375em - 1px) calc(0.625em - 1px);position:relative;vertical-align:top;background-color:white;border-color:#dbdbdb;color:#363636;-webkit-box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.1);box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.1);max-width:100%;width:100%}.input.is-active,.input.is-focused,.input:active,.input:focus,.textarea.is-active,.textarea.is-focused,.textarea:active,.textarea:focus{outline:none}.input[disabled],.textarea[disabled]{cursor:not-allowed}.input::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54, 54, 54, 0.3)}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54, 54, 54, 0.3)}.input:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54, 54, 54, 0.3)}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54, 54, 54, 0.3)}.input.is-hovered,.input:hover,.textarea.is-hovered,.textarea:hover{border-color:#b5b5b5}.input.is-active,.input.is-focused,.input:active,.input:focus,.textarea.is-active,.textarea.is-focused,.textarea:active,.textarea:focus{border-color:#3273dc;-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.input[disabled],.textarea[disabled]{background-color:whitesmoke;border-color:whitesmoke;-webkit-box-shadow:none;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder{color:rgba(122, 122, 122, 0.3)}.input[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder{color:rgba(122, 122, 122, 0.3)}.input[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder{color:rgba(122, 122, 122, 0.3)}.input[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder{color:rgba(122, 122, 122, 0.3)}.input[readonly],.textarea[readonly]{-webkit-box-shadow:none;box-shadow:none}.input.is-white,.textarea.is-white{border-color:white}.input.is-white.is-active,.input.is-white.is-focused,.input.is-white:active,.input.is-white:focus,.textarea.is-white.is-active,.textarea.is-white.is-focused,.textarea.is-white:active,.textarea.is-white:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25);box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25)}.input.is-black,.textarea.is-black{border-color:#0a0a0a}.input.is-black.is-active,.input.is-black.is-focused,.input.is-black:active,.input.is-black:focus,.textarea.is-black.is-active,.textarea.is-black.is-focused,.textarea.is-black:active,.textarea.is-black:focus{-webkit-box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25);box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25)}.input.is-light,.textarea.is-light{border-color:whitesmoke}.input.is-light.is-active,.input.is-light.is-focused,.input.is-light:active,.input.is-light:focus,.textarea.is-light.is-active,.textarea.is-light.is-focused,.textarea.is-light:active,.textarea.is-light:focus{-webkit-box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25);box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25)}.input.is-dark,.textarea.is-dark{border-color:#363636}.input.is-dark.is-active,.input.is-dark.is-focused,.input.is-dark:active,.input.is-dark:focus,.textarea.is-dark.is-active,.textarea.is-dark.is-focused,.textarea.is-dark:active,.textarea.is-dark:focus{-webkit-box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25);box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25)}.input.is-primary,.textarea.is-primary{border-color:#00d1b2}.input.is-primary.is-active,.input.is-primary.is-focused,.input.is-primary:active,.input.is-primary:focus,.textarea.is-primary.is-active,.textarea.is-primary.is-focused,.textarea.is-primary:active,.textarea.is-primary:focus{-webkit-box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25);box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25)}.input.is-link,.textarea.is-link{border-color:#3273dc}.input.is-link.is-active,.input.is-link.is-focused,.input.is-link:active,.input.is-link:focus,.textarea.is-link.is-active,.textarea.is-link.is-focused,.textarea.is-link:active,.textarea.is-link:focus{-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.input.is-info,.textarea.is-info{border-color:#209cee}.input.is-info.is-active,.input.is-info.is-focused,.input.is-info:active,.input.is-info:focus,.textarea.is-info.is-active,.textarea.is-info.is-focused,.textarea.is-info:active,.textarea.is-info:focus{-webkit-box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25);box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25)}.input.is-success,.textarea.is-success{border-color:#23d160}.input.is-success.is-active,.input.is-success.is-focused,.input.is-success:active,.input.is-success:focus,.textarea.is-success.is-active,.textarea.is-success.is-focused,.textarea.is-success:active,.textarea.is-success:focus{-webkit-box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25);box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25)}.input.is-warning,.textarea.is-warning{border-color:#ffdd57}.input.is-warning.is-active,.input.is-warning.is-focused,.input.is-warning:active,.input.is-warning:focus,.textarea.is-warning.is-active,.textarea.is-warning.is-focused,.textarea.is-warning:active,.textarea.is-warning:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25);box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25)}.input.is-danger,.textarea.is-danger{border-color:#ff3860}.input.is-danger.is-active,.input.is-danger.is-focused,.input.is-danger:active,.input.is-danger:focus,.textarea.is-danger.is-active,.textarea.is-danger.is-focused,.textarea.is-danger:active,.textarea.is-danger:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25);box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25)}.input.is-small,.textarea.is-small{border-radius:2px;font-size:0.75rem}.input.is-medium,.textarea.is-medium{font-size:1.25rem}.input.is-large,.textarea.is-large{font-size:1.5rem}.input.is-fullwidth,.textarea.is-fullwidth{display:block;width:100%}.input.is-inline,.textarea.is-inline{display:inline;width:auto}.input.is-rounded{border-radius:290486px;padding-left:1em;padding-right:1em}.input.is-static{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:0.625em;resize:vertical}.textarea:not([rows]){max-height:600px;min-height:120px}.textarea[rows]{height:unset}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox[disabled],.radio[disabled]{color:#7a7a7a;cursor:not-allowed}.radio + .radio{margin-left:0.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.25em}.select:not(.is-multiple)::after{border:1px solid #3273dc;border-right:0;border-top:0;content:" ";display:block;height:0.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:center;transform-origin:center;width:0.5em;margin-top:-0.375em;right:1.125em;top:50%;z-index:4}.select.is-rounded select{border-radius:290486px;padding-left:1em}.select select{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(0.375em - 1px) calc(0.625em - 1px);position:relative;vertical-align:top;background-color:white;border-color:#dbdbdb;color:#363636;cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select.is-active,.select select.is-focused,.select select:active,.select select:focus{outline:none}.select select[disabled]{cursor:not-allowed}.select select::-moz-placeholder{color:rgba(54, 54, 54, 0.3)}.select select::-webkit-input-placeholder{color:rgba(54, 54, 54, 0.3)}.select select:-moz-placeholder{color:rgba(54, 54, 54, 0.3)}.select select:-ms-input-placeholder{color:rgba(54, 54, 54, 0.3)}.select select.is-hovered,.select select:hover{border-color:#b5b5b5}.select select.is-active,.select select.is-focused,.select select:active,.select select:focus{border-color:#3273dc;-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.select select[disabled]{background-color:whitesmoke;border-color:whitesmoke;-webkit-box-shadow:none;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder{color:rgba(122, 122, 122, 0.3)}.select select[disabled]::-webkit-input-placeholder{color:rgba(122, 122, 122, 0.3)}.select select[disabled]:-moz-placeholder{color:rgba(122, 122, 122, 0.3)}.select select[disabled]:-ms-input-placeholder{color:rgba(122, 122, 122, 0.3)}.select select::-ms-expand{display:none}.select select[disabled]:hover{border-color:whitesmoke}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:unset;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:hover::after{border-color:#363636}.select.is-white select{border-color:white}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25);box-shadow:0 0 0 0.125em rgba(255, 255, 255, 0.25)}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25);box-shadow:0 0 0 0.125em rgba(10, 10, 10, 0.25)}.select.is-light select{border-color:whitesmoke}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25);box-shadow:0 0 0 0.125em rgba(245, 245, 245, 0.25)}.select.is-dark select{border-color:#363636}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25);box-shadow:0 0 0 0.125em rgba(54, 54, 54, 0.25)}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25);box-shadow:0 0 0 0.125em rgba(0, 209, 178, 0.25)}.select.is-link select{border-color:#3273dc}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25);box-shadow:0 0 0 0.125em rgba(50, 115, 220, 0.25)}.select.is-info select{border-color:#209cee}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25);box-shadow:0 0 0 0.125em rgba(32, 156, 238, 0.25)}.select.is-success select{border-color:#23d160}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25);box-shadow:0 0 0 0.125em rgba(35, 209, 96, 0.25)}.select.is-warning select{border-color:#ffdd57}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25);box-shadow:0 0 0 0.125em rgba(255, 221, 87, 0.25)}.select.is-danger select{border-color:#ff3860}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{-webkit-box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25);box-shadow:0 0 0 0.125em rgba(255, 56, 96, 0.25)}.select.is-small{border-radius:2px;font-size:0.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{-webkit-animation:spinAround 500ms infinite linear;animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;margin-top:0;position:absolute;right:0.625em;top:0.625em;-webkit-transform:none;transform:none}.select.is-loading.is-small:after{font-size:0.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:white;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(255, 255, 255, 0.25);box-shadow:0 0 0.5em rgba(255, 255, 255, 0.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:white}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:white}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(10, 10, 10, 0.25);box-shadow:0 0 0.5em rgba(10, 10, 10, 0.25);color:white}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:black;border-color:transparent;color:white}.file.is-light .file-cta{background-color:whitesmoke;border-color:transparent;color:#363636}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eeeeee;border-color:transparent;color:#363636}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(245, 245, 245, 0.25);box-shadow:0 0 0.5em rgba(245, 245, 245, 0.25);color:#363636}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:#363636}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:whitesmoke}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:whitesmoke}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(54, 54, 54, 0.25);box-shadow:0 0 0.5em rgba(54, 54, 54, 0.25);color:whitesmoke}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:whitesmoke}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(0, 209, 178, 0.25);box-shadow:0 0 0.5em rgba(0, 209, 178, 0.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#3273dc;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#276cda;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(50, 115, 220, 0.25);box-shadow:0 0 0.5em rgba(50, 115, 220, 0.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#2366d1;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#1496ed;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(32, 156, 238, 0.25);box-shadow:0 0 0.5em rgba(32, 156, 238, 0.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#118fe4;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#23d160;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#22c65b;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(35, 209, 96, 0.25);box-shadow:0 0 0.5em rgba(35, 209, 96, 0.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#20bc56;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdb4a;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(255, 221, 87, 0.25);box-shadow:0 0 0.5em rgba(255, 221, 87, 0.25);color:rgba(0, 0, 0, 0.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd83d;border-color:transparent;color:rgba(0, 0, 0, 0.7)}.file.is-danger .file-cta{background-color:#ff3860;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#ff2b56;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;-webkit-box-shadow:0 0 0.5em rgba(255, 56, 96, 0.25);box-shadow:0 0 0.5em rgba(255, 56, 96, 0.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ff1f4b;border-color:transparent;color:#fff}.file.is-small{font-size:0.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:3px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.file.is-boxed .file-cta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:3px 3px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 3px 3px;border-width:0 1px 1px}.file.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:none}.file.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.file.is-right .file-cta{border-radius:0 3px 3px 0}.file.is-right .file-name{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.file-label{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eeeeee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:0.01em;left:0;outline:none;position:absolute;top:0;width:0.01em}.file-cta,.file-name{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(0.375em - 1px) calc(0.625em - 1px);position:relative;vertical-align:top;border-color:#dbdbdb;border-radius:3px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta.is-active,.file-cta.is-focused,.file-cta:active,.file-cta:focus,.file-name.is-active,.file-name.is-focused,.file-name:active,.file-name:focus{outline:none}.file-cta[disabled],.file-name[disabled]{cursor:not-allowed}.file-cta{background-color:whitesmoke;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;text-overflow:ellipsis}.file-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:1em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:0.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small{font-size:0.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:0.75rem;margin-top:0.25rem}.help.is-white{color:white}.help.is-black{color:#0a0a0a}.help.is-light{color:whitesmoke}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#3273dc}.help.is-info{color:#209cee}.help.is-success{color:#23d160}.help.is-warning{color:#ffdd57}.help.is-danger{color:#ff3860}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child .button,.field.has-addons .control:first-child .input,.field.has-addons .control:first-child .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child .button,.field.has-addons .control:last-child .input,.field.has-addons .control:last-child .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button.is-hovered,.field.has-addons .control .button:hover,.field.has-addons .control .input.is-hovered,.field.has-addons .control .input:hover,.field.has-addons .control .select select.is-hovered,.field.has-addons .control .select select:hover{z-index:2}.field.has-addons .control .button.is-active,.field.has-addons .control .button.is-focused,.field.has-addons .control .button:active,.field.has-addons .control .button:focus,.field.has-addons .control .input.is-active,.field.has-addons .control .input.is-focused,.field.has-addons .control .input:active,.field.has-addons .control .input:focus,.field.has-addons .control .select select.is-active,.field.has-addons .control .select select.is-focused,.field.has-addons .control .select select:active,.field.has-addons .control .select select:focus{z-index:3}.field.has-addons .control .button.is-active:hover,.field.has-addons .control .button.is-focused:hover,.field.has-addons .control .button:active:hover,.field.has-addons .control .button:focus:hover,.field.has-addons .control .input.is-active:hover,.field.has-addons .control .input.is-focused:hover,.field.has-addons .control .input:active:hover,.field.has-addons .control .input:focus:hover,.field.has-addons .control .select select.is-active:hover,.field.has-addons .control .select select.is-focused:hover,.field.has-addons .control .select select:active:hover,.field.has-addons .control .select select:focus:hover{z-index:4}.field.has-addons .control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.field.has-addons.has-addons-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.has-addons.has-addons-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.field.is-grouped{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.field.is-grouped > .control{-ms-flex-negative:0;flex-shrink:0}.field.is-grouped > .control:not(:last-child){margin-bottom:0;margin-right:0.75rem}.field.is-grouped > .control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.is-grouped.is-grouped-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.field.is-grouped.is-grouped-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.field.is-grouped.is-grouped-multiline > .control:last-child,.field.is-grouped.is-grouped-multiline > .control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px), print{.field.is-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px), print{.field-label{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:0.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px), print{.field-body{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:5;-ms-flex-positive:5;flex-grow:5;-ms-flex-negative:1;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body > .field{-ms-flex-negative:1;flex-shrink:1}.field-body > .field:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.field-body > .field:not(:last-child){margin-right:0.75rem}}.control{font-size:1rem;position:relative;text-align:left}.control.has-icon .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icon .input:focus + .icon{color:#7a7a7a}.control.has-icon .input.is-small + .icon{font-size:0.75rem}.control.has-icon .input.is-medium + .icon{font-size:1.25rem}.control.has-icon .input.is-large + .icon{font-size:1.5rem}.control.has-icon:not(.has-icon-right) .icon{left:0}.control.has-icon:not(.has-icon-right) .input{padding-left:2.25em}.control.has-icon.has-icon-right .icon{right:0}.control.has-icon.has-icon-right .input{padding-right:2.25em}.control.has-icons-left .input:focus ~ .icon,.control.has-icons-left .select:focus ~ .icon,.control.has-icons-right .input:focus ~ .icon,.control.has-icons-right .select:focus ~ .icon{color:#7a7a7a}.control.has-icons-left .input.is-small ~ .icon,.control.has-icons-left .select.is-small ~ .icon,.control.has-icons-right .input.is-small ~ .icon,.control.has-icons-right .select.is-small ~ .icon{font-size:0.75rem}.control.has-icons-left .input.is-medium ~ .icon,.control.has-icons-left .select.is-medium ~ .icon,.control.has-icons-right .input.is-medium ~ .icon,.control.has-icons-right .select.is-medium ~ .icon{font-size:1.25rem}.control.has-icons-left .input.is-large ~ .icon,.control.has-icons-left .select.is-large ~ .icon,.control.has-icons-right .input.is-large ~ .icon,.control.has-icons-right .select.is-large ~ .icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.25em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{-webkit-animation:spinAround 500ms infinite linear;animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;position:absolute !important;right:0.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after{font-size:0.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.image.is-16by9 img,.image.is-1by1 img,.image.is-2by1 img,.image.is-3by2 img,.image.is-4by3 img,.image.is-square img{bottom:0;left:0;position:absolute;right:0;top:0;height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:whitesmoke;border-radius:3px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification:not(:last-child){margin-bottom:1.5rem}.notification a:not(.button){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:white}.notification pre code{background:transparent}.notification > .delete{position:absolute;right:0.5rem;top:0.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:white;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:white}.notification.is-light{background-color:whitesmoke;color:#363636}.notification.is-dark{background-color:#363636;color:whitesmoke}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#23d160;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.notification.is-danger{background-color:#ff3860;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress:not(:last-child){margin-bottom:1.5rem}.progress::-webkit-progress-bar{background-color:#dbdbdb}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:white}.progress.is-white::-moz-progress-bar{background-color:white}.progress.is-white::-ms-fill{background-color:white}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-light::-webkit-progress-value{background-color:whitesmoke}.progress.is-light::-moz-progress-bar{background-color:whitesmoke}.progress.is-light::-ms-fill{background-color:whitesmoke}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-link::-webkit-progress-value{background-color:#3273dc}.progress.is-link::-moz-progress-bar{background-color:#3273dc}.progress.is-link::-ms-fill{background-color:#3273dc}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-success::-webkit-progress-value{background-color:#23d160}.progress.is-success::-moz-progress-bar{background-color:#23d160}.progress.is-success::-ms-fill{background-color:#23d160}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-danger::-webkit-progress-value{background-color:#ff3860}.progress.is-danger::-moz-progress-bar{background-color:#ff3860}.progress.is-danger::-ms-fill{background-color:#ff3860}.progress.is-small{height:0.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}.table{background-color:white;color:#363636;margin-bottom:1.5rem}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:white;border-color:white;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:white}.table td.is-light,.table th.is-light{background-color:whitesmoke;border-color:whitesmoke;color:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:whitesmoke}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#3273dc;border-color:#3273dc;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#23d160;border-color:#23d160;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.table td.is-danger,.table th.is-danger{background-color:#ff3860;border-color:#ff3860;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table th{color:#363636;text-align:left}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:whitesmoke}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.tags{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tags .tag{margin-bottom:0.5rem}.tags .tag:not(:last-child){margin-right:0.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tags.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tags.is-centered .tag{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tag:not(body){-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:whitesmoke;border-radius:3px;color:#4a4a4a;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:0.75rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:0.25em;margin-right:-0.375em}.tag:not(body).is-white{background-color:white;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:white}.tag:not(body).is-light{background-color:whitesmoke;color:#363636}.tag:not(body).is-dark{background-color:#363636;color:whitesmoke}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-info{background-color:#209cee;color:#fff}.tag:not(body).is-success{background-color:#23d160;color:#fff}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.tag:not(body).is-danger{background-color:#ff3860;color:#fff}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:0.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete:after,.tag:not(body).is-delete:before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.tag:not(body).is-delete:before{height:1px;width:50%}.tag:not(body).is-delete:after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:290486px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:0.75em}.subtitle sup,.title sup{font-size:0.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title + .highlight{margin-top:-0.75rem}.title:not(.is-spaced) + .subtitle{margin-top:-1.5rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:0.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced) + .title{margin-top:-1.5rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:0.75rem}.block:not(:last-child){margin-bottom:1.5rem}.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10, 10, 10, 0.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before{background-color:white;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{background-color:rgba(10, 10, 10, 0.3)}.delete:active{background-color:rgba(10, 10, 10, 0.4)}.delete.is-small{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.delete.is-medium{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.delete.is-large{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight:not(:last-child){margin-bottom:1.5rem}.highlight pre{overflow:auto;max-width:100%}.loader{-webkit-animation:spinAround 500ms infinite linear;animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.number{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:whitesmoke;border-radius:290486px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1.25rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.breadcrumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;overflow:hidden;overflow-x:auto;white-space:nowrap}.breadcrumb:not(:last-child){margin-bottom:1.5rem}.breadcrumb a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3273dc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0.5em 0.75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li + li::before{color:#4a4a4a;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:0.5em}.breadcrumb .icon:last-child{margin-left:0.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.breadcrumb.is-small{font-size:0.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li + li::before{content:"\02192"}.breadcrumb.has-bullet-separator li + li::before{content:"\02022"}.breadcrumb.has-dot-separator li + li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li + li::before{content:"\0227B"}.card{background-color:white;-webkit-box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);color:#4a4a4a;max-width:100%;position:relative}.card-header{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-shadow:0 1px 2px rgba(10, 10, 10, 0.1);box-shadow:0 1px 2px rgba(10, 10, 10, 0.1);display:-webkit-box;display:-ms-flexbox;display:flex}.card-header-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-weight:700;padding:0.75rem}.card-header-title.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.card-header-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0.75rem}.card-image{display:block;position:relative}.card-content{padding:1.5rem}.card-footer{border-top:1px solid #dbdbdb;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex}.card-footer-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0.75rem}.card-footer-item:not(:last-child){border-right:1px solid #dbdbdb}.card .media:not(:last-child){margin-bottom:0.75rem}.dropdown{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:unset;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:white;border-radius:3px;-webkit-box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);box-shadow:0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);padding-bottom:0.5rem;padding-top:0.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item{padding-right:3rem;white-space:nowrap}a.dropdown-item:hover{background-color:whitesmoke;color:#0a0a0a}a.dropdown-item.is-active{background-color:#3273dc;color:#fff}.dropdown-divider{background-color:#dbdbdb;border:none;display:block;height:1px;margin:0.5rem 0}.level{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.level:not(:last-child){margin-bottom:1.5rem}.level code{border-radius:3px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left + .level-right{margin-top:0}.level.is-mobile .level-item{margin-right:0.75rem}.level.is-mobile .level-item:not(:last-child){margin-bottom:0}.level.is-mobile .level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width: 769px), print{.level{display:-webkit-box;display:-ms-flexbox;display:flex}.level > .level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}}.level-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:0.75rem}}.level-left,.level-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width: 769px), print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:0.75rem}}.level-left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width: 768px){.level-left + .level-right{margin-top:1.5rem}}@media screen and (min-width: 769px), print{.level-left{display:-webkit-box;display:-ms-flexbox;display:flex}}.level-right{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 769px), print{.level-right{display:-webkit-box;display:-ms-flexbox;display:flex}}.media{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:0.75rem}.media .media{border-top:1px solid rgba(219, 219, 219, 0.5);display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:0.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:0.5rem}.media .media .media{padding-top:0.5rem}.media .media .media + .media{margin-top:0.5rem}.media + .media{border-top:1px solid rgba(219, 219, 219, 0.5);margin-top:1rem;padding-top:1rem}.media.is-large + .media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:auto;text-align:left}.menu{font-size:1rem}.menu.is-small{font-size:0.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:whitesmoke;color:#363636}.menu-list a.is-active{background-color:#3273dc;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:0.75em;padding-left:0.75em}.menu-label{color:#7a7a7a;font-size:0.75em;letter-spacing:0.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:whitesmoke;border-radius:3px;font-size:1rem}.message:not(:last-child){margin-bottom:1.5rem}.message strong{color:currentColor}.message a:not(.button):not(.tag){color:currentColor;text-decoration:underline}.message.is-small{font-size:0.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:white}.message.is-white .message-header{background-color:white;color:#0a0a0a}.message.is-white .message-body{border-color:white;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:white}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:whitesmoke;color:#363636}.message.is-light .message-body{border-color:whitesmoke;color:#505050}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:whitesmoke}.message.is-dark .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary{background-color:#f5fffd}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#021310}.message.is-link{background-color:#f6f9fe}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#22509a}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537e}.message.is-success{background-color:#f6fef9}.message.is-success .message-header{background-color:#23d160;color:#fff}.message.is-success .message-body{border-color:#23d160;color:#0e301a}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3b3108}.message.is-danger{background-color:#fff5f7}.message.is-danger .message-header{background-color:#ff3860;color:#fff}.message.is-danger .message-body{border-color:#ff3860;color:#cd0930}.message-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#4a4a4a;border-radius:3px 3px 0 0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1.25;padding:0.5em 0.75em;position:relative}.message-header .delete{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;margin-left:0.75em}.message-header + .message-body{border-top-left-radius:0;border-top-right-radius:0;border-top:none}.message-body{border:1px solid #dbdbdb;border-radius:3px;color:#4a4a4a;padding:1em 1.25em}.message-body code,.message-body pre{background-color:white}.message-body pre code{background-color:transparent}.modal{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.modal-background{bottom:0;left:0;position:absolute;right:0;top:0;background-color:rgba(10, 10, 10, 0.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px), print{.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10, 10, 10, 0.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px;background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-close:after,.modal-close:before{background-color:white;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:focus,.modal-close:hover{background-color:rgba(10, 10, 10, 0.3)}.modal-close:active{background-color:rgba(10, 10, 10, 0.4)}.modal-close.is-small{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.modal-close.is-medium{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.modal-close.is-large{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.modal-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden}.modal-card-foot,.modal-card-head{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:whitesmoke;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:5px;border-top-right-radius:5px}.modal-card-title{color:#363636;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:10px}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:white;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:white;min-height:3.25rem;position:relative}.navbar.is-white{background-color:white;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand > .navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand > a.navbar-item.is-active,.navbar.is-white .navbar-brand > a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}@media screen and (min-width: 1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end > .navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start > .navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end > a.navbar-item.is-active,.navbar.is-white .navbar-end > a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start > a.navbar-item.is-active,.navbar.is-white .navbar-start > a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:white;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:white}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand > .navbar-item{color:white}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand > a.navbar-item.is-active,.navbar.is-black .navbar-brand > a.navbar-item:hover{background-color:black;color:white}.navbar.is-black .navbar-brand .navbar-link::after{border-color:white}@media screen and (min-width: 1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end > .navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start > .navbar-item{color:white}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end > a.navbar-item.is-active,.navbar.is-black .navbar-end > a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start > a.navbar-item.is-active,.navbar.is-black .navbar-start > a.navbar-item:hover{background-color:black;color:white}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:white}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:black;color:white}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:white}}.navbar.is-light{background-color:whitesmoke;color:#363636}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand > .navbar-item{color:#363636}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand > a.navbar-item.is-active,.navbar.is-light .navbar-brand > a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#363636}@media screen and (min-width: 1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end > .navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start > .navbar-item{color:#363636}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end > a.navbar-item.is-active,.navbar.is-light .navbar-end > a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start > a.navbar-item.is-active,.navbar.is-light .navbar-start > a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:whitesmoke;color:#363636}}.navbar.is-dark{background-color:#363636;color:whitesmoke}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand > .navbar-item{color:whitesmoke}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand > a.navbar-item.is-active,.navbar.is-dark .navbar-brand > a.navbar-item:hover{background-color:#292929;color:whitesmoke}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:whitesmoke}@media screen and (min-width: 1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end > .navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start > .navbar-item{color:whitesmoke}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end > a.navbar-item.is-active,.navbar.is-dark .navbar-end > a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start > a.navbar-item.is-active,.navbar.is-dark .navbar-start > a.navbar-item:hover{background-color:#292929;color:whitesmoke}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:whitesmoke}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:whitesmoke}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:whitesmoke}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand > .navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand > a.navbar-item.is-active,.navbar.is-primary .navbar-brand > a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width: 1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end > .navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start > .navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end > a.navbar-item.is-active,.navbar.is-primary .navbar-end > a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start > a.navbar-item.is-active,.navbar.is-primary .navbar-start > a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand > .navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand > a.navbar-item.is-active,.navbar.is-link .navbar-brand > a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width: 1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end > .navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start > .navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end > a.navbar-item.is-active,.navbar.is-link .navbar-end > a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start > a.navbar-item.is-active,.navbar.is-link .navbar-start > a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#3273dc;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand > .navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand > a.navbar-item.is-active,.navbar.is-info .navbar-brand > a.navbar-item:hover{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width: 1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end > .navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start > .navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end > a.navbar-item.is-active,.navbar.is-info .navbar-end > a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start > a.navbar-item.is-active,.navbar.is-info .navbar-start > a.navbar-item:hover{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#23d160;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand > .navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand > a.navbar-item.is-active,.navbar.is-success .navbar-brand > a.navbar-item:hover{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width: 1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end > .navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start > .navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end > a.navbar-item.is-active,.navbar.is-success .navbar-end > a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start > a.navbar-item.is-active,.navbar.is-success .navbar-start > a.navbar-item:hover{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#23d160;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand > .navbar-item{color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand > a.navbar-item.is-active,.navbar.is-warning .navbar-brand > a.navbar-item:hover{background-color:#ffd83d;color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0, 0, 0, 0.7)}@media screen and (min-width: 1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end > .navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start > .navbar-item{color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end > a.navbar-item.is-active,.navbar.is-warning .navbar-end > a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start > a.navbar-item.is-active,.navbar.is-warning .navbar-start > a.navbar-item:hover{background-color:#ffd83d;color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd83d;color:rgba(0, 0, 0, 0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}}.navbar.is-danger{background-color:#ff3860;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand > .navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand > a.navbar-item.is-active,.navbar.is-danger .navbar-brand > a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width: 1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end > .navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start > .navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end > a.navbar-item.is-active,.navbar.is-danger .navbar-end > a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start > a.navbar-item.is-active,.navbar.is-danger .navbar-start > a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#ff3860;color:#fff}}.navbar > .container{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{-webkit-box-shadow:0 2px 3px rgba(10, 10, 10, 0.1);box-shadow:0 2px 3px rgba(10, 10, 10, 0.1)}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1);box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1)}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;min-height:3.25rem}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;-webkit-transform-origin:center;transform-origin:center;-webkit-transition-duration:86ms;transition-duration:86ms;-webkit-transition-property:background-color, opacity, -webkit-transform;transition-property:background-color, opacity, -webkit-transform;transition-property:background-color, opacity, transform;transition-property:background-color, opacity, transform, -webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0, 0, 0, 0.05)}.navbar-burger.is-active span:nth-child(1){-webkit-transform:translateY(5px) rotate(45deg);transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:translateY(-5px) rotate(-45deg);transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:0.5rem 1rem;position:relative}a.navbar-item.is-active,a.navbar-item:hover,a.navbar-link.is-active,a.navbar-link:hover{background-color:whitesmoke;color:#3273dc}.navbar-item{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#3273dc}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#3273dc;border-bottom-style:solid;border-bottom-width:3px;color:#3273dc;padding-bottom:calc(0.5rem - 3px)}.navbar-content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-link{padding-right:2.5em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#dbdbdb;border:none;display:none;height:1px;margin:0.5rem 0}@media screen and (max-width: 1023px){.navbar > .container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background-color:white;-webkit-box-shadow:0 8px 16px rgba(10, 10, 10, 0.1);box-shadow:0 8px 16px rgba(10, 10, 10, 0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1);box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-link.is-active,.navbar.is-transparent a.navbar-link:hover{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:whitesmoke;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:whitesmoke;color:#3273dc}.navbar-burger{display:none}.navbar-item,.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-item.has-dropdown{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{-webkit-transform:rotate(135deg) translate(0.25em, -0.25em);transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid #dbdbdb;border-radius:5px 5px 0 0;border-top:none;bottom:100%;-webkit-box-shadow:0 -8px 8px rgba(10, 10, 10, 0.1);box-shadow:0 -8px 8px rgba(10, 10, 10, 0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;-webkit-transform:translateY(0);transform:translateY(0)}.navbar-link::after{border:1px solid #3273dc;border-right:0;border-top:0;content:" ";display:block;height:0.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:center;transform-origin:center;width:0.5em;margin-top:-0.375em;right:1.125em;top:50%}.navbar-menu{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.navbar-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin-right:auto}.navbar-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:white;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #dbdbdb;-webkit-box-shadow:0 8px 8px rgba(10, 10, 10, 0.1);box-shadow:0 8px 8px rgba(10, 10, 10, 0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:hover{background-color:whitesmoke;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:whitesmoke;color:#3273dc}.navbar-dropdown.is-boxed{border-radius:5px;border-top:none;-webkit-box-shadow:0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);box-shadow:0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));-webkit-transform:translateY(-5px);transform:translateY(-5px);-webkit-transition-duration:86ms;transition-duration:86ms;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container > .navbar .navbar-brand,.navbar > .container .navbar-brand{margin-left:-1rem}.container > .navbar .navbar-menu,.navbar > .container .navbar-menu{margin-right:-1rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1);box-shadow:0 -2px 3px rgba(10, 10, 10, 0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}a.navbar-item.is-active,a.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:hover),a.navbar-link.is-active:not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:whitesmoke}}.pagination{font-size:1rem;margin:-0.25rem}.pagination.is-small{font-size:0.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(0.375em - 1px) calc(0.625em - 1px);position:relative;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1em;padding-left:0.5em;padding-right:0.5em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0.25rem;text-align:center}.pagination-ellipsis.is-active,.pagination-ellipsis.is-focused,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link.is-active,.pagination-link.is-focused,.pagination-link:active,.pagination-link:focus,.pagination-next.is-active,.pagination-next.is-focused,.pagination-next:active,.pagination-next:focus,.pagination-previous.is-active,.pagination-previous.is-focused,.pagination-previous:active,.pagination-previous:focus{outline:none}.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{cursor:not-allowed}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.25em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#3273dc}.pagination-link:active,.pagination-next:active,.pagination-previous:active{-webkit-box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.2);box-shadow:inset 0 1px 2px rgba(10, 10, 10, 0.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;-webkit-box-shadow:none;box-shadow:none;color:#7a7a7a;opacity:0.5}.pagination-next,.pagination-previous{padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.pagination-link.is-current{background-color:#3273dc;border-color:#3273dc;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{-ms-flex-wrap:wrap;flex-wrap:wrap}@media screen and (max-width: 768px){.pagination{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-next,.pagination-previous{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.pagination-list li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width: 769px), print{.pagination-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination-previous{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.pagination.is-centered .pagination-previous{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-centered .pagination-list{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination.is-centered .pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination.is-right .pagination-previous{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-right .pagination-next{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination.is-right .pagination-list{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}}.panel{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block,.panel-heading,.panel-tabs{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-block:first-child,.panel-heading:first-child,.panel-tabs:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:whitesmoke;border-radius:3px 3px 0 0;color:#363636;font-size:1.25em;font-weight:300;line-height:1.25;padding:0.5em 0.75em}.panel-tabs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:0.875em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#3273dc}.panel-block{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:0.75em}.panel-block > .control{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-block.is-active{border-left-color:#3273dc;color:#363636}.panel-block.is-active .panel-icon{color:#3273dc}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:whitesmoke}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:0.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs:not(:last-child){margin-bottom:1.5rem}.tabs a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#3273dc;color:#3273dc}.tabs ul{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{-webkit-box-flex:0;-ms-flex:none;flex:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:0.5em}.tabs .icon:last-child{margin-left:0.5em}.tabs.is-centered ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tabs.is-right ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:3px 3px 0 0}.tabs.is-boxed a:hover{background-color:whitesmoke;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:white;border-color:#dbdbdb;border-bottom-color:transparent !important}.tabs.is-fullwidth li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:whitesmoke;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li + li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-radius:3px 0 0 3px}.tabs.is-toggle li:last-child a{border-radius:0 3px 3px 0}.tabs.is-toggle li.is-active a{background-color:#3273dc;border-color:#3273dc;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:0.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:0.75rem}.columns.is-mobile > .column.is-narrow{-webkit-box-flex:0;-ms-flex:none;flex:none}.columns.is-mobile > .column.is-full{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile > .column.is-three-quarters{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile > .column.is-two-thirds{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.columns.is-mobile > .column.is-half{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile > .column.is-one-third{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.columns.is-mobile > .column.is-one-quarter{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile > .column.is-one-fifth{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.columns.is-mobile > .column.is-two-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.columns.is-mobile > .column.is-three-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.columns.is-mobile > .column.is-four-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.columns.is-mobile > .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile > .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile > .column.is-offset-half{margin-left:50%}.columns.is-mobile > .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile > .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile > .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile > .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile > .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile > .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile > .column.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.columns.is-mobile > .column.is-offset-1{margin-left:8.33333%}.columns.is-mobile > .column.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.columns.is-mobile > .column.is-offset-2{margin-left:16.66667%}.columns.is-mobile > .column.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile > .column.is-offset-3{margin-left:25%}.columns.is-mobile > .column.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.columns.is-mobile > .column.is-offset-4{margin-left:33.33333%}.columns.is-mobile > .column.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.columns.is-mobile > .column.is-offset-5{margin-left:41.66667%}.columns.is-mobile > .column.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile > .column.is-offset-6{margin-left:50%}.columns.is-mobile > .column.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.columns.is-mobile > .column.is-offset-7{margin-left:58.33333%}.columns.is-mobile > .column.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.columns.is-mobile > .column.is-offset-8{margin-left:66.66667%}.columns.is-mobile > .column.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile > .column.is-offset-9{margin-left:75%}.columns.is-mobile > .column.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.columns.is-mobile > .column.is-offset-10{margin-left:83.33333%}.columns.is-mobile > .column.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.columns.is-mobile > .column.is-offset-11{margin-left:91.66667%}.columns.is-mobile > .column.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile > .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-1-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px), print{.column.is-narrow,.column.is-narrow-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full,.column.is-full-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-1,.column.is-1-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1023px){.column.is-narrow-touch{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-1-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1024px){.column.is-narrow-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-1-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-1-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-1-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.columns:last-child{margin-bottom:-0.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - 0.75rem)}.columns.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless > .column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.columns.is-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.columns.is-vcentered{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (min-width: 769px), print{.columns:not(.is-desktop){display:-webkit-box;display:-ms-flexbox;display:flex}}@media screen and (min-width: 1024px){.columns.is-desktop{display:-webkit-box;display:-ms-flexbox;display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0}.columns.is-variable.is-1{--columnGap:0.25rem}.columns.is-variable.is-2{--columnGap:0.5rem}.columns.is-variable.is-3{--columnGap:0.75rem}.columns.is-variable.is-4{--columnGap:1rem}.columns.is-variable.is-5{--columnGap:1.25rem}.columns.is-variable.is-6{--columnGap:1.5rem}.columns.is-variable.is-7{--columnGap:1.75rem}.columns.is-variable.is-8{--columnGap:2rem}.tile{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.tile.is-ancestor:last-child{margin-bottom:-0.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:0.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:0.75rem}.tile.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.tile.is-vertical > .tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px), print{.tile:not(.is-child){display:-webkit-box;display:-ms-flexbox;display:flex}.tile.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.tile.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.tile.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.tile.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.tile.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.tile.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.tile.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.tile.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.tile.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.tile.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.tile.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.tile.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}}.hero{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:white;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10, 10, 10, 0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1023px){.hero.is-white .navbar-menu{background-color:white}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10, 10, 10, 0.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:white}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%)}}.hero.is-black{background-color:#0a0a0a;color:white}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag),.hero.is-black strong{color:inherit}.hero.is-black .title{color:white}.hero.is-black .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:white}@media screen and (max-width: 1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:black;color:white}.hero.is-black .tabs a{color:white;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:white}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:white;border-color:white;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:whitesmoke;color:#363636}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag),.hero.is-light strong{color:inherit}.hero.is-light .title{color:#363636}.hero.is-light .subtitle{color:rgba(54, 54, 54, 0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#363636}@media screen and (max-width: 1023px){.hero.is-light .navbar-menu{background-color:whitesmoke}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(54, 54, 54, 0.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.hero.is-light .tabs a{color:#363636;opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:#363636}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#363636;border-color:#363636;color:whitesmoke}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}}.hero.is-dark{background-color:#363636;color:whitesmoke}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:whitesmoke}.hero.is-dark .subtitle{color:rgba(245, 245, 245, 0.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:whitesmoke}@media screen and (max-width: 1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(245, 245, 245, 0.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:whitesmoke}.hero.is-dark .tabs a{color:whitesmoke;opacity:0.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:whitesmoke}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:whitesmoke;border-color:whitesmoke;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}}.hero.is-link{background-color:#3273dc;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-link .navbar-menu{background-color:#3273dc}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#2366d1;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#118fe4;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%)}}.hero.is-success{background-color:#23d160;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-success .navbar-menu{background-color:#23d160}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#20bc56;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#23d160}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0, 0, 0, 0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0, 0, 0, 0.7)}.hero.is-warning .subtitle{color:rgba(0, 0, 0, 0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0, 0, 0, 0.7)}@media screen and (max-width: 1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0, 0, 0, 0.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0, 0, 0, 0.7)}.hero.is-warning .tabs a{color:rgba(0, 0, 0, 0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0, 0, 0, 0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0, 0, 0, 0.7);border-color:rgba(0, 0, 0, 0.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%)}}.hero.is-danger{background-color:#ff3860;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255, 255, 255, 0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-danger .navbar-menu{background-color:#ff3860}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255, 255, 255, 0.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10, 10, 10, 0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ff3860}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%)}}.hero.is-small .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width: 769px), print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width: 769px), print{.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.hero.is-fullheight .hero-body,.hero.is-halfheight .hero-body{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.hero.is-fullheight .hero-body > .container,.hero.is-halfheight .hero-body > .container{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{bottom:0;left:0;position:absolute;right:0;top:0;overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;-webkit-transform:translate3d(-50%, -50%, 0);transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:-webkit-box;display:-ms-flexbox;display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px), print{.hero-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.hero-body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width: 1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:whitesmoke;padding:3rem 1.5rem 6rem}
diff --git a/archived/http-root/res/clipboard.min.js b/archived/http-root/res/clipboard.min.js
deleted file mode 100644
index 02c549e35c86460e357a4fcebc61e1556929632f..0000000000000000000000000000000000000000
--- a/archived/http-root/res/clipboard.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * clipboard.js v2.0.4
- * https://zenorocha.github.io/clipboard.js
- * 
- * Licensed MIT © Zeno Rocha
- */
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,u.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return s("action",t)}},{key:"defaultTarget",value:function(t){var e=s("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return s("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){"use strict";var o,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});
\ No newline at end of file
diff --git a/archived/http-root/res/clippy.svg b/archived/http-root/res/clippy.svg
deleted file mode 100644
index e1b17035905df02cbdca2fbb8417ca48dc4842e2..0000000000000000000000000000000000000000
--- a/archived/http-root/res/clippy.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
-  <path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
-</svg>
diff --git a/archived/http-root/res/jquery.min.js b/archived/http-root/res/jquery.min.js
deleted file mode 100644
index a1c07fd803b5fc9c54f44e31123ae4fa11e134b0..0000000000000000000000000000000000000000
--- a/archived/http-root/res/jquery.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
diff --git a/archived/http-root/res/sha256.min.js b/archived/http-root/res/sha256.min.js
deleted file mode 100644
index 74bcdf5b65f5fe8bf746916b7c6e381851ec0440..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sha256.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * [js-sha256]{@link https://github.com/emn178/js-sha256}
- *
- * @version 0.9.0
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
- * @copyright Chen, Yi-Cyuan 2014-2017
- * @license MIT
- */
-!function(){"use strict";function t(t,i){i?(d[0]=d[16]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,this.blocks=d):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t}function i(i,r,s){var e,n=typeof i;if("string"===n){var o,a=[],u=i.length,c=0;for(e=0;e<u;++e)(o=i.charCodeAt(e))<128?a[c++]=o:o<2048?(a[c++]=192|o>>6,a[c++]=128|63&o):o<55296||o>=57344?(a[c++]=224|o>>12,a[c++]=128|o>>6&63,a[c++]=128|63&o):(o=65536+((1023&o)<<10|1023&i.charCodeAt(++e)),a[c++]=240|o>>18,a[c++]=128|o>>12&63,a[c++]=128|o>>6&63,a[c++]=128|63&o);i=a}else{if("object"!==n)throw new Error(h);if(null===i)throw new Error(h);if(f&&i.constructor===ArrayBuffer)i=new Uint8Array(i);else if(!(Array.isArray(i)||f&&ArrayBuffer.isView(i)))throw new Error(h)}i.length>64&&(i=new t(r,!0).update(i).array());var y=[],p=[];for(e=0;e<64;++e){var l=i[e]||0;y[e]=92^l,p[e]=54^l}t.call(this,r,s),this.update(p),this.oKeyPad=y,this.inner=!0,this.sharedMemory=s}var h="input is invalid type",r="object"==typeof window,s=r?window:{};s.JS_SHA256_NO_WINDOW&&(r=!1);var e=!r&&"object"==typeof self,n=!s.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;n?s=global:e&&(s=self);var o=!s.JS_SHA256_NO_COMMON_JS&&"object"==typeof module&&module.exports,a="function"==typeof define&&define.amd,f=!s.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,u="0123456789abcdef".split(""),c=[-2147483648,8388608,32768,128],y=[24,16,8,0],p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=["hex","array","digest","arrayBuffer"],d=[];!s.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!f||!s.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var A=function(i,h){return function(r){return new t(h,!0).update(r)[i]()}},w=function(i){var h=A("hex",i);n&&(h=b(h,i)),h.create=function(){return new t(i)},h.update=function(t){return h.create().update(t)};for(var r=0;r<l.length;++r){var s=l[r];h[s]=A(s,i)}return h},b=function(t,i){var r=eval("require('crypto')"),s=eval("require('buffer').Buffer"),e=i?"sha224":"sha256",n=function(i){if("string"==typeof i)return r.createHash(e).update(i,"utf8").digest("hex");if(null===i||void 0===i)throw new Error(h);return i.constructor===ArrayBuffer&&(i=new Uint8Array(i)),Array.isArray(i)||ArrayBuffer.isView(i)||i.constructor===s?r.createHash(e).update(new s(i)).digest("hex"):t(i)};return n},v=function(t,h){return function(r,s){return new i(r,h,!0).update(s)[t]()}},_=function(t){var h=v("hex",t);h.create=function(h){return new i(h,t)},h.update=function(t,i){return h.create(t).update(i)};for(var r=0;r<l.length;++r){var s=l[r];h[s]=v(s,t)}return h};t.prototype.update=function(t){if(!this.finalized){var i,r=typeof t;if("string"!==r){if("object"!==r)throw new Error(h);if(null===t)throw new Error(h);if(f&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||f&&ArrayBuffer.isView(t)))throw new Error(h);i=!0}for(var s,e,n=0,o=t.length,a=this.blocks;n<o;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[16]=a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=0),i)for(e=this.start;n<o&&e<64;++n)a[e>>2]|=t[n]<<y[3&e++];else for(e=this.start;n<o&&e<64;++n)(s=t.charCodeAt(n))<128?a[e>>2]|=s<<y[3&e++]:s<2048?(a[e>>2]|=(192|s>>6)<<y[3&e++],a[e>>2]|=(128|63&s)<<y[3&e++]):s<55296||s>=57344?(a[e>>2]|=(224|s>>12)<<y[3&e++],a[e>>2]|=(128|s>>6&63)<<y[3&e++],a[e>>2]|=(128|63&s)<<y[3&e++]):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++n)),a[e>>2]|=(240|s>>18)<<y[3&e++],a[e>>2]|=(128|s>>12&63)<<y[3&e++],a[e>>2]|=(128|s>>6&63)<<y[3&e++],a[e>>2]|=(128|63&s)<<y[3&e++]);this.lastByteIndex=e,this.bytes+=e-this.start,e>=64?(this.block=a[16],this.start=e-64,this.hash(),this.hashed=!0):this.start=e}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,i=this.lastByteIndex;t[16]=this.block,t[i>>2]|=c[3&i],this.block=t[16],i>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},t.prototype.hash=function(){var t,i,h,r,s,e,n,o,a,f=this.h0,u=this.h1,c=this.h2,y=this.h3,l=this.h4,d=this.h5,A=this.h6,w=this.h7,b=this.blocks;for(t=16;t<64;++t)i=((s=b[t-15])>>>7|s<<25)^(s>>>18|s<<14)^s>>>3,h=((s=b[t-2])>>>17|s<<15)^(s>>>19|s<<13)^s>>>10,b[t]=b[t-16]+i+b[t-7]+h<<0;for(a=u&c,t=0;t<64;t+=4)this.first?(this.is224?(e=300032,w=(s=b[0]-1413257819)-150054599<<0,y=s+24177077<<0):(e=704751109,w=(s=b[0]-210244248)-1521486534<<0,y=s+143694565<<0),this.first=!1):(i=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),r=(e=f&u)^f&c^a,w=y+(s=w+(h=(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&d^~l&A)+p[t]+b[t])<<0,y=s+(i+r)<<0),i=(y>>>2|y<<30)^(y>>>13|y<<19)^(y>>>22|y<<10),r=(n=y&f)^y&u^e,A=c+(s=A+(h=(w>>>6|w<<26)^(w>>>11|w<<21)^(w>>>25|w<<7))+(w&l^~w&d)+p[t+1]+b[t+1])<<0,i=((c=s+(i+r)<<0)>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),r=(o=c&y)^c&f^n,d=u+(s=d+(h=(A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&w^~A&l)+p[t+2]+b[t+2])<<0,i=((u=s+(i+r)<<0)>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),r=(a=u&c)^u&y^o,l=f+(s=l+(h=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&A^~d&w)+p[t+3]+b[t+3])<<0,f=s+(i+r)<<0;this.h0=this.h0+f<<0,this.h1=this.h1+u<<0,this.h2=this.h2+c<<0,this.h3=this.h3+y<<0,this.h4=this.h4+l<<0,this.h5=this.h5+d<<0,this.h6=this.h6+A<<0,this.h7=this.h7+w<<0},t.prototype.hex=function(){this.finalize();var t=this.h0,i=this.h1,h=this.h2,r=this.h3,s=this.h4,e=this.h5,n=this.h6,o=this.h7,a=u[t>>28&15]+u[t>>24&15]+u[t>>20&15]+u[t>>16&15]+u[t>>12&15]+u[t>>8&15]+u[t>>4&15]+u[15&t]+u[i>>28&15]+u[i>>24&15]+u[i>>20&15]+u[i>>16&15]+u[i>>12&15]+u[i>>8&15]+u[i>>4&15]+u[15&i]+u[h>>28&15]+u[h>>24&15]+u[h>>20&15]+u[h>>16&15]+u[h>>12&15]+u[h>>8&15]+u[h>>4&15]+u[15&h]+u[r>>28&15]+u[r>>24&15]+u[r>>20&15]+u[r>>16&15]+u[r>>12&15]+u[r>>8&15]+u[r>>4&15]+u[15&r]+u[s>>28&15]+u[s>>24&15]+u[s>>20&15]+u[s>>16&15]+u[s>>12&15]+u[s>>8&15]+u[s>>4&15]+u[15&s]+u[e>>28&15]+u[e>>24&15]+u[e>>20&15]+u[e>>16&15]+u[e>>12&15]+u[e>>8&15]+u[e>>4&15]+u[15&e]+u[n>>28&15]+u[n>>24&15]+u[n>>20&15]+u[n>>16&15]+u[n>>12&15]+u[n>>8&15]+u[n>>4&15]+u[15&n];return this.is224||(a+=u[o>>28&15]+u[o>>24&15]+u[o>>20&15]+u[o>>16&15]+u[o>>12&15]+u[o>>8&15]+u[o>>4&15]+u[15&o]),a},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,i=this.h1,h=this.h2,r=this.h3,s=this.h4,e=this.h5,n=this.h6,o=this.h7,a=[t>>24&255,t>>16&255,t>>8&255,255&t,i>>24&255,i>>16&255,i>>8&255,255&i,h>>24&255,h>>16&255,h>>8&255,255&h,r>>24&255,r>>16&255,r>>8&255,255&r,s>>24&255,s>>16&255,s>>8&255,255&s,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24&255,n>>16&255,n>>8&255,255&n];return this.is224||a.push(o>>24&255,o>>16&255,o>>8&255,255&o),a},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),i=new DataView(t);return i.setUint32(0,this.h0),i.setUint32(4,this.h1),i.setUint32(8,this.h2),i.setUint32(12,this.h3),i.setUint32(16,this.h4),i.setUint32(20,this.h5),i.setUint32(24,this.h6),this.is224||i.setUint32(28,this.h7),t},i.prototype=new t,i.prototype.finalize=function(){if(t.prototype.finalize.call(this),this.inner){this.inner=!1;var i=this.array();t.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(i),t.prototype.finalize.call(this)}};var B=w();B.sha256=B,B.sha224=w(!0),B.sha256.hmac=_(),B.sha224.hmac=_(!0),o?module.exports=B:(s.sha256=B.sha256,s.sha224=B.sha224,a&&define(function(){return B}))}();
\ No newline at end of file
diff --git a/archived/http-root/res/sheet/css/main.css b/archived/http-root/res/sheet/css/main.css
deleted file mode 100755
index c6fb5f2ed1eb5499c0ac3de3bec08dbc015b00d2..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/css/main.css
+++ /dev/null
@@ -1,301 +0,0 @@
-
-
-/*//////////////////////////////////////////////////////////////////
-[ FONT ]*/
-
-
-@font-face {
-  font-family: OpenSans-Regular;
-  src: url('../fonts/OpenSans/OpenSans-Regular.ttf'); 
-}
-
-
-
-/*//////////////////////////////////////////////////////////////////
-[ RESTYLE TAG ]*/
-* {
-	margin: 0px; 
-	padding: 0px; 
-	box-sizing: border-box;
-}
-
-body, html {
-	height: 100%;
-	font-family: sans-serif;
-}
-
-/* ------------------------------------ */
-a {
-	margin: 0px;
-	transition: all 0.4s;
-	-webkit-transition: all 0.4s;
-  -o-transition: all 0.4s;
-  -moz-transition: all 0.4s;
-}
-
-a:focus {
-	outline: none !important;
-}
-
-a:hover {
-	text-decoration: none;
-}
-
-/* ------------------------------------ */
-h1,h2,h3,h4,h5,h6 {margin: 0px;}
-
-p {margin: 0px;}
-
-ul, li {
-	margin: 0px;
-	list-style-type: none;
-}
-
-
-/* ------------------------------------ */
-input {
-  display: block;
-	outline: none;
-	border: none !important;
-}
-
-textarea {
-  display: block;
-  outline: none;
-}
-
-textarea:focus, input:focus {
-  border-color: transparent !important;
-}
-
-/* ------------------------------------ */
-button {
-	outline: none !important;
-	border: none;
-	background: transparent;
-}
-
-button:hover {
-	cursor: pointer;
-}
-
-iframe {
-	border: none !important;
-}
-
-
-
-
-/*//////////////////////////////////////////////////////////////////
-[ Utiliti ]*/
-
-
-
-
-
-
-/*//////////////////////////////////////////////////////////////////
-[ Table ]*/
-
-.limiter {
-  width: 100%;
-  margin: 0 auto;
-}
-
-.container-table100 {
-  width: 100%;
-  min-height: 100vh;
-  background: #c850c0;
-  background: -webkit-linear-gradient(45deg, #4158d0, #c850c0);
-  background: -o-linear-gradient(45deg, #4158d0, #c850c0);
-  background: -moz-linear-gradient(45deg, #4158d0, #c850c0);
-  background: linear-gradient(45deg, #4158d0, #c850c0);
-
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -moz-box;
-  display: -ms-flexbox;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-wrap: wrap;
-  padding: 33px 30px;
-}
-
-.wrap-table100 {
-  width: 1170px;
-}
-
-table {
-  border-spacing: 1;
-  border-collapse: collapse;
-  background: white;
-  border-radius: 10px;
-  overflow: hidden;
-  width: 100%;
-  margin: 0 auto;
-  position: relative;
-}
-table * {
-  position: relative;
-}
-table td, table th {
-  padding-left: 8px;
-}
-table thead tr {
-  height: 60px;
-  background: #36304a;
-}
-table tbody tr {
-  height: 50px;
-}
-table tbody tr:last-child {
-  border: 0;
-}
-table td, table th {
-  text-align: left;
-}
-table td.l, table th.l {
-  text-align: right;
-}
-table td.c, table th.c {
-  text-align: center;
-}
-table td.r, table th.r {
-  text-align: center;
-}
-
-
-.table100-head th{
-  font-family: OpenSans-Regular;
-  font-size: 18px;
-  color: #fff;
-  line-height: 1.2;
-  font-weight: unset;
-}
-
-tbody tr:nth-child(even) {
-  background-color: #f5f5f5;
-}
-
-tbody tr {
-  font-family: OpenSans-Regular;
-  font-size: 15px;
-  color: #808080;
-  line-height: 1.2;
-  font-weight: unset;
-}
-
-tbody tr:hover {
-  color: #555555;
-  background-color: #f5f5f5;
-  cursor: pointer;
-}
-
-.column1 {
-  width: 260px;
-  padding-left: 40px;
-}
-
-.column2 {
-  width: 160px;
-}
-
-.column3 {
-  width: 245px;
-}
-
-.column4 {
-  width: 110px;
-  text-align: right;
-}
-
-.column5 {
-  width: 170px;
-  text-align: right;
-}
-
-.column6 {
-  width: 222px;
-  text-align: right;
-  padding-right: 62px;
-}
-
-
-@media screen and (max-width: 992px) {
-  table {
-    display: block;
-  }
-  table > *, table tr, table td, table th {
-    display: block;
-  }
-  table thead {
-    display: none;
-  }
-  table tbody tr {
-    height: auto;
-    padding: 37px 0;
-  }
-  table tbody tr td {
-    padding-left: 40% !important;
-    margin-bottom: 24px;
-  }
-  table tbody tr td:last-child {
-    margin-bottom: 0;
-  }
-  table tbody tr td:before {
-    font-family: OpenSans-Regular;
-    font-size: 14px;
-    color: #999999;
-    line-height: 1.2;
-    font-weight: unset;
-    position: absolute;
-    width: 40%;
-    left: 30px;
-    top: 0;
-  }
-  table tbody tr td:nth-child(1):before {
-    content: "Name";
-  }
-  table tbody tr td:nth-child(2):before {
-    content: "";
-  }
-  table tbody tr td:nth-child(3):before {
-    content: "Balance";
-  }
-  table tbody tr td:nth-child(4):before {
-    content: "Earning";
-  }
-  table tbody tr td:nth-child(5):before {
-    content: "Plan";
-  }
-  table tbody tr td:nth-child(6):before {
-    content: "Price";
-  }
-
-  .column4,
-  .column5,
-  .column6 {
-    text-align: left;
-  }
-
-  .column4,
-  .column5,
-  .column6,
-  .column1,
-  .column2,
-  .column3 {
-    width: 100%;
-  }
-
-  tbody tr {
-    font-size: 14px;
-  }
-}
-
-@media (max-width: 576px) {
-  .container-table100 {
-    padding-left: 15px;
-    padding-right: 15px;
-  }
-}
diff --git a/archived/http-root/res/sheet/css/util.css b/archived/http-root/res/sheet/css/util.css
deleted file mode 100755
index 491b81676f95144959366916becf55c19ed8f1fa..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/css/util.css
+++ /dev/null
@@ -1,2988 +0,0 @@
-/*[ FONT SIZE ]
-///////////////////////////////////////////////////////////
-*/
-.fs-1 {font-size: 1px;}
-.fs-2 {font-size: 2px;}
-.fs-3 {font-size: 3px;}
-.fs-4 {font-size: 4px;}
-.fs-5 {font-size: 5px;}
-.fs-6 {font-size: 6px;}
-.fs-7 {font-size: 7px;}
-.fs-8 {font-size: 8px;}
-.fs-9 {font-size: 9px;}
-.fs-10 {font-size: 10px;}
-.fs-11 {font-size: 11px;}
-.fs-12 {font-size: 12px;}
-.fs-13 {font-size: 13px;}
-.fs-14 {font-size: 14px;}
-.fs-15 {font-size: 15px;}
-.fs-16 {font-size: 16px;}
-.fs-17 {font-size: 17px;}
-.fs-18 {font-size: 18px;}
-.fs-19 {font-size: 19px;}
-.fs-20 {font-size: 20px;}
-.fs-21 {font-size: 21px;}
-.fs-22 {font-size: 22px;}
-.fs-23 {font-size: 23px;}
-.fs-24 {font-size: 24px;}
-.fs-25 {font-size: 25px;}
-.fs-26 {font-size: 26px;}
-.fs-27 {font-size: 27px;}
-.fs-28 {font-size: 28px;}
-.fs-29 {font-size: 29px;}
-.fs-30 {font-size: 30px;}
-.fs-31 {font-size: 31px;}
-.fs-32 {font-size: 32px;}
-.fs-33 {font-size: 33px;}
-.fs-34 {font-size: 34px;}
-.fs-35 {font-size: 35px;}
-.fs-36 {font-size: 36px;}
-.fs-37 {font-size: 37px;}
-.fs-38 {font-size: 38px;}
-.fs-39 {font-size: 39px;}
-.fs-40 {font-size: 40px;}
-.fs-41 {font-size: 41px;}
-.fs-42 {font-size: 42px;}
-.fs-43 {font-size: 43px;}
-.fs-44 {font-size: 44px;}
-.fs-45 {font-size: 45px;}
-.fs-46 {font-size: 46px;}
-.fs-47 {font-size: 47px;}
-.fs-48 {font-size: 48px;}
-.fs-49 {font-size: 49px;}
-.fs-50 {font-size: 50px;}
-.fs-51 {font-size: 51px;}
-.fs-52 {font-size: 52px;}
-.fs-53 {font-size: 53px;}
-.fs-54 {font-size: 54px;}
-.fs-55 {font-size: 55px;}
-.fs-56 {font-size: 56px;}
-.fs-57 {font-size: 57px;}
-.fs-58 {font-size: 58px;}
-.fs-59 {font-size: 59px;}
-.fs-60 {font-size: 60px;}
-.fs-61 {font-size: 61px;}
-.fs-62 {font-size: 62px;}
-.fs-63 {font-size: 63px;}
-.fs-64 {font-size: 64px;}
-.fs-65 {font-size: 65px;}
-.fs-66 {font-size: 66px;}
-.fs-67 {font-size: 67px;}
-.fs-68 {font-size: 68px;}
-.fs-69 {font-size: 69px;}
-.fs-70 {font-size: 70px;}
-.fs-71 {font-size: 71px;}
-.fs-72 {font-size: 72px;}
-.fs-73 {font-size: 73px;}
-.fs-74 {font-size: 74px;}
-.fs-75 {font-size: 75px;}
-.fs-76 {font-size: 76px;}
-.fs-77 {font-size: 77px;}
-.fs-78 {font-size: 78px;}
-.fs-79 {font-size: 79px;}
-.fs-80 {font-size: 80px;}
-.fs-81 {font-size: 81px;}
-.fs-82 {font-size: 82px;}
-.fs-83 {font-size: 83px;}
-.fs-84 {font-size: 84px;}
-.fs-85 {font-size: 85px;}
-.fs-86 {font-size: 86px;}
-.fs-87 {font-size: 87px;}
-.fs-88 {font-size: 88px;}
-.fs-89 {font-size: 89px;}
-.fs-90 {font-size: 90px;}
-.fs-91 {font-size: 91px;}
-.fs-92 {font-size: 92px;}
-.fs-93 {font-size: 93px;}
-.fs-94 {font-size: 94px;}
-.fs-95 {font-size: 95px;}
-.fs-96 {font-size: 96px;}
-.fs-97 {font-size: 97px;}
-.fs-98 {font-size: 98px;}
-.fs-99 {font-size: 99px;}
-.fs-100 {font-size: 100px;}
-.fs-101 {font-size: 101px;}
-.fs-102 {font-size: 102px;}
-.fs-103 {font-size: 103px;}
-.fs-104 {font-size: 104px;}
-.fs-105 {font-size: 105px;}
-.fs-106 {font-size: 106px;}
-.fs-107 {font-size: 107px;}
-.fs-108 {font-size: 108px;}
-.fs-109 {font-size: 109px;}
-.fs-110 {font-size: 110px;}
-.fs-111 {font-size: 111px;}
-.fs-112 {font-size: 112px;}
-.fs-113 {font-size: 113px;}
-.fs-114 {font-size: 114px;}
-.fs-115 {font-size: 115px;}
-.fs-116 {font-size: 116px;}
-.fs-117 {font-size: 117px;}
-.fs-118 {font-size: 118px;}
-.fs-119 {font-size: 119px;}
-.fs-120 {font-size: 120px;}
-.fs-121 {font-size: 121px;}
-.fs-122 {font-size: 122px;}
-.fs-123 {font-size: 123px;}
-.fs-124 {font-size: 124px;}
-.fs-125 {font-size: 125px;}
-.fs-126 {font-size: 126px;}
-.fs-127 {font-size: 127px;}
-.fs-128 {font-size: 128px;}
-.fs-129 {font-size: 129px;}
-.fs-130 {font-size: 130px;}
-.fs-131 {font-size: 131px;}
-.fs-132 {font-size: 132px;}
-.fs-133 {font-size: 133px;}
-.fs-134 {font-size: 134px;}
-.fs-135 {font-size: 135px;}
-.fs-136 {font-size: 136px;}
-.fs-137 {font-size: 137px;}
-.fs-138 {font-size: 138px;}
-.fs-139 {font-size: 139px;}
-.fs-140 {font-size: 140px;}
-.fs-141 {font-size: 141px;}
-.fs-142 {font-size: 142px;}
-.fs-143 {font-size: 143px;}
-.fs-144 {font-size: 144px;}
-.fs-145 {font-size: 145px;}
-.fs-146 {font-size: 146px;}
-.fs-147 {font-size: 147px;}
-.fs-148 {font-size: 148px;}
-.fs-149 {font-size: 149px;}
-.fs-150 {font-size: 150px;}
-.fs-151 {font-size: 151px;}
-.fs-152 {font-size: 152px;}
-.fs-153 {font-size: 153px;}
-.fs-154 {font-size: 154px;}
-.fs-155 {font-size: 155px;}
-.fs-156 {font-size: 156px;}
-.fs-157 {font-size: 157px;}
-.fs-158 {font-size: 158px;}
-.fs-159 {font-size: 159px;}
-.fs-160 {font-size: 160px;}
-.fs-161 {font-size: 161px;}
-.fs-162 {font-size: 162px;}
-.fs-163 {font-size: 163px;}
-.fs-164 {font-size: 164px;}
-.fs-165 {font-size: 165px;}
-.fs-166 {font-size: 166px;}
-.fs-167 {font-size: 167px;}
-.fs-168 {font-size: 168px;}
-.fs-169 {font-size: 169px;}
-.fs-170 {font-size: 170px;}
-.fs-171 {font-size: 171px;}
-.fs-172 {font-size: 172px;}
-.fs-173 {font-size: 173px;}
-.fs-174 {font-size: 174px;}
-.fs-175 {font-size: 175px;}
-.fs-176 {font-size: 176px;}
-.fs-177 {font-size: 177px;}
-.fs-178 {font-size: 178px;}
-.fs-179 {font-size: 179px;}
-.fs-180 {font-size: 180px;}
-.fs-181 {font-size: 181px;}
-.fs-182 {font-size: 182px;}
-.fs-183 {font-size: 183px;}
-.fs-184 {font-size: 184px;}
-.fs-185 {font-size: 185px;}
-.fs-186 {font-size: 186px;}
-.fs-187 {font-size: 187px;}
-.fs-188 {font-size: 188px;}
-.fs-189 {font-size: 189px;}
-.fs-190 {font-size: 190px;}
-.fs-191 {font-size: 191px;}
-.fs-192 {font-size: 192px;}
-.fs-193 {font-size: 193px;}
-.fs-194 {font-size: 194px;}
-.fs-195 {font-size: 195px;}
-.fs-196 {font-size: 196px;}
-.fs-197 {font-size: 197px;}
-.fs-198 {font-size: 198px;}
-.fs-199 {font-size: 199px;}
-.fs-200 {font-size: 200px;}
-
-/*[ PADDING ]
-///////////////////////////////////////////////////////////
-*/
-.p-t-0 {padding-top: 0px;}
-.p-t-1 {padding-top: 1px;}
-.p-t-2 {padding-top: 2px;}
-.p-t-3 {padding-top: 3px;}
-.p-t-4 {padding-top: 4px;}
-.p-t-5 {padding-top: 5px;}
-.p-t-6 {padding-top: 6px;}
-.p-t-7 {padding-top: 7px;}
-.p-t-8 {padding-top: 8px;}
-.p-t-9 {padding-top: 9px;}
-.p-t-10 {padding-top: 10px;}
-.p-t-11 {padding-top: 11px;}
-.p-t-12 {padding-top: 12px;}
-.p-t-13 {padding-top: 13px;}
-.p-t-14 {padding-top: 14px;}
-.p-t-15 {padding-top: 15px;}
-.p-t-16 {padding-top: 16px;}
-.p-t-17 {padding-top: 17px;}
-.p-t-18 {padding-top: 18px;}
-.p-t-19 {padding-top: 19px;}
-.p-t-20 {padding-top: 20px;}
-.p-t-21 {padding-top: 21px;}
-.p-t-22 {padding-top: 22px;}
-.p-t-23 {padding-top: 23px;}
-.p-t-24 {padding-top: 24px;}
-.p-t-25 {padding-top: 25px;}
-.p-t-26 {padding-top: 26px;}
-.p-t-27 {padding-top: 27px;}
-.p-t-28 {padding-top: 28px;}
-.p-t-29 {padding-top: 29px;}
-.p-t-30 {padding-top: 30px;}
-.p-t-31 {padding-top: 31px;}
-.p-t-32 {padding-top: 32px;}
-.p-t-33 {padding-top: 33px;}
-.p-t-34 {padding-top: 34px;}
-.p-t-35 {padding-top: 35px;}
-.p-t-36 {padding-top: 36px;}
-.p-t-37 {padding-top: 37px;}
-.p-t-38 {padding-top: 38px;}
-.p-t-39 {padding-top: 39px;}
-.p-t-40 {padding-top: 40px;}
-.p-t-41 {padding-top: 41px;}
-.p-t-42 {padding-top: 42px;}
-.p-t-43 {padding-top: 43px;}
-.p-t-44 {padding-top: 44px;}
-.p-t-45 {padding-top: 45px;}
-.p-t-46 {padding-top: 46px;}
-.p-t-47 {padding-top: 47px;}
-.p-t-48 {padding-top: 48px;}
-.p-t-49 {padding-top: 49px;}
-.p-t-50 {padding-top: 50px;}
-.p-t-51 {padding-top: 51px;}
-.p-t-52 {padding-top: 52px;}
-.p-t-53 {padding-top: 53px;}
-.p-t-54 {padding-top: 54px;}
-.p-t-55 {padding-top: 55px;}
-.p-t-56 {padding-top: 56px;}
-.p-t-57 {padding-top: 57px;}
-.p-t-58 {padding-top: 58px;}
-.p-t-59 {padding-top: 59px;}
-.p-t-60 {padding-top: 60px;}
-.p-t-61 {padding-top: 61px;}
-.p-t-62 {padding-top: 62px;}
-.p-t-63 {padding-top: 63px;}
-.p-t-64 {padding-top: 64px;}
-.p-t-65 {padding-top: 65px;}
-.p-t-66 {padding-top: 66px;}
-.p-t-67 {padding-top: 67px;}
-.p-t-68 {padding-top: 68px;}
-.p-t-69 {padding-top: 69px;}
-.p-t-70 {padding-top: 70px;}
-.p-t-71 {padding-top: 71px;}
-.p-t-72 {padding-top: 72px;}
-.p-t-73 {padding-top: 73px;}
-.p-t-74 {padding-top: 74px;}
-.p-t-75 {padding-top: 75px;}
-.p-t-76 {padding-top: 76px;}
-.p-t-77 {padding-top: 77px;}
-.p-t-78 {padding-top: 78px;}
-.p-t-79 {padding-top: 79px;}
-.p-t-80 {padding-top: 80px;}
-.p-t-81 {padding-top: 81px;}
-.p-t-82 {padding-top: 82px;}
-.p-t-83 {padding-top: 83px;}
-.p-t-84 {padding-top: 84px;}
-.p-t-85 {padding-top: 85px;}
-.p-t-86 {padding-top: 86px;}
-.p-t-87 {padding-top: 87px;}
-.p-t-88 {padding-top: 88px;}
-.p-t-89 {padding-top: 89px;}
-.p-t-90 {padding-top: 90px;}
-.p-t-91 {padding-top: 91px;}
-.p-t-92 {padding-top: 92px;}
-.p-t-93 {padding-top: 93px;}
-.p-t-94 {padding-top: 94px;}
-.p-t-95 {padding-top: 95px;}
-.p-t-96 {padding-top: 96px;}
-.p-t-97 {padding-top: 97px;}
-.p-t-98 {padding-top: 98px;}
-.p-t-99 {padding-top: 99px;}
-.p-t-100 {padding-top: 100px;}
-.p-t-101 {padding-top: 101px;}
-.p-t-102 {padding-top: 102px;}
-.p-t-103 {padding-top: 103px;}
-.p-t-104 {padding-top: 104px;}
-.p-t-105 {padding-top: 105px;}
-.p-t-106 {padding-top: 106px;}
-.p-t-107 {padding-top: 107px;}
-.p-t-108 {padding-top: 108px;}
-.p-t-109 {padding-top: 109px;}
-.p-t-110 {padding-top: 110px;}
-.p-t-111 {padding-top: 111px;}
-.p-t-112 {padding-top: 112px;}
-.p-t-113 {padding-top: 113px;}
-.p-t-114 {padding-top: 114px;}
-.p-t-115 {padding-top: 115px;}
-.p-t-116 {padding-top: 116px;}
-.p-t-117 {padding-top: 117px;}
-.p-t-118 {padding-top: 118px;}
-.p-t-119 {padding-top: 119px;}
-.p-t-120 {padding-top: 120px;}
-.p-t-121 {padding-top: 121px;}
-.p-t-122 {padding-top: 122px;}
-.p-t-123 {padding-top: 123px;}
-.p-t-124 {padding-top: 124px;}
-.p-t-125 {padding-top: 125px;}
-.p-t-126 {padding-top: 126px;}
-.p-t-127 {padding-top: 127px;}
-.p-t-128 {padding-top: 128px;}
-.p-t-129 {padding-top: 129px;}
-.p-t-130 {padding-top: 130px;}
-.p-t-131 {padding-top: 131px;}
-.p-t-132 {padding-top: 132px;}
-.p-t-133 {padding-top: 133px;}
-.p-t-134 {padding-top: 134px;}
-.p-t-135 {padding-top: 135px;}
-.p-t-136 {padding-top: 136px;}
-.p-t-137 {padding-top: 137px;}
-.p-t-138 {padding-top: 138px;}
-.p-t-139 {padding-top: 139px;}
-.p-t-140 {padding-top: 140px;}
-.p-t-141 {padding-top: 141px;}
-.p-t-142 {padding-top: 142px;}
-.p-t-143 {padding-top: 143px;}
-.p-t-144 {padding-top: 144px;}
-.p-t-145 {padding-top: 145px;}
-.p-t-146 {padding-top: 146px;}
-.p-t-147 {padding-top: 147px;}
-.p-t-148 {padding-top: 148px;}
-.p-t-149 {padding-top: 149px;}
-.p-t-150 {padding-top: 150px;}
-.p-t-151 {padding-top: 151px;}
-.p-t-152 {padding-top: 152px;}
-.p-t-153 {padding-top: 153px;}
-.p-t-154 {padding-top: 154px;}
-.p-t-155 {padding-top: 155px;}
-.p-t-156 {padding-top: 156px;}
-.p-t-157 {padding-top: 157px;}
-.p-t-158 {padding-top: 158px;}
-.p-t-159 {padding-top: 159px;}
-.p-t-160 {padding-top: 160px;}
-.p-t-161 {padding-top: 161px;}
-.p-t-162 {padding-top: 162px;}
-.p-t-163 {padding-top: 163px;}
-.p-t-164 {padding-top: 164px;}
-.p-t-165 {padding-top: 165px;}
-.p-t-166 {padding-top: 166px;}
-.p-t-167 {padding-top: 167px;}
-.p-t-168 {padding-top: 168px;}
-.p-t-169 {padding-top: 169px;}
-.p-t-170 {padding-top: 170px;}
-.p-t-171 {padding-top: 171px;}
-.p-t-172 {padding-top: 172px;}
-.p-t-173 {padding-top: 173px;}
-.p-t-174 {padding-top: 174px;}
-.p-t-175 {padding-top: 175px;}
-.p-t-176 {padding-top: 176px;}
-.p-t-177 {padding-top: 177px;}
-.p-t-178 {padding-top: 178px;}
-.p-t-179 {padding-top: 179px;}
-.p-t-180 {padding-top: 180px;}
-.p-t-181 {padding-top: 181px;}
-.p-t-182 {padding-top: 182px;}
-.p-t-183 {padding-top: 183px;}
-.p-t-184 {padding-top: 184px;}
-.p-t-185 {padding-top: 185px;}
-.p-t-186 {padding-top: 186px;}
-.p-t-187 {padding-top: 187px;}
-.p-t-188 {padding-top: 188px;}
-.p-t-189 {padding-top: 189px;}
-.p-t-190 {padding-top: 190px;}
-.p-t-191 {padding-top: 191px;}
-.p-t-192 {padding-top: 192px;}
-.p-t-193 {padding-top: 193px;}
-.p-t-194 {padding-top: 194px;}
-.p-t-195 {padding-top: 195px;}
-.p-t-196 {padding-top: 196px;}
-.p-t-197 {padding-top: 197px;}
-.p-t-198 {padding-top: 198px;}
-.p-t-199 {padding-top: 199px;}
-.p-t-200 {padding-top: 200px;}
-.p-t-201 {padding-top: 201px;}
-.p-t-202 {padding-top: 202px;}
-.p-t-203 {padding-top: 203px;}
-.p-t-204 {padding-top: 204px;}
-.p-t-205 {padding-top: 205px;}
-.p-t-206 {padding-top: 206px;}
-.p-t-207 {padding-top: 207px;}
-.p-t-208 {padding-top: 208px;}
-.p-t-209 {padding-top: 209px;}
-.p-t-210 {padding-top: 210px;}
-.p-t-211 {padding-top: 211px;}
-.p-t-212 {padding-top: 212px;}
-.p-t-213 {padding-top: 213px;}
-.p-t-214 {padding-top: 214px;}
-.p-t-215 {padding-top: 215px;}
-.p-t-216 {padding-top: 216px;}
-.p-t-217 {padding-top: 217px;}
-.p-t-218 {padding-top: 218px;}
-.p-t-219 {padding-top: 219px;}
-.p-t-220 {padding-top: 220px;}
-.p-t-221 {padding-top: 221px;}
-.p-t-222 {padding-top: 222px;}
-.p-t-223 {padding-top: 223px;}
-.p-t-224 {padding-top: 224px;}
-.p-t-225 {padding-top: 225px;}
-.p-t-226 {padding-top: 226px;}
-.p-t-227 {padding-top: 227px;}
-.p-t-228 {padding-top: 228px;}
-.p-t-229 {padding-top: 229px;}
-.p-t-230 {padding-top: 230px;}
-.p-t-231 {padding-top: 231px;}
-.p-t-232 {padding-top: 232px;}
-.p-t-233 {padding-top: 233px;}
-.p-t-234 {padding-top: 234px;}
-.p-t-235 {padding-top: 235px;}
-.p-t-236 {padding-top: 236px;}
-.p-t-237 {padding-top: 237px;}
-.p-t-238 {padding-top: 238px;}
-.p-t-239 {padding-top: 239px;}
-.p-t-240 {padding-top: 240px;}
-.p-t-241 {padding-top: 241px;}
-.p-t-242 {padding-top: 242px;}
-.p-t-243 {padding-top: 243px;}
-.p-t-244 {padding-top: 244px;}
-.p-t-245 {padding-top: 245px;}
-.p-t-246 {padding-top: 246px;}
-.p-t-247 {padding-top: 247px;}
-.p-t-248 {padding-top: 248px;}
-.p-t-249 {padding-top: 249px;}
-.p-t-250 {padding-top: 250px;}
-.p-b-0 {padding-bottom: 0px;}
-.p-b-1 {padding-bottom: 1px;}
-.p-b-2 {padding-bottom: 2px;}
-.p-b-3 {padding-bottom: 3px;}
-.p-b-4 {padding-bottom: 4px;}
-.p-b-5 {padding-bottom: 5px;}
-.p-b-6 {padding-bottom: 6px;}
-.p-b-7 {padding-bottom: 7px;}
-.p-b-8 {padding-bottom: 8px;}
-.p-b-9 {padding-bottom: 9px;}
-.p-b-10 {padding-bottom: 10px;}
-.p-b-11 {padding-bottom: 11px;}
-.p-b-12 {padding-bottom: 12px;}
-.p-b-13 {padding-bottom: 13px;}
-.p-b-14 {padding-bottom: 14px;}
-.p-b-15 {padding-bottom: 15px;}
-.p-b-16 {padding-bottom: 16px;}
-.p-b-17 {padding-bottom: 17px;}
-.p-b-18 {padding-bottom: 18px;}
-.p-b-19 {padding-bottom: 19px;}
-.p-b-20 {padding-bottom: 20px;}
-.p-b-21 {padding-bottom: 21px;}
-.p-b-22 {padding-bottom: 22px;}
-.p-b-23 {padding-bottom: 23px;}
-.p-b-24 {padding-bottom: 24px;}
-.p-b-25 {padding-bottom: 25px;}
-.p-b-26 {padding-bottom: 26px;}
-.p-b-27 {padding-bottom: 27px;}
-.p-b-28 {padding-bottom: 28px;}
-.p-b-29 {padding-bottom: 29px;}
-.p-b-30 {padding-bottom: 30px;}
-.p-b-31 {padding-bottom: 31px;}
-.p-b-32 {padding-bottom: 32px;}
-.p-b-33 {padding-bottom: 33px;}
-.p-b-34 {padding-bottom: 34px;}
-.p-b-35 {padding-bottom: 35px;}
-.p-b-36 {padding-bottom: 36px;}
-.p-b-37 {padding-bottom: 37px;}
-.p-b-38 {padding-bottom: 38px;}
-.p-b-39 {padding-bottom: 39px;}
-.p-b-40 {padding-bottom: 40px;}
-.p-b-41 {padding-bottom: 41px;}
-.p-b-42 {padding-bottom: 42px;}
-.p-b-43 {padding-bottom: 43px;}
-.p-b-44 {padding-bottom: 44px;}
-.p-b-45 {padding-bottom: 45px;}
-.p-b-46 {padding-bottom: 46px;}
-.p-b-47 {padding-bottom: 47px;}
-.p-b-48 {padding-bottom: 48px;}
-.p-b-49 {padding-bottom: 49px;}
-.p-b-50 {padding-bottom: 50px;}
-.p-b-51 {padding-bottom: 51px;}
-.p-b-52 {padding-bottom: 52px;}
-.p-b-53 {padding-bottom: 53px;}
-.p-b-54 {padding-bottom: 54px;}
-.p-b-55 {padding-bottom: 55px;}
-.p-b-56 {padding-bottom: 56px;}
-.p-b-57 {padding-bottom: 57px;}
-.p-b-58 {padding-bottom: 58px;}
-.p-b-59 {padding-bottom: 59px;}
-.p-b-60 {padding-bottom: 60px;}
-.p-b-61 {padding-bottom: 61px;}
-.p-b-62 {padding-bottom: 62px;}
-.p-b-63 {padding-bottom: 63px;}
-.p-b-64 {padding-bottom: 64px;}
-.p-b-65 {padding-bottom: 65px;}
-.p-b-66 {padding-bottom: 66px;}
-.p-b-67 {padding-bottom: 67px;}
-.p-b-68 {padding-bottom: 68px;}
-.p-b-69 {padding-bottom: 69px;}
-.p-b-70 {padding-bottom: 70px;}
-.p-b-71 {padding-bottom: 71px;}
-.p-b-72 {padding-bottom: 72px;}
-.p-b-73 {padding-bottom: 73px;}
-.p-b-74 {padding-bottom: 74px;}
-.p-b-75 {padding-bottom: 75px;}
-.p-b-76 {padding-bottom: 76px;}
-.p-b-77 {padding-bottom: 77px;}
-.p-b-78 {padding-bottom: 78px;}
-.p-b-79 {padding-bottom: 79px;}
-.p-b-80 {padding-bottom: 80px;}
-.p-b-81 {padding-bottom: 81px;}
-.p-b-82 {padding-bottom: 82px;}
-.p-b-83 {padding-bottom: 83px;}
-.p-b-84 {padding-bottom: 84px;}
-.p-b-85 {padding-bottom: 85px;}
-.p-b-86 {padding-bottom: 86px;}
-.p-b-87 {padding-bottom: 87px;}
-.p-b-88 {padding-bottom: 88px;}
-.p-b-89 {padding-bottom: 89px;}
-.p-b-90 {padding-bottom: 90px;}
-.p-b-91 {padding-bottom: 91px;}
-.p-b-92 {padding-bottom: 92px;}
-.p-b-93 {padding-bottom: 93px;}
-.p-b-94 {padding-bottom: 94px;}
-.p-b-95 {padding-bottom: 95px;}
-.p-b-96 {padding-bottom: 96px;}
-.p-b-97 {padding-bottom: 97px;}
-.p-b-98 {padding-bottom: 98px;}
-.p-b-99 {padding-bottom: 99px;}
-.p-b-100 {padding-bottom: 100px;}
-.p-b-101 {padding-bottom: 101px;}
-.p-b-102 {padding-bottom: 102px;}
-.p-b-103 {padding-bottom: 103px;}
-.p-b-104 {padding-bottom: 104px;}
-.p-b-105 {padding-bottom: 105px;}
-.p-b-106 {padding-bottom: 106px;}
-.p-b-107 {padding-bottom: 107px;}
-.p-b-108 {padding-bottom: 108px;}
-.p-b-109 {padding-bottom: 109px;}
-.p-b-110 {padding-bottom: 110px;}
-.p-b-111 {padding-bottom: 111px;}
-.p-b-112 {padding-bottom: 112px;}
-.p-b-113 {padding-bottom: 113px;}
-.p-b-114 {padding-bottom: 114px;}
-.p-b-115 {padding-bottom: 115px;}
-.p-b-116 {padding-bottom: 116px;}
-.p-b-117 {padding-bottom: 117px;}
-.p-b-118 {padding-bottom: 118px;}
-.p-b-119 {padding-bottom: 119px;}
-.p-b-120 {padding-bottom: 120px;}
-.p-b-121 {padding-bottom: 121px;}
-.p-b-122 {padding-bottom: 122px;}
-.p-b-123 {padding-bottom: 123px;}
-.p-b-124 {padding-bottom: 124px;}
-.p-b-125 {padding-bottom: 125px;}
-.p-b-126 {padding-bottom: 126px;}
-.p-b-127 {padding-bottom: 127px;}
-.p-b-128 {padding-bottom: 128px;}
-.p-b-129 {padding-bottom: 129px;}
-.p-b-130 {padding-bottom: 130px;}
-.p-b-131 {padding-bottom: 131px;}
-.p-b-132 {padding-bottom: 132px;}
-.p-b-133 {padding-bottom: 133px;}
-.p-b-134 {padding-bottom: 134px;}
-.p-b-135 {padding-bottom: 135px;}
-.p-b-136 {padding-bottom: 136px;}
-.p-b-137 {padding-bottom: 137px;}
-.p-b-138 {padding-bottom: 138px;}
-.p-b-139 {padding-bottom: 139px;}
-.p-b-140 {padding-bottom: 140px;}
-.p-b-141 {padding-bottom: 141px;}
-.p-b-142 {padding-bottom: 142px;}
-.p-b-143 {padding-bottom: 143px;}
-.p-b-144 {padding-bottom: 144px;}
-.p-b-145 {padding-bottom: 145px;}
-.p-b-146 {padding-bottom: 146px;}
-.p-b-147 {padding-bottom: 147px;}
-.p-b-148 {padding-bottom: 148px;}
-.p-b-149 {padding-bottom: 149px;}
-.p-b-150 {padding-bottom: 150px;}
-.p-b-151 {padding-bottom: 151px;}
-.p-b-152 {padding-bottom: 152px;}
-.p-b-153 {padding-bottom: 153px;}
-.p-b-154 {padding-bottom: 154px;}
-.p-b-155 {padding-bottom: 155px;}
-.p-b-156 {padding-bottom: 156px;}
-.p-b-157 {padding-bottom: 157px;}
-.p-b-158 {padding-bottom: 158px;}
-.p-b-159 {padding-bottom: 159px;}
-.p-b-160 {padding-bottom: 160px;}
-.p-b-161 {padding-bottom: 161px;}
-.p-b-162 {padding-bottom: 162px;}
-.p-b-163 {padding-bottom: 163px;}
-.p-b-164 {padding-bottom: 164px;}
-.p-b-165 {padding-bottom: 165px;}
-.p-b-166 {padding-bottom: 166px;}
-.p-b-167 {padding-bottom: 167px;}
-.p-b-168 {padding-bottom: 168px;}
-.p-b-169 {padding-bottom: 169px;}
-.p-b-170 {padding-bottom: 170px;}
-.p-b-171 {padding-bottom: 171px;}
-.p-b-172 {padding-bottom: 172px;}
-.p-b-173 {padding-bottom: 173px;}
-.p-b-174 {padding-bottom: 174px;}
-.p-b-175 {padding-bottom: 175px;}
-.p-b-176 {padding-bottom: 176px;}
-.p-b-177 {padding-bottom: 177px;}
-.p-b-178 {padding-bottom: 178px;}
-.p-b-179 {padding-bottom: 179px;}
-.p-b-180 {padding-bottom: 180px;}
-.p-b-181 {padding-bottom: 181px;}
-.p-b-182 {padding-bottom: 182px;}
-.p-b-183 {padding-bottom: 183px;}
-.p-b-184 {padding-bottom: 184px;}
-.p-b-185 {padding-bottom: 185px;}
-.p-b-186 {padding-bottom: 186px;}
-.p-b-187 {padding-bottom: 187px;}
-.p-b-188 {padding-bottom: 188px;}
-.p-b-189 {padding-bottom: 189px;}
-.p-b-190 {padding-bottom: 190px;}
-.p-b-191 {padding-bottom: 191px;}
-.p-b-192 {padding-bottom: 192px;}
-.p-b-193 {padding-bottom: 193px;}
-.p-b-194 {padding-bottom: 194px;}
-.p-b-195 {padding-bottom: 195px;}
-.p-b-196 {padding-bottom: 196px;}
-.p-b-197 {padding-bottom: 197px;}
-.p-b-198 {padding-bottom: 198px;}
-.p-b-199 {padding-bottom: 199px;}
-.p-b-200 {padding-bottom: 200px;}
-.p-b-201 {padding-bottom: 201px;}
-.p-b-202 {padding-bottom: 202px;}
-.p-b-203 {padding-bottom: 203px;}
-.p-b-204 {padding-bottom: 204px;}
-.p-b-205 {padding-bottom: 205px;}
-.p-b-206 {padding-bottom: 206px;}
-.p-b-207 {padding-bottom: 207px;}
-.p-b-208 {padding-bottom: 208px;}
-.p-b-209 {padding-bottom: 209px;}
-.p-b-210 {padding-bottom: 210px;}
-.p-b-211 {padding-bottom: 211px;}
-.p-b-212 {padding-bottom: 212px;}
-.p-b-213 {padding-bottom: 213px;}
-.p-b-214 {padding-bottom: 214px;}
-.p-b-215 {padding-bottom: 215px;}
-.p-b-216 {padding-bottom: 216px;}
-.p-b-217 {padding-bottom: 217px;}
-.p-b-218 {padding-bottom: 218px;}
-.p-b-219 {padding-bottom: 219px;}
-.p-b-220 {padding-bottom: 220px;}
-.p-b-221 {padding-bottom: 221px;}
-.p-b-222 {padding-bottom: 222px;}
-.p-b-223 {padding-bottom: 223px;}
-.p-b-224 {padding-bottom: 224px;}
-.p-b-225 {padding-bottom: 225px;}
-.p-b-226 {padding-bottom: 226px;}
-.p-b-227 {padding-bottom: 227px;}
-.p-b-228 {padding-bottom: 228px;}
-.p-b-229 {padding-bottom: 229px;}
-.p-b-230 {padding-bottom: 230px;}
-.p-b-231 {padding-bottom: 231px;}
-.p-b-232 {padding-bottom: 232px;}
-.p-b-233 {padding-bottom: 233px;}
-.p-b-234 {padding-bottom: 234px;}
-.p-b-235 {padding-bottom: 235px;}
-.p-b-236 {padding-bottom: 236px;}
-.p-b-237 {padding-bottom: 237px;}
-.p-b-238 {padding-bottom: 238px;}
-.p-b-239 {padding-bottom: 239px;}
-.p-b-240 {padding-bottom: 240px;}
-.p-b-241 {padding-bottom: 241px;}
-.p-b-242 {padding-bottom: 242px;}
-.p-b-243 {padding-bottom: 243px;}
-.p-b-244 {padding-bottom: 244px;}
-.p-b-245 {padding-bottom: 245px;}
-.p-b-246 {padding-bottom: 246px;}
-.p-b-247 {padding-bottom: 247px;}
-.p-b-248 {padding-bottom: 248px;}
-.p-b-249 {padding-bottom: 249px;}
-.p-b-250 {padding-bottom: 250px;}
-.p-l-0 {padding-left: 0px;}
-.p-l-1 {padding-left: 1px;}
-.p-l-2 {padding-left: 2px;}
-.p-l-3 {padding-left: 3px;}
-.p-l-4 {padding-left: 4px;}
-.p-l-5 {padding-left: 5px;}
-.p-l-6 {padding-left: 6px;}
-.p-l-7 {padding-left: 7px;}
-.p-l-8 {padding-left: 8px;}
-.p-l-9 {padding-left: 9px;}
-.p-l-10 {padding-left: 10px;}
-.p-l-11 {padding-left: 11px;}
-.p-l-12 {padding-left: 12px;}
-.p-l-13 {padding-left: 13px;}
-.p-l-14 {padding-left: 14px;}
-.p-l-15 {padding-left: 15px;}
-.p-l-16 {padding-left: 16px;}
-.p-l-17 {padding-left: 17px;}
-.p-l-18 {padding-left: 18px;}
-.p-l-19 {padding-left: 19px;}
-.p-l-20 {padding-left: 20px;}
-.p-l-21 {padding-left: 21px;}
-.p-l-22 {padding-left: 22px;}
-.p-l-23 {padding-left: 23px;}
-.p-l-24 {padding-left: 24px;}
-.p-l-25 {padding-left: 25px;}
-.p-l-26 {padding-left: 26px;}
-.p-l-27 {padding-left: 27px;}
-.p-l-28 {padding-left: 28px;}
-.p-l-29 {padding-left: 29px;}
-.p-l-30 {padding-left: 30px;}
-.p-l-31 {padding-left: 31px;}
-.p-l-32 {padding-left: 32px;}
-.p-l-33 {padding-left: 33px;}
-.p-l-34 {padding-left: 34px;}
-.p-l-35 {padding-left: 35px;}
-.p-l-36 {padding-left: 36px;}
-.p-l-37 {padding-left: 37px;}
-.p-l-38 {padding-left: 38px;}
-.p-l-39 {padding-left: 39px;}
-.p-l-40 {padding-left: 40px;}
-.p-l-41 {padding-left: 41px;}
-.p-l-42 {padding-left: 42px;}
-.p-l-43 {padding-left: 43px;}
-.p-l-44 {padding-left: 44px;}
-.p-l-45 {padding-left: 45px;}
-.p-l-46 {padding-left: 46px;}
-.p-l-47 {padding-left: 47px;}
-.p-l-48 {padding-left: 48px;}
-.p-l-49 {padding-left: 49px;}
-.p-l-50 {padding-left: 50px;}
-.p-l-51 {padding-left: 51px;}
-.p-l-52 {padding-left: 52px;}
-.p-l-53 {padding-left: 53px;}
-.p-l-54 {padding-left: 54px;}
-.p-l-55 {padding-left: 55px;}
-.p-l-56 {padding-left: 56px;}
-.p-l-57 {padding-left: 57px;}
-.p-l-58 {padding-left: 58px;}
-.p-l-59 {padding-left: 59px;}
-.p-l-60 {padding-left: 60px;}
-.p-l-61 {padding-left: 61px;}
-.p-l-62 {padding-left: 62px;}
-.p-l-63 {padding-left: 63px;}
-.p-l-64 {padding-left: 64px;}
-.p-l-65 {padding-left: 65px;}
-.p-l-66 {padding-left: 66px;}
-.p-l-67 {padding-left: 67px;}
-.p-l-68 {padding-left: 68px;}
-.p-l-69 {padding-left: 69px;}
-.p-l-70 {padding-left: 70px;}
-.p-l-71 {padding-left: 71px;}
-.p-l-72 {padding-left: 72px;}
-.p-l-73 {padding-left: 73px;}
-.p-l-74 {padding-left: 74px;}
-.p-l-75 {padding-left: 75px;}
-.p-l-76 {padding-left: 76px;}
-.p-l-77 {padding-left: 77px;}
-.p-l-78 {padding-left: 78px;}
-.p-l-79 {padding-left: 79px;}
-.p-l-80 {padding-left: 80px;}
-.p-l-81 {padding-left: 81px;}
-.p-l-82 {padding-left: 82px;}
-.p-l-83 {padding-left: 83px;}
-.p-l-84 {padding-left: 84px;}
-.p-l-85 {padding-left: 85px;}
-.p-l-86 {padding-left: 86px;}
-.p-l-87 {padding-left: 87px;}
-.p-l-88 {padding-left: 88px;}
-.p-l-89 {padding-left: 89px;}
-.p-l-90 {padding-left: 90px;}
-.p-l-91 {padding-left: 91px;}
-.p-l-92 {padding-left: 92px;}
-.p-l-93 {padding-left: 93px;}
-.p-l-94 {padding-left: 94px;}
-.p-l-95 {padding-left: 95px;}
-.p-l-96 {padding-left: 96px;}
-.p-l-97 {padding-left: 97px;}
-.p-l-98 {padding-left: 98px;}
-.p-l-99 {padding-left: 99px;}
-.p-l-100 {padding-left: 100px;}
-.p-l-101 {padding-left: 101px;}
-.p-l-102 {padding-left: 102px;}
-.p-l-103 {padding-left: 103px;}
-.p-l-104 {padding-left: 104px;}
-.p-l-105 {padding-left: 105px;}
-.p-l-106 {padding-left: 106px;}
-.p-l-107 {padding-left: 107px;}
-.p-l-108 {padding-left: 108px;}
-.p-l-109 {padding-left: 109px;}
-.p-l-110 {padding-left: 110px;}
-.p-l-111 {padding-left: 111px;}
-.p-l-112 {padding-left: 112px;}
-.p-l-113 {padding-left: 113px;}
-.p-l-114 {padding-left: 114px;}
-.p-l-115 {padding-left: 115px;}
-.p-l-116 {padding-left: 116px;}
-.p-l-117 {padding-left: 117px;}
-.p-l-118 {padding-left: 118px;}
-.p-l-119 {padding-left: 119px;}
-.p-l-120 {padding-left: 120px;}
-.p-l-121 {padding-left: 121px;}
-.p-l-122 {padding-left: 122px;}
-.p-l-123 {padding-left: 123px;}
-.p-l-124 {padding-left: 124px;}
-.p-l-125 {padding-left: 125px;}
-.p-l-126 {padding-left: 126px;}
-.p-l-127 {padding-left: 127px;}
-.p-l-128 {padding-left: 128px;}
-.p-l-129 {padding-left: 129px;}
-.p-l-130 {padding-left: 130px;}
-.p-l-131 {padding-left: 131px;}
-.p-l-132 {padding-left: 132px;}
-.p-l-133 {padding-left: 133px;}
-.p-l-134 {padding-left: 134px;}
-.p-l-135 {padding-left: 135px;}
-.p-l-136 {padding-left: 136px;}
-.p-l-137 {padding-left: 137px;}
-.p-l-138 {padding-left: 138px;}
-.p-l-139 {padding-left: 139px;}
-.p-l-140 {padding-left: 140px;}
-.p-l-141 {padding-left: 141px;}
-.p-l-142 {padding-left: 142px;}
-.p-l-143 {padding-left: 143px;}
-.p-l-144 {padding-left: 144px;}
-.p-l-145 {padding-left: 145px;}
-.p-l-146 {padding-left: 146px;}
-.p-l-147 {padding-left: 147px;}
-.p-l-148 {padding-left: 148px;}
-.p-l-149 {padding-left: 149px;}
-.p-l-150 {padding-left: 150px;}
-.p-l-151 {padding-left: 151px;}
-.p-l-152 {padding-left: 152px;}
-.p-l-153 {padding-left: 153px;}
-.p-l-154 {padding-left: 154px;}
-.p-l-155 {padding-left: 155px;}
-.p-l-156 {padding-left: 156px;}
-.p-l-157 {padding-left: 157px;}
-.p-l-158 {padding-left: 158px;}
-.p-l-159 {padding-left: 159px;}
-.p-l-160 {padding-left: 160px;}
-.p-l-161 {padding-left: 161px;}
-.p-l-162 {padding-left: 162px;}
-.p-l-163 {padding-left: 163px;}
-.p-l-164 {padding-left: 164px;}
-.p-l-165 {padding-left: 165px;}
-.p-l-166 {padding-left: 166px;}
-.p-l-167 {padding-left: 167px;}
-.p-l-168 {padding-left: 168px;}
-.p-l-169 {padding-left: 169px;}
-.p-l-170 {padding-left: 170px;}
-.p-l-171 {padding-left: 171px;}
-.p-l-172 {padding-left: 172px;}
-.p-l-173 {padding-left: 173px;}
-.p-l-174 {padding-left: 174px;}
-.p-l-175 {padding-left: 175px;}
-.p-l-176 {padding-left: 176px;}
-.p-l-177 {padding-left: 177px;}
-.p-l-178 {padding-left: 178px;}
-.p-l-179 {padding-left: 179px;}
-.p-l-180 {padding-left: 180px;}
-.p-l-181 {padding-left: 181px;}
-.p-l-182 {padding-left: 182px;}
-.p-l-183 {padding-left: 183px;}
-.p-l-184 {padding-left: 184px;}
-.p-l-185 {padding-left: 185px;}
-.p-l-186 {padding-left: 186px;}
-.p-l-187 {padding-left: 187px;}
-.p-l-188 {padding-left: 188px;}
-.p-l-189 {padding-left: 189px;}
-.p-l-190 {padding-left: 190px;}
-.p-l-191 {padding-left: 191px;}
-.p-l-192 {padding-left: 192px;}
-.p-l-193 {padding-left: 193px;}
-.p-l-194 {padding-left: 194px;}
-.p-l-195 {padding-left: 195px;}
-.p-l-196 {padding-left: 196px;}
-.p-l-197 {padding-left: 197px;}
-.p-l-198 {padding-left: 198px;}
-.p-l-199 {padding-left: 199px;}
-.p-l-200 {padding-left: 200px;}
-.p-l-201 {padding-left: 201px;}
-.p-l-202 {padding-left: 202px;}
-.p-l-203 {padding-left: 203px;}
-.p-l-204 {padding-left: 204px;}
-.p-l-205 {padding-left: 205px;}
-.p-l-206 {padding-left: 206px;}
-.p-l-207 {padding-left: 207px;}
-.p-l-208 {padding-left: 208px;}
-.p-l-209 {padding-left: 209px;}
-.p-l-210 {padding-left: 210px;}
-.p-l-211 {padding-left: 211px;}
-.p-l-212 {padding-left: 212px;}
-.p-l-213 {padding-left: 213px;}
-.p-l-214 {padding-left: 214px;}
-.p-l-215 {padding-left: 215px;}
-.p-l-216 {padding-left: 216px;}
-.p-l-217 {padding-left: 217px;}
-.p-l-218 {padding-left: 218px;}
-.p-l-219 {padding-left: 219px;}
-.p-l-220 {padding-left: 220px;}
-.p-l-221 {padding-left: 221px;}
-.p-l-222 {padding-left: 222px;}
-.p-l-223 {padding-left: 223px;}
-.p-l-224 {padding-left: 224px;}
-.p-l-225 {padding-left: 225px;}
-.p-l-226 {padding-left: 226px;}
-.p-l-227 {padding-left: 227px;}
-.p-l-228 {padding-left: 228px;}
-.p-l-229 {padding-left: 229px;}
-.p-l-230 {padding-left: 230px;}
-.p-l-231 {padding-left: 231px;}
-.p-l-232 {padding-left: 232px;}
-.p-l-233 {padding-left: 233px;}
-.p-l-234 {padding-left: 234px;}
-.p-l-235 {padding-left: 235px;}
-.p-l-236 {padding-left: 236px;}
-.p-l-237 {padding-left: 237px;}
-.p-l-238 {padding-left: 238px;}
-.p-l-239 {padding-left: 239px;}
-.p-l-240 {padding-left: 240px;}
-.p-l-241 {padding-left: 241px;}
-.p-l-242 {padding-left: 242px;}
-.p-l-243 {padding-left: 243px;}
-.p-l-244 {padding-left: 244px;}
-.p-l-245 {padding-left: 245px;}
-.p-l-246 {padding-left: 246px;}
-.p-l-247 {padding-left: 247px;}
-.p-l-248 {padding-left: 248px;}
-.p-l-249 {padding-left: 249px;}
-.p-l-250 {padding-left: 250px;}
-.p-r-0 {padding-right: 0px;}
-.p-r-1 {padding-right: 1px;}
-.p-r-2 {padding-right: 2px;}
-.p-r-3 {padding-right: 3px;}
-.p-r-4 {padding-right: 4px;}
-.p-r-5 {padding-right: 5px;}
-.p-r-6 {padding-right: 6px;}
-.p-r-7 {padding-right: 7px;}
-.p-r-8 {padding-right: 8px;}
-.p-r-9 {padding-right: 9px;}
-.p-r-10 {padding-right: 10px;}
-.p-r-11 {padding-right: 11px;}
-.p-r-12 {padding-right: 12px;}
-.p-r-13 {padding-right: 13px;}
-.p-r-14 {padding-right: 14px;}
-.p-r-15 {padding-right: 15px;}
-.p-r-16 {padding-right: 16px;}
-.p-r-17 {padding-right: 17px;}
-.p-r-18 {padding-right: 18px;}
-.p-r-19 {padding-right: 19px;}
-.p-r-20 {padding-right: 20px;}
-.p-r-21 {padding-right: 21px;}
-.p-r-22 {padding-right: 22px;}
-.p-r-23 {padding-right: 23px;}
-.p-r-24 {padding-right: 24px;}
-.p-r-25 {padding-right: 25px;}
-.p-r-26 {padding-right: 26px;}
-.p-r-27 {padding-right: 27px;}
-.p-r-28 {padding-right: 28px;}
-.p-r-29 {padding-right: 29px;}
-.p-r-30 {padding-right: 30px;}
-.p-r-31 {padding-right: 31px;}
-.p-r-32 {padding-right: 32px;}
-.p-r-33 {padding-right: 33px;}
-.p-r-34 {padding-right: 34px;}
-.p-r-35 {padding-right: 35px;}
-.p-r-36 {padding-right: 36px;}
-.p-r-37 {padding-right: 37px;}
-.p-r-38 {padding-right: 38px;}
-.p-r-39 {padding-right: 39px;}
-.p-r-40 {padding-right: 40px;}
-.p-r-41 {padding-right: 41px;}
-.p-r-42 {padding-right: 42px;}
-.p-r-43 {padding-right: 43px;}
-.p-r-44 {padding-right: 44px;}
-.p-r-45 {padding-right: 45px;}
-.p-r-46 {padding-right: 46px;}
-.p-r-47 {padding-right: 47px;}
-.p-r-48 {padding-right: 48px;}
-.p-r-49 {padding-right: 49px;}
-.p-r-50 {padding-right: 50px;}
-.p-r-51 {padding-right: 51px;}
-.p-r-52 {padding-right: 52px;}
-.p-r-53 {padding-right: 53px;}
-.p-r-54 {padding-right: 54px;}
-.p-r-55 {padding-right: 55px;}
-.p-r-56 {padding-right: 56px;}
-.p-r-57 {padding-right: 57px;}
-.p-r-58 {padding-right: 58px;}
-.p-r-59 {padding-right: 59px;}
-.p-r-60 {padding-right: 60px;}
-.p-r-61 {padding-right: 61px;}
-.p-r-62 {padding-right: 62px;}
-.p-r-63 {padding-right: 63px;}
-.p-r-64 {padding-right: 64px;}
-.p-r-65 {padding-right: 65px;}
-.p-r-66 {padding-right: 66px;}
-.p-r-67 {padding-right: 67px;}
-.p-r-68 {padding-right: 68px;}
-.p-r-69 {padding-right: 69px;}
-.p-r-70 {padding-right: 70px;}
-.p-r-71 {padding-right: 71px;}
-.p-r-72 {padding-right: 72px;}
-.p-r-73 {padding-right: 73px;}
-.p-r-74 {padding-right: 74px;}
-.p-r-75 {padding-right: 75px;}
-.p-r-76 {padding-right: 76px;}
-.p-r-77 {padding-right: 77px;}
-.p-r-78 {padding-right: 78px;}
-.p-r-79 {padding-right: 79px;}
-.p-r-80 {padding-right: 80px;}
-.p-r-81 {padding-right: 81px;}
-.p-r-82 {padding-right: 82px;}
-.p-r-83 {padding-right: 83px;}
-.p-r-84 {padding-right: 84px;}
-.p-r-85 {padding-right: 85px;}
-.p-r-86 {padding-right: 86px;}
-.p-r-87 {padding-right: 87px;}
-.p-r-88 {padding-right: 88px;}
-.p-r-89 {padding-right: 89px;}
-.p-r-90 {padding-right: 90px;}
-.p-r-91 {padding-right: 91px;}
-.p-r-92 {padding-right: 92px;}
-.p-r-93 {padding-right: 93px;}
-.p-r-94 {padding-right: 94px;}
-.p-r-95 {padding-right: 95px;}
-.p-r-96 {padding-right: 96px;}
-.p-r-97 {padding-right: 97px;}
-.p-r-98 {padding-right: 98px;}
-.p-r-99 {padding-right: 99px;}
-.p-r-100 {padding-right: 100px;}
-.p-r-101 {padding-right: 101px;}
-.p-r-102 {padding-right: 102px;}
-.p-r-103 {padding-right: 103px;}
-.p-r-104 {padding-right: 104px;}
-.p-r-105 {padding-right: 105px;}
-.p-r-106 {padding-right: 106px;}
-.p-r-107 {padding-right: 107px;}
-.p-r-108 {padding-right: 108px;}
-.p-r-109 {padding-right: 109px;}
-.p-r-110 {padding-right: 110px;}
-.p-r-111 {padding-right: 111px;}
-.p-r-112 {padding-right: 112px;}
-.p-r-113 {padding-right: 113px;}
-.p-r-114 {padding-right: 114px;}
-.p-r-115 {padding-right: 115px;}
-.p-r-116 {padding-right: 116px;}
-.p-r-117 {padding-right: 117px;}
-.p-r-118 {padding-right: 118px;}
-.p-r-119 {padding-right: 119px;}
-.p-r-120 {padding-right: 120px;}
-.p-r-121 {padding-right: 121px;}
-.p-r-122 {padding-right: 122px;}
-.p-r-123 {padding-right: 123px;}
-.p-r-124 {padding-right: 124px;}
-.p-r-125 {padding-right: 125px;}
-.p-r-126 {padding-right: 126px;}
-.p-r-127 {padding-right: 127px;}
-.p-r-128 {padding-right: 128px;}
-.p-r-129 {padding-right: 129px;}
-.p-r-130 {padding-right: 130px;}
-.p-r-131 {padding-right: 131px;}
-.p-r-132 {padding-right: 132px;}
-.p-r-133 {padding-right: 133px;}
-.p-r-134 {padding-right: 134px;}
-.p-r-135 {padding-right: 135px;}
-.p-r-136 {padding-right: 136px;}
-.p-r-137 {padding-right: 137px;}
-.p-r-138 {padding-right: 138px;}
-.p-r-139 {padding-right: 139px;}
-.p-r-140 {padding-right: 140px;}
-.p-r-141 {padding-right: 141px;}
-.p-r-142 {padding-right: 142px;}
-.p-r-143 {padding-right: 143px;}
-.p-r-144 {padding-right: 144px;}
-.p-r-145 {padding-right: 145px;}
-.p-r-146 {padding-right: 146px;}
-.p-r-147 {padding-right: 147px;}
-.p-r-148 {padding-right: 148px;}
-.p-r-149 {padding-right: 149px;}
-.p-r-150 {padding-right: 150px;}
-.p-r-151 {padding-right: 151px;}
-.p-r-152 {padding-right: 152px;}
-.p-r-153 {padding-right: 153px;}
-.p-r-154 {padding-right: 154px;}
-.p-r-155 {padding-right: 155px;}
-.p-r-156 {padding-right: 156px;}
-.p-r-157 {padding-right: 157px;}
-.p-r-158 {padding-right: 158px;}
-.p-r-159 {padding-right: 159px;}
-.p-r-160 {padding-right: 160px;}
-.p-r-161 {padding-right: 161px;}
-.p-r-162 {padding-right: 162px;}
-.p-r-163 {padding-right: 163px;}
-.p-r-164 {padding-right: 164px;}
-.p-r-165 {padding-right: 165px;}
-.p-r-166 {padding-right: 166px;}
-.p-r-167 {padding-right: 167px;}
-.p-r-168 {padding-right: 168px;}
-.p-r-169 {padding-right: 169px;}
-.p-r-170 {padding-right: 170px;}
-.p-r-171 {padding-right: 171px;}
-.p-r-172 {padding-right: 172px;}
-.p-r-173 {padding-right: 173px;}
-.p-r-174 {padding-right: 174px;}
-.p-r-175 {padding-right: 175px;}
-.p-r-176 {padding-right: 176px;}
-.p-r-177 {padding-right: 177px;}
-.p-r-178 {padding-right: 178px;}
-.p-r-179 {padding-right: 179px;}
-.p-r-180 {padding-right: 180px;}
-.p-r-181 {padding-right: 181px;}
-.p-r-182 {padding-right: 182px;}
-.p-r-183 {padding-right: 183px;}
-.p-r-184 {padding-right: 184px;}
-.p-r-185 {padding-right: 185px;}
-.p-r-186 {padding-right: 186px;}
-.p-r-187 {padding-right: 187px;}
-.p-r-188 {padding-right: 188px;}
-.p-r-189 {padding-right: 189px;}
-.p-r-190 {padding-right: 190px;}
-.p-r-191 {padding-right: 191px;}
-.p-r-192 {padding-right: 192px;}
-.p-r-193 {padding-right: 193px;}
-.p-r-194 {padding-right: 194px;}
-.p-r-195 {padding-right: 195px;}
-.p-r-196 {padding-right: 196px;}
-.p-r-197 {padding-right: 197px;}
-.p-r-198 {padding-right: 198px;}
-.p-r-199 {padding-right: 199px;}
-.p-r-200 {padding-right: 200px;}
-.p-r-201 {padding-right: 201px;}
-.p-r-202 {padding-right: 202px;}
-.p-r-203 {padding-right: 203px;}
-.p-r-204 {padding-right: 204px;}
-.p-r-205 {padding-right: 205px;}
-.p-r-206 {padding-right: 206px;}
-.p-r-207 {padding-right: 207px;}
-.p-r-208 {padding-right: 208px;}
-.p-r-209 {padding-right: 209px;}
-.p-r-210 {padding-right: 210px;}
-.p-r-211 {padding-right: 211px;}
-.p-r-212 {padding-right: 212px;}
-.p-r-213 {padding-right: 213px;}
-.p-r-214 {padding-right: 214px;}
-.p-r-215 {padding-right: 215px;}
-.p-r-216 {padding-right: 216px;}
-.p-r-217 {padding-right: 217px;}
-.p-r-218 {padding-right: 218px;}
-.p-r-219 {padding-right: 219px;}
-.p-r-220 {padding-right: 220px;}
-.p-r-221 {padding-right: 221px;}
-.p-r-222 {padding-right: 222px;}
-.p-r-223 {padding-right: 223px;}
-.p-r-224 {padding-right: 224px;}
-.p-r-225 {padding-right: 225px;}
-.p-r-226 {padding-right: 226px;}
-.p-r-227 {padding-right: 227px;}
-.p-r-228 {padding-right: 228px;}
-.p-r-229 {padding-right: 229px;}
-.p-r-230 {padding-right: 230px;}
-.p-r-231 {padding-right: 231px;}
-.p-r-232 {padding-right: 232px;}
-.p-r-233 {padding-right: 233px;}
-.p-r-234 {padding-right: 234px;}
-.p-r-235 {padding-right: 235px;}
-.p-r-236 {padding-right: 236px;}
-.p-r-237 {padding-right: 237px;}
-.p-r-238 {padding-right: 238px;}
-.p-r-239 {padding-right: 239px;}
-.p-r-240 {padding-right: 240px;}
-.p-r-241 {padding-right: 241px;}
-.p-r-242 {padding-right: 242px;}
-.p-r-243 {padding-right: 243px;}
-.p-r-244 {padding-right: 244px;}
-.p-r-245 {padding-right: 245px;}
-.p-r-246 {padding-right: 246px;}
-.p-r-247 {padding-right: 247px;}
-.p-r-248 {padding-right: 248px;}
-.p-r-249 {padding-right: 249px;}
-.p-r-250 {padding-right: 250px;}
-
-/*[ MARGIN ]
-///////////////////////////////////////////////////////////
-*/
-.m-t-0 {margin-top: 0px;}
-.m-t-1 {margin-top: 1px;}
-.m-t-2 {margin-top: 2px;}
-.m-t-3 {margin-top: 3px;}
-.m-t-4 {margin-top: 4px;}
-.m-t-5 {margin-top: 5px;}
-.m-t-6 {margin-top: 6px;}
-.m-t-7 {margin-top: 7px;}
-.m-t-8 {margin-top: 8px;}
-.m-t-9 {margin-top: 9px;}
-.m-t-10 {margin-top: 10px;}
-.m-t-11 {margin-top: 11px;}
-.m-t-12 {margin-top: 12px;}
-.m-t-13 {margin-top: 13px;}
-.m-t-14 {margin-top: 14px;}
-.m-t-15 {margin-top: 15px;}
-.m-t-16 {margin-top: 16px;}
-.m-t-17 {margin-top: 17px;}
-.m-t-18 {margin-top: 18px;}
-.m-t-19 {margin-top: 19px;}
-.m-t-20 {margin-top: 20px;}
-.m-t-21 {margin-top: 21px;}
-.m-t-22 {margin-top: 22px;}
-.m-t-23 {margin-top: 23px;}
-.m-t-24 {margin-top: 24px;}
-.m-t-25 {margin-top: 25px;}
-.m-t-26 {margin-top: 26px;}
-.m-t-27 {margin-top: 27px;}
-.m-t-28 {margin-top: 28px;}
-.m-t-29 {margin-top: 29px;}
-.m-t-30 {margin-top: 30px;}
-.m-t-31 {margin-top: 31px;}
-.m-t-32 {margin-top: 32px;}
-.m-t-33 {margin-top: 33px;}
-.m-t-34 {margin-top: 34px;}
-.m-t-35 {margin-top: 35px;}
-.m-t-36 {margin-top: 36px;}
-.m-t-37 {margin-top: 37px;}
-.m-t-38 {margin-top: 38px;}
-.m-t-39 {margin-top: 39px;}
-.m-t-40 {margin-top: 40px;}
-.m-t-41 {margin-top: 41px;}
-.m-t-42 {margin-top: 42px;}
-.m-t-43 {margin-top: 43px;}
-.m-t-44 {margin-top: 44px;}
-.m-t-45 {margin-top: 45px;}
-.m-t-46 {margin-top: 46px;}
-.m-t-47 {margin-top: 47px;}
-.m-t-48 {margin-top: 48px;}
-.m-t-49 {margin-top: 49px;}
-.m-t-50 {margin-top: 50px;}
-.m-t-51 {margin-top: 51px;}
-.m-t-52 {margin-top: 52px;}
-.m-t-53 {margin-top: 53px;}
-.m-t-54 {margin-top: 54px;}
-.m-t-55 {margin-top: 55px;}
-.m-t-56 {margin-top: 56px;}
-.m-t-57 {margin-top: 57px;}
-.m-t-58 {margin-top: 58px;}
-.m-t-59 {margin-top: 59px;}
-.m-t-60 {margin-top: 60px;}
-.m-t-61 {margin-top: 61px;}
-.m-t-62 {margin-top: 62px;}
-.m-t-63 {margin-top: 63px;}
-.m-t-64 {margin-top: 64px;}
-.m-t-65 {margin-top: 65px;}
-.m-t-66 {margin-top: 66px;}
-.m-t-67 {margin-top: 67px;}
-.m-t-68 {margin-top: 68px;}
-.m-t-69 {margin-top: 69px;}
-.m-t-70 {margin-top: 70px;}
-.m-t-71 {margin-top: 71px;}
-.m-t-72 {margin-top: 72px;}
-.m-t-73 {margin-top: 73px;}
-.m-t-74 {margin-top: 74px;}
-.m-t-75 {margin-top: 75px;}
-.m-t-76 {margin-top: 76px;}
-.m-t-77 {margin-top: 77px;}
-.m-t-78 {margin-top: 78px;}
-.m-t-79 {margin-top: 79px;}
-.m-t-80 {margin-top: 80px;}
-.m-t-81 {margin-top: 81px;}
-.m-t-82 {margin-top: 82px;}
-.m-t-83 {margin-top: 83px;}
-.m-t-84 {margin-top: 84px;}
-.m-t-85 {margin-top: 85px;}
-.m-t-86 {margin-top: 86px;}
-.m-t-87 {margin-top: 87px;}
-.m-t-88 {margin-top: 88px;}
-.m-t-89 {margin-top: 89px;}
-.m-t-90 {margin-top: 90px;}
-.m-t-91 {margin-top: 91px;}
-.m-t-92 {margin-top: 92px;}
-.m-t-93 {margin-top: 93px;}
-.m-t-94 {margin-top: 94px;}
-.m-t-95 {margin-top: 95px;}
-.m-t-96 {margin-top: 96px;}
-.m-t-97 {margin-top: 97px;}
-.m-t-98 {margin-top: 98px;}
-.m-t-99 {margin-top: 99px;}
-.m-t-100 {margin-top: 100px;}
-.m-t-101 {margin-top: 101px;}
-.m-t-102 {margin-top: 102px;}
-.m-t-103 {margin-top: 103px;}
-.m-t-104 {margin-top: 104px;}
-.m-t-105 {margin-top: 105px;}
-.m-t-106 {margin-top: 106px;}
-.m-t-107 {margin-top: 107px;}
-.m-t-108 {margin-top: 108px;}
-.m-t-109 {margin-top: 109px;}
-.m-t-110 {margin-top: 110px;}
-.m-t-111 {margin-top: 111px;}
-.m-t-112 {margin-top: 112px;}
-.m-t-113 {margin-top: 113px;}
-.m-t-114 {margin-top: 114px;}
-.m-t-115 {margin-top: 115px;}
-.m-t-116 {margin-top: 116px;}
-.m-t-117 {margin-top: 117px;}
-.m-t-118 {margin-top: 118px;}
-.m-t-119 {margin-top: 119px;}
-.m-t-120 {margin-top: 120px;}
-.m-t-121 {margin-top: 121px;}
-.m-t-122 {margin-top: 122px;}
-.m-t-123 {margin-top: 123px;}
-.m-t-124 {margin-top: 124px;}
-.m-t-125 {margin-top: 125px;}
-.m-t-126 {margin-top: 126px;}
-.m-t-127 {margin-top: 127px;}
-.m-t-128 {margin-top: 128px;}
-.m-t-129 {margin-top: 129px;}
-.m-t-130 {margin-top: 130px;}
-.m-t-131 {margin-top: 131px;}
-.m-t-132 {margin-top: 132px;}
-.m-t-133 {margin-top: 133px;}
-.m-t-134 {margin-top: 134px;}
-.m-t-135 {margin-top: 135px;}
-.m-t-136 {margin-top: 136px;}
-.m-t-137 {margin-top: 137px;}
-.m-t-138 {margin-top: 138px;}
-.m-t-139 {margin-top: 139px;}
-.m-t-140 {margin-top: 140px;}
-.m-t-141 {margin-top: 141px;}
-.m-t-142 {margin-top: 142px;}
-.m-t-143 {margin-top: 143px;}
-.m-t-144 {margin-top: 144px;}
-.m-t-145 {margin-top: 145px;}
-.m-t-146 {margin-top: 146px;}
-.m-t-147 {margin-top: 147px;}
-.m-t-148 {margin-top: 148px;}
-.m-t-149 {margin-top: 149px;}
-.m-t-150 {margin-top: 150px;}
-.m-t-151 {margin-top: 151px;}
-.m-t-152 {margin-top: 152px;}
-.m-t-153 {margin-top: 153px;}
-.m-t-154 {margin-top: 154px;}
-.m-t-155 {margin-top: 155px;}
-.m-t-156 {margin-top: 156px;}
-.m-t-157 {margin-top: 157px;}
-.m-t-158 {margin-top: 158px;}
-.m-t-159 {margin-top: 159px;}
-.m-t-160 {margin-top: 160px;}
-.m-t-161 {margin-top: 161px;}
-.m-t-162 {margin-top: 162px;}
-.m-t-163 {margin-top: 163px;}
-.m-t-164 {margin-top: 164px;}
-.m-t-165 {margin-top: 165px;}
-.m-t-166 {margin-top: 166px;}
-.m-t-167 {margin-top: 167px;}
-.m-t-168 {margin-top: 168px;}
-.m-t-169 {margin-top: 169px;}
-.m-t-170 {margin-top: 170px;}
-.m-t-171 {margin-top: 171px;}
-.m-t-172 {margin-top: 172px;}
-.m-t-173 {margin-top: 173px;}
-.m-t-174 {margin-top: 174px;}
-.m-t-175 {margin-top: 175px;}
-.m-t-176 {margin-top: 176px;}
-.m-t-177 {margin-top: 177px;}
-.m-t-178 {margin-top: 178px;}
-.m-t-179 {margin-top: 179px;}
-.m-t-180 {margin-top: 180px;}
-.m-t-181 {margin-top: 181px;}
-.m-t-182 {margin-top: 182px;}
-.m-t-183 {margin-top: 183px;}
-.m-t-184 {margin-top: 184px;}
-.m-t-185 {margin-top: 185px;}
-.m-t-186 {margin-top: 186px;}
-.m-t-187 {margin-top: 187px;}
-.m-t-188 {margin-top: 188px;}
-.m-t-189 {margin-top: 189px;}
-.m-t-190 {margin-top: 190px;}
-.m-t-191 {margin-top: 191px;}
-.m-t-192 {margin-top: 192px;}
-.m-t-193 {margin-top: 193px;}
-.m-t-194 {margin-top: 194px;}
-.m-t-195 {margin-top: 195px;}
-.m-t-196 {margin-top: 196px;}
-.m-t-197 {margin-top: 197px;}
-.m-t-198 {margin-top: 198px;}
-.m-t-199 {margin-top: 199px;}
-.m-t-200 {margin-top: 200px;}
-.m-t-201 {margin-top: 201px;}
-.m-t-202 {margin-top: 202px;}
-.m-t-203 {margin-top: 203px;}
-.m-t-204 {margin-top: 204px;}
-.m-t-205 {margin-top: 205px;}
-.m-t-206 {margin-top: 206px;}
-.m-t-207 {margin-top: 207px;}
-.m-t-208 {margin-top: 208px;}
-.m-t-209 {margin-top: 209px;}
-.m-t-210 {margin-top: 210px;}
-.m-t-211 {margin-top: 211px;}
-.m-t-212 {margin-top: 212px;}
-.m-t-213 {margin-top: 213px;}
-.m-t-214 {margin-top: 214px;}
-.m-t-215 {margin-top: 215px;}
-.m-t-216 {margin-top: 216px;}
-.m-t-217 {margin-top: 217px;}
-.m-t-218 {margin-top: 218px;}
-.m-t-219 {margin-top: 219px;}
-.m-t-220 {margin-top: 220px;}
-.m-t-221 {margin-top: 221px;}
-.m-t-222 {margin-top: 222px;}
-.m-t-223 {margin-top: 223px;}
-.m-t-224 {margin-top: 224px;}
-.m-t-225 {margin-top: 225px;}
-.m-t-226 {margin-top: 226px;}
-.m-t-227 {margin-top: 227px;}
-.m-t-228 {margin-top: 228px;}
-.m-t-229 {margin-top: 229px;}
-.m-t-230 {margin-top: 230px;}
-.m-t-231 {margin-top: 231px;}
-.m-t-232 {margin-top: 232px;}
-.m-t-233 {margin-top: 233px;}
-.m-t-234 {margin-top: 234px;}
-.m-t-235 {margin-top: 235px;}
-.m-t-236 {margin-top: 236px;}
-.m-t-237 {margin-top: 237px;}
-.m-t-238 {margin-top: 238px;}
-.m-t-239 {margin-top: 239px;}
-.m-t-240 {margin-top: 240px;}
-.m-t-241 {margin-top: 241px;}
-.m-t-242 {margin-top: 242px;}
-.m-t-243 {margin-top: 243px;}
-.m-t-244 {margin-top: 244px;}
-.m-t-245 {margin-top: 245px;}
-.m-t-246 {margin-top: 246px;}
-.m-t-247 {margin-top: 247px;}
-.m-t-248 {margin-top: 248px;}
-.m-t-249 {margin-top: 249px;}
-.m-t-250 {margin-top: 250px;}
-.m-b-0 {margin-bottom: 0px;}
-.m-b-1 {margin-bottom: 1px;}
-.m-b-2 {margin-bottom: 2px;}
-.m-b-3 {margin-bottom: 3px;}
-.m-b-4 {margin-bottom: 4px;}
-.m-b-5 {margin-bottom: 5px;}
-.m-b-6 {margin-bottom: 6px;}
-.m-b-7 {margin-bottom: 7px;}
-.m-b-8 {margin-bottom: 8px;}
-.m-b-9 {margin-bottom: 9px;}
-.m-b-10 {margin-bottom: 10px;}
-.m-b-11 {margin-bottom: 11px;}
-.m-b-12 {margin-bottom: 12px;}
-.m-b-13 {margin-bottom: 13px;}
-.m-b-14 {margin-bottom: 14px;}
-.m-b-15 {margin-bottom: 15px;}
-.m-b-16 {margin-bottom: 16px;}
-.m-b-17 {margin-bottom: 17px;}
-.m-b-18 {margin-bottom: 18px;}
-.m-b-19 {margin-bottom: 19px;}
-.m-b-20 {margin-bottom: 20px;}
-.m-b-21 {margin-bottom: 21px;}
-.m-b-22 {margin-bottom: 22px;}
-.m-b-23 {margin-bottom: 23px;}
-.m-b-24 {margin-bottom: 24px;}
-.m-b-25 {margin-bottom: 25px;}
-.m-b-26 {margin-bottom: 26px;}
-.m-b-27 {margin-bottom: 27px;}
-.m-b-28 {margin-bottom: 28px;}
-.m-b-29 {margin-bottom: 29px;}
-.m-b-30 {margin-bottom: 30px;}
-.m-b-31 {margin-bottom: 31px;}
-.m-b-32 {margin-bottom: 32px;}
-.m-b-33 {margin-bottom: 33px;}
-.m-b-34 {margin-bottom: 34px;}
-.m-b-35 {margin-bottom: 35px;}
-.m-b-36 {margin-bottom: 36px;}
-.m-b-37 {margin-bottom: 37px;}
-.m-b-38 {margin-bottom: 38px;}
-.m-b-39 {margin-bottom: 39px;}
-.m-b-40 {margin-bottom: 40px;}
-.m-b-41 {margin-bottom: 41px;}
-.m-b-42 {margin-bottom: 42px;}
-.m-b-43 {margin-bottom: 43px;}
-.m-b-44 {margin-bottom: 44px;}
-.m-b-45 {margin-bottom: 45px;}
-.m-b-46 {margin-bottom: 46px;}
-.m-b-47 {margin-bottom: 47px;}
-.m-b-48 {margin-bottom: 48px;}
-.m-b-49 {margin-bottom: 49px;}
-.m-b-50 {margin-bottom: 50px;}
-.m-b-51 {margin-bottom: 51px;}
-.m-b-52 {margin-bottom: 52px;}
-.m-b-53 {margin-bottom: 53px;}
-.m-b-54 {margin-bottom: 54px;}
-.m-b-55 {margin-bottom: 55px;}
-.m-b-56 {margin-bottom: 56px;}
-.m-b-57 {margin-bottom: 57px;}
-.m-b-58 {margin-bottom: 58px;}
-.m-b-59 {margin-bottom: 59px;}
-.m-b-60 {margin-bottom: 60px;}
-.m-b-61 {margin-bottom: 61px;}
-.m-b-62 {margin-bottom: 62px;}
-.m-b-63 {margin-bottom: 63px;}
-.m-b-64 {margin-bottom: 64px;}
-.m-b-65 {margin-bottom: 65px;}
-.m-b-66 {margin-bottom: 66px;}
-.m-b-67 {margin-bottom: 67px;}
-.m-b-68 {margin-bottom: 68px;}
-.m-b-69 {margin-bottom: 69px;}
-.m-b-70 {margin-bottom: 70px;}
-.m-b-71 {margin-bottom: 71px;}
-.m-b-72 {margin-bottom: 72px;}
-.m-b-73 {margin-bottom: 73px;}
-.m-b-74 {margin-bottom: 74px;}
-.m-b-75 {margin-bottom: 75px;}
-.m-b-76 {margin-bottom: 76px;}
-.m-b-77 {margin-bottom: 77px;}
-.m-b-78 {margin-bottom: 78px;}
-.m-b-79 {margin-bottom: 79px;}
-.m-b-80 {margin-bottom: 80px;}
-.m-b-81 {margin-bottom: 81px;}
-.m-b-82 {margin-bottom: 82px;}
-.m-b-83 {margin-bottom: 83px;}
-.m-b-84 {margin-bottom: 84px;}
-.m-b-85 {margin-bottom: 85px;}
-.m-b-86 {margin-bottom: 86px;}
-.m-b-87 {margin-bottom: 87px;}
-.m-b-88 {margin-bottom: 88px;}
-.m-b-89 {margin-bottom: 89px;}
-.m-b-90 {margin-bottom: 90px;}
-.m-b-91 {margin-bottom: 91px;}
-.m-b-92 {margin-bottom: 92px;}
-.m-b-93 {margin-bottom: 93px;}
-.m-b-94 {margin-bottom: 94px;}
-.m-b-95 {margin-bottom: 95px;}
-.m-b-96 {margin-bottom: 96px;}
-.m-b-97 {margin-bottom: 97px;}
-.m-b-98 {margin-bottom: 98px;}
-.m-b-99 {margin-bottom: 99px;}
-.m-b-100 {margin-bottom: 100px;}
-.m-b-101 {margin-bottom: 101px;}
-.m-b-102 {margin-bottom: 102px;}
-.m-b-103 {margin-bottom: 103px;}
-.m-b-104 {margin-bottom: 104px;}
-.m-b-105 {margin-bottom: 105px;}
-.m-b-106 {margin-bottom: 106px;}
-.m-b-107 {margin-bottom: 107px;}
-.m-b-108 {margin-bottom: 108px;}
-.m-b-109 {margin-bottom: 109px;}
-.m-b-110 {margin-bottom: 110px;}
-.m-b-111 {margin-bottom: 111px;}
-.m-b-112 {margin-bottom: 112px;}
-.m-b-113 {margin-bottom: 113px;}
-.m-b-114 {margin-bottom: 114px;}
-.m-b-115 {margin-bottom: 115px;}
-.m-b-116 {margin-bottom: 116px;}
-.m-b-117 {margin-bottom: 117px;}
-.m-b-118 {margin-bottom: 118px;}
-.m-b-119 {margin-bottom: 119px;}
-.m-b-120 {margin-bottom: 120px;}
-.m-b-121 {margin-bottom: 121px;}
-.m-b-122 {margin-bottom: 122px;}
-.m-b-123 {margin-bottom: 123px;}
-.m-b-124 {margin-bottom: 124px;}
-.m-b-125 {margin-bottom: 125px;}
-.m-b-126 {margin-bottom: 126px;}
-.m-b-127 {margin-bottom: 127px;}
-.m-b-128 {margin-bottom: 128px;}
-.m-b-129 {margin-bottom: 129px;}
-.m-b-130 {margin-bottom: 130px;}
-.m-b-131 {margin-bottom: 131px;}
-.m-b-132 {margin-bottom: 132px;}
-.m-b-133 {margin-bottom: 133px;}
-.m-b-134 {margin-bottom: 134px;}
-.m-b-135 {margin-bottom: 135px;}
-.m-b-136 {margin-bottom: 136px;}
-.m-b-137 {margin-bottom: 137px;}
-.m-b-138 {margin-bottom: 138px;}
-.m-b-139 {margin-bottom: 139px;}
-.m-b-140 {margin-bottom: 140px;}
-.m-b-141 {margin-bottom: 141px;}
-.m-b-142 {margin-bottom: 142px;}
-.m-b-143 {margin-bottom: 143px;}
-.m-b-144 {margin-bottom: 144px;}
-.m-b-145 {margin-bottom: 145px;}
-.m-b-146 {margin-bottom: 146px;}
-.m-b-147 {margin-bottom: 147px;}
-.m-b-148 {margin-bottom: 148px;}
-.m-b-149 {margin-bottom: 149px;}
-.m-b-150 {margin-bottom: 150px;}
-.m-b-151 {margin-bottom: 151px;}
-.m-b-152 {margin-bottom: 152px;}
-.m-b-153 {margin-bottom: 153px;}
-.m-b-154 {margin-bottom: 154px;}
-.m-b-155 {margin-bottom: 155px;}
-.m-b-156 {margin-bottom: 156px;}
-.m-b-157 {margin-bottom: 157px;}
-.m-b-158 {margin-bottom: 158px;}
-.m-b-159 {margin-bottom: 159px;}
-.m-b-160 {margin-bottom: 160px;}
-.m-b-161 {margin-bottom: 161px;}
-.m-b-162 {margin-bottom: 162px;}
-.m-b-163 {margin-bottom: 163px;}
-.m-b-164 {margin-bottom: 164px;}
-.m-b-165 {margin-bottom: 165px;}
-.m-b-166 {margin-bottom: 166px;}
-.m-b-167 {margin-bottom: 167px;}
-.m-b-168 {margin-bottom: 168px;}
-.m-b-169 {margin-bottom: 169px;}
-.m-b-170 {margin-bottom: 170px;}
-.m-b-171 {margin-bottom: 171px;}
-.m-b-172 {margin-bottom: 172px;}
-.m-b-173 {margin-bottom: 173px;}
-.m-b-174 {margin-bottom: 174px;}
-.m-b-175 {margin-bottom: 175px;}
-.m-b-176 {margin-bottom: 176px;}
-.m-b-177 {margin-bottom: 177px;}
-.m-b-178 {margin-bottom: 178px;}
-.m-b-179 {margin-bottom: 179px;}
-.m-b-180 {margin-bottom: 180px;}
-.m-b-181 {margin-bottom: 181px;}
-.m-b-182 {margin-bottom: 182px;}
-.m-b-183 {margin-bottom: 183px;}
-.m-b-184 {margin-bottom: 184px;}
-.m-b-185 {margin-bottom: 185px;}
-.m-b-186 {margin-bottom: 186px;}
-.m-b-187 {margin-bottom: 187px;}
-.m-b-188 {margin-bottom: 188px;}
-.m-b-189 {margin-bottom: 189px;}
-.m-b-190 {margin-bottom: 190px;}
-.m-b-191 {margin-bottom: 191px;}
-.m-b-192 {margin-bottom: 192px;}
-.m-b-193 {margin-bottom: 193px;}
-.m-b-194 {margin-bottom: 194px;}
-.m-b-195 {margin-bottom: 195px;}
-.m-b-196 {margin-bottom: 196px;}
-.m-b-197 {margin-bottom: 197px;}
-.m-b-198 {margin-bottom: 198px;}
-.m-b-199 {margin-bottom: 199px;}
-.m-b-200 {margin-bottom: 200px;}
-.m-b-201 {margin-bottom: 201px;}
-.m-b-202 {margin-bottom: 202px;}
-.m-b-203 {margin-bottom: 203px;}
-.m-b-204 {margin-bottom: 204px;}
-.m-b-205 {margin-bottom: 205px;}
-.m-b-206 {margin-bottom: 206px;}
-.m-b-207 {margin-bottom: 207px;}
-.m-b-208 {margin-bottom: 208px;}
-.m-b-209 {margin-bottom: 209px;}
-.m-b-210 {margin-bottom: 210px;}
-.m-b-211 {margin-bottom: 211px;}
-.m-b-212 {margin-bottom: 212px;}
-.m-b-213 {margin-bottom: 213px;}
-.m-b-214 {margin-bottom: 214px;}
-.m-b-215 {margin-bottom: 215px;}
-.m-b-216 {margin-bottom: 216px;}
-.m-b-217 {margin-bottom: 217px;}
-.m-b-218 {margin-bottom: 218px;}
-.m-b-219 {margin-bottom: 219px;}
-.m-b-220 {margin-bottom: 220px;}
-.m-b-221 {margin-bottom: 221px;}
-.m-b-222 {margin-bottom: 222px;}
-.m-b-223 {margin-bottom: 223px;}
-.m-b-224 {margin-bottom: 224px;}
-.m-b-225 {margin-bottom: 225px;}
-.m-b-226 {margin-bottom: 226px;}
-.m-b-227 {margin-bottom: 227px;}
-.m-b-228 {margin-bottom: 228px;}
-.m-b-229 {margin-bottom: 229px;}
-.m-b-230 {margin-bottom: 230px;}
-.m-b-231 {margin-bottom: 231px;}
-.m-b-232 {margin-bottom: 232px;}
-.m-b-233 {margin-bottom: 233px;}
-.m-b-234 {margin-bottom: 234px;}
-.m-b-235 {margin-bottom: 235px;}
-.m-b-236 {margin-bottom: 236px;}
-.m-b-237 {margin-bottom: 237px;}
-.m-b-238 {margin-bottom: 238px;}
-.m-b-239 {margin-bottom: 239px;}
-.m-b-240 {margin-bottom: 240px;}
-.m-b-241 {margin-bottom: 241px;}
-.m-b-242 {margin-bottom: 242px;}
-.m-b-243 {margin-bottom: 243px;}
-.m-b-244 {margin-bottom: 244px;}
-.m-b-245 {margin-bottom: 245px;}
-.m-b-246 {margin-bottom: 246px;}
-.m-b-247 {margin-bottom: 247px;}
-.m-b-248 {margin-bottom: 248px;}
-.m-b-249 {margin-bottom: 249px;}
-.m-b-250 {margin-bottom: 250px;}
-.m-l-0 {margin-left: 0px;}
-.m-l-1 {margin-left: 1px;}
-.m-l-2 {margin-left: 2px;}
-.m-l-3 {margin-left: 3px;}
-.m-l-4 {margin-left: 4px;}
-.m-l-5 {margin-left: 5px;}
-.m-l-6 {margin-left: 6px;}
-.m-l-7 {margin-left: 7px;}
-.m-l-8 {margin-left: 8px;}
-.m-l-9 {margin-left: 9px;}
-.m-l-10 {margin-left: 10px;}
-.m-l-11 {margin-left: 11px;}
-.m-l-12 {margin-left: 12px;}
-.m-l-13 {margin-left: 13px;}
-.m-l-14 {margin-left: 14px;}
-.m-l-15 {margin-left: 15px;}
-.m-l-16 {margin-left: 16px;}
-.m-l-17 {margin-left: 17px;}
-.m-l-18 {margin-left: 18px;}
-.m-l-19 {margin-left: 19px;}
-.m-l-20 {margin-left: 20px;}
-.m-l-21 {margin-left: 21px;}
-.m-l-22 {margin-left: 22px;}
-.m-l-23 {margin-left: 23px;}
-.m-l-24 {margin-left: 24px;}
-.m-l-25 {margin-left: 25px;}
-.m-l-26 {margin-left: 26px;}
-.m-l-27 {margin-left: 27px;}
-.m-l-28 {margin-left: 28px;}
-.m-l-29 {margin-left: 29px;}
-.m-l-30 {margin-left: 30px;}
-.m-l-31 {margin-left: 31px;}
-.m-l-32 {margin-left: 32px;}
-.m-l-33 {margin-left: 33px;}
-.m-l-34 {margin-left: 34px;}
-.m-l-35 {margin-left: 35px;}
-.m-l-36 {margin-left: 36px;}
-.m-l-37 {margin-left: 37px;}
-.m-l-38 {margin-left: 38px;}
-.m-l-39 {margin-left: 39px;}
-.m-l-40 {margin-left: 40px;}
-.m-l-41 {margin-left: 41px;}
-.m-l-42 {margin-left: 42px;}
-.m-l-43 {margin-left: 43px;}
-.m-l-44 {margin-left: 44px;}
-.m-l-45 {margin-left: 45px;}
-.m-l-46 {margin-left: 46px;}
-.m-l-47 {margin-left: 47px;}
-.m-l-48 {margin-left: 48px;}
-.m-l-49 {margin-left: 49px;}
-.m-l-50 {margin-left: 50px;}
-.m-l-51 {margin-left: 51px;}
-.m-l-52 {margin-left: 52px;}
-.m-l-53 {margin-left: 53px;}
-.m-l-54 {margin-left: 54px;}
-.m-l-55 {margin-left: 55px;}
-.m-l-56 {margin-left: 56px;}
-.m-l-57 {margin-left: 57px;}
-.m-l-58 {margin-left: 58px;}
-.m-l-59 {margin-left: 59px;}
-.m-l-60 {margin-left: 60px;}
-.m-l-61 {margin-left: 61px;}
-.m-l-62 {margin-left: 62px;}
-.m-l-63 {margin-left: 63px;}
-.m-l-64 {margin-left: 64px;}
-.m-l-65 {margin-left: 65px;}
-.m-l-66 {margin-left: 66px;}
-.m-l-67 {margin-left: 67px;}
-.m-l-68 {margin-left: 68px;}
-.m-l-69 {margin-left: 69px;}
-.m-l-70 {margin-left: 70px;}
-.m-l-71 {margin-left: 71px;}
-.m-l-72 {margin-left: 72px;}
-.m-l-73 {margin-left: 73px;}
-.m-l-74 {margin-left: 74px;}
-.m-l-75 {margin-left: 75px;}
-.m-l-76 {margin-left: 76px;}
-.m-l-77 {margin-left: 77px;}
-.m-l-78 {margin-left: 78px;}
-.m-l-79 {margin-left: 79px;}
-.m-l-80 {margin-left: 80px;}
-.m-l-81 {margin-left: 81px;}
-.m-l-82 {margin-left: 82px;}
-.m-l-83 {margin-left: 83px;}
-.m-l-84 {margin-left: 84px;}
-.m-l-85 {margin-left: 85px;}
-.m-l-86 {margin-left: 86px;}
-.m-l-87 {margin-left: 87px;}
-.m-l-88 {margin-left: 88px;}
-.m-l-89 {margin-left: 89px;}
-.m-l-90 {margin-left: 90px;}
-.m-l-91 {margin-left: 91px;}
-.m-l-92 {margin-left: 92px;}
-.m-l-93 {margin-left: 93px;}
-.m-l-94 {margin-left: 94px;}
-.m-l-95 {margin-left: 95px;}
-.m-l-96 {margin-left: 96px;}
-.m-l-97 {margin-left: 97px;}
-.m-l-98 {margin-left: 98px;}
-.m-l-99 {margin-left: 99px;}
-.m-l-100 {margin-left: 100px;}
-.m-l-101 {margin-left: 101px;}
-.m-l-102 {margin-left: 102px;}
-.m-l-103 {margin-left: 103px;}
-.m-l-104 {margin-left: 104px;}
-.m-l-105 {margin-left: 105px;}
-.m-l-106 {margin-left: 106px;}
-.m-l-107 {margin-left: 107px;}
-.m-l-108 {margin-left: 108px;}
-.m-l-109 {margin-left: 109px;}
-.m-l-110 {margin-left: 110px;}
-.m-l-111 {margin-left: 111px;}
-.m-l-112 {margin-left: 112px;}
-.m-l-113 {margin-left: 113px;}
-.m-l-114 {margin-left: 114px;}
-.m-l-115 {margin-left: 115px;}
-.m-l-116 {margin-left: 116px;}
-.m-l-117 {margin-left: 117px;}
-.m-l-118 {margin-left: 118px;}
-.m-l-119 {margin-left: 119px;}
-.m-l-120 {margin-left: 120px;}
-.m-l-121 {margin-left: 121px;}
-.m-l-122 {margin-left: 122px;}
-.m-l-123 {margin-left: 123px;}
-.m-l-124 {margin-left: 124px;}
-.m-l-125 {margin-left: 125px;}
-.m-l-126 {margin-left: 126px;}
-.m-l-127 {margin-left: 127px;}
-.m-l-128 {margin-left: 128px;}
-.m-l-129 {margin-left: 129px;}
-.m-l-130 {margin-left: 130px;}
-.m-l-131 {margin-left: 131px;}
-.m-l-132 {margin-left: 132px;}
-.m-l-133 {margin-left: 133px;}
-.m-l-134 {margin-left: 134px;}
-.m-l-135 {margin-left: 135px;}
-.m-l-136 {margin-left: 136px;}
-.m-l-137 {margin-left: 137px;}
-.m-l-138 {margin-left: 138px;}
-.m-l-139 {margin-left: 139px;}
-.m-l-140 {margin-left: 140px;}
-.m-l-141 {margin-left: 141px;}
-.m-l-142 {margin-left: 142px;}
-.m-l-143 {margin-left: 143px;}
-.m-l-144 {margin-left: 144px;}
-.m-l-145 {margin-left: 145px;}
-.m-l-146 {margin-left: 146px;}
-.m-l-147 {margin-left: 147px;}
-.m-l-148 {margin-left: 148px;}
-.m-l-149 {margin-left: 149px;}
-.m-l-150 {margin-left: 150px;}
-.m-l-151 {margin-left: 151px;}
-.m-l-152 {margin-left: 152px;}
-.m-l-153 {margin-left: 153px;}
-.m-l-154 {margin-left: 154px;}
-.m-l-155 {margin-left: 155px;}
-.m-l-156 {margin-left: 156px;}
-.m-l-157 {margin-left: 157px;}
-.m-l-158 {margin-left: 158px;}
-.m-l-159 {margin-left: 159px;}
-.m-l-160 {margin-left: 160px;}
-.m-l-161 {margin-left: 161px;}
-.m-l-162 {margin-left: 162px;}
-.m-l-163 {margin-left: 163px;}
-.m-l-164 {margin-left: 164px;}
-.m-l-165 {margin-left: 165px;}
-.m-l-166 {margin-left: 166px;}
-.m-l-167 {margin-left: 167px;}
-.m-l-168 {margin-left: 168px;}
-.m-l-169 {margin-left: 169px;}
-.m-l-170 {margin-left: 170px;}
-.m-l-171 {margin-left: 171px;}
-.m-l-172 {margin-left: 172px;}
-.m-l-173 {margin-left: 173px;}
-.m-l-174 {margin-left: 174px;}
-.m-l-175 {margin-left: 175px;}
-.m-l-176 {margin-left: 176px;}
-.m-l-177 {margin-left: 177px;}
-.m-l-178 {margin-left: 178px;}
-.m-l-179 {margin-left: 179px;}
-.m-l-180 {margin-left: 180px;}
-.m-l-181 {margin-left: 181px;}
-.m-l-182 {margin-left: 182px;}
-.m-l-183 {margin-left: 183px;}
-.m-l-184 {margin-left: 184px;}
-.m-l-185 {margin-left: 185px;}
-.m-l-186 {margin-left: 186px;}
-.m-l-187 {margin-left: 187px;}
-.m-l-188 {margin-left: 188px;}
-.m-l-189 {margin-left: 189px;}
-.m-l-190 {margin-left: 190px;}
-.m-l-191 {margin-left: 191px;}
-.m-l-192 {margin-left: 192px;}
-.m-l-193 {margin-left: 193px;}
-.m-l-194 {margin-left: 194px;}
-.m-l-195 {margin-left: 195px;}
-.m-l-196 {margin-left: 196px;}
-.m-l-197 {margin-left: 197px;}
-.m-l-198 {margin-left: 198px;}
-.m-l-199 {margin-left: 199px;}
-.m-l-200 {margin-left: 200px;}
-.m-l-201 {margin-left: 201px;}
-.m-l-202 {margin-left: 202px;}
-.m-l-203 {margin-left: 203px;}
-.m-l-204 {margin-left: 204px;}
-.m-l-205 {margin-left: 205px;}
-.m-l-206 {margin-left: 206px;}
-.m-l-207 {margin-left: 207px;}
-.m-l-208 {margin-left: 208px;}
-.m-l-209 {margin-left: 209px;}
-.m-l-210 {margin-left: 210px;}
-.m-l-211 {margin-left: 211px;}
-.m-l-212 {margin-left: 212px;}
-.m-l-213 {margin-left: 213px;}
-.m-l-214 {margin-left: 214px;}
-.m-l-215 {margin-left: 215px;}
-.m-l-216 {margin-left: 216px;}
-.m-l-217 {margin-left: 217px;}
-.m-l-218 {margin-left: 218px;}
-.m-l-219 {margin-left: 219px;}
-.m-l-220 {margin-left: 220px;}
-.m-l-221 {margin-left: 221px;}
-.m-l-222 {margin-left: 222px;}
-.m-l-223 {margin-left: 223px;}
-.m-l-224 {margin-left: 224px;}
-.m-l-225 {margin-left: 225px;}
-.m-l-226 {margin-left: 226px;}
-.m-l-227 {margin-left: 227px;}
-.m-l-228 {margin-left: 228px;}
-.m-l-229 {margin-left: 229px;}
-.m-l-230 {margin-left: 230px;}
-.m-l-231 {margin-left: 231px;}
-.m-l-232 {margin-left: 232px;}
-.m-l-233 {margin-left: 233px;}
-.m-l-234 {margin-left: 234px;}
-.m-l-235 {margin-left: 235px;}
-.m-l-236 {margin-left: 236px;}
-.m-l-237 {margin-left: 237px;}
-.m-l-238 {margin-left: 238px;}
-.m-l-239 {margin-left: 239px;}
-.m-l-240 {margin-left: 240px;}
-.m-l-241 {margin-left: 241px;}
-.m-l-242 {margin-left: 242px;}
-.m-l-243 {margin-left: 243px;}
-.m-l-244 {margin-left: 244px;}
-.m-l-245 {margin-left: 245px;}
-.m-l-246 {margin-left: 246px;}
-.m-l-247 {margin-left: 247px;}
-.m-l-248 {margin-left: 248px;}
-.m-l-249 {margin-left: 249px;}
-.m-l-250 {margin-left: 250px;}
-.m-r-0 {margin-right: 0px;}
-.m-r-1 {margin-right: 1px;}
-.m-r-2 {margin-right: 2px;}
-.m-r-3 {margin-right: 3px;}
-.m-r-4 {margin-right: 4px;}
-.m-r-5 {margin-right: 5px;}
-.m-r-6 {margin-right: 6px;}
-.m-r-7 {margin-right: 7px;}
-.m-r-8 {margin-right: 8px;}
-.m-r-9 {margin-right: 9px;}
-.m-r-10 {margin-right: 10px;}
-.m-r-11 {margin-right: 11px;}
-.m-r-12 {margin-right: 12px;}
-.m-r-13 {margin-right: 13px;}
-.m-r-14 {margin-right: 14px;}
-.m-r-15 {margin-right: 15px;}
-.m-r-16 {margin-right: 16px;}
-.m-r-17 {margin-right: 17px;}
-.m-r-18 {margin-right: 18px;}
-.m-r-19 {margin-right: 19px;}
-.m-r-20 {margin-right: 20px;}
-.m-r-21 {margin-right: 21px;}
-.m-r-22 {margin-right: 22px;}
-.m-r-23 {margin-right: 23px;}
-.m-r-24 {margin-right: 24px;}
-.m-r-25 {margin-right: 25px;}
-.m-r-26 {margin-right: 26px;}
-.m-r-27 {margin-right: 27px;}
-.m-r-28 {margin-right: 28px;}
-.m-r-29 {margin-right: 29px;}
-.m-r-30 {margin-right: 30px;}
-.m-r-31 {margin-right: 31px;}
-.m-r-32 {margin-right: 32px;}
-.m-r-33 {margin-right: 33px;}
-.m-r-34 {margin-right: 34px;}
-.m-r-35 {margin-right: 35px;}
-.m-r-36 {margin-right: 36px;}
-.m-r-37 {margin-right: 37px;}
-.m-r-38 {margin-right: 38px;}
-.m-r-39 {margin-right: 39px;}
-.m-r-40 {margin-right: 40px;}
-.m-r-41 {margin-right: 41px;}
-.m-r-42 {margin-right: 42px;}
-.m-r-43 {margin-right: 43px;}
-.m-r-44 {margin-right: 44px;}
-.m-r-45 {margin-right: 45px;}
-.m-r-46 {margin-right: 46px;}
-.m-r-47 {margin-right: 47px;}
-.m-r-48 {margin-right: 48px;}
-.m-r-49 {margin-right: 49px;}
-.m-r-50 {margin-right: 50px;}
-.m-r-51 {margin-right: 51px;}
-.m-r-52 {margin-right: 52px;}
-.m-r-53 {margin-right: 53px;}
-.m-r-54 {margin-right: 54px;}
-.m-r-55 {margin-right: 55px;}
-.m-r-56 {margin-right: 56px;}
-.m-r-57 {margin-right: 57px;}
-.m-r-58 {margin-right: 58px;}
-.m-r-59 {margin-right: 59px;}
-.m-r-60 {margin-right: 60px;}
-.m-r-61 {margin-right: 61px;}
-.m-r-62 {margin-right: 62px;}
-.m-r-63 {margin-right: 63px;}
-.m-r-64 {margin-right: 64px;}
-.m-r-65 {margin-right: 65px;}
-.m-r-66 {margin-right: 66px;}
-.m-r-67 {margin-right: 67px;}
-.m-r-68 {margin-right: 68px;}
-.m-r-69 {margin-right: 69px;}
-.m-r-70 {margin-right: 70px;}
-.m-r-71 {margin-right: 71px;}
-.m-r-72 {margin-right: 72px;}
-.m-r-73 {margin-right: 73px;}
-.m-r-74 {margin-right: 74px;}
-.m-r-75 {margin-right: 75px;}
-.m-r-76 {margin-right: 76px;}
-.m-r-77 {margin-right: 77px;}
-.m-r-78 {margin-right: 78px;}
-.m-r-79 {margin-right: 79px;}
-.m-r-80 {margin-right: 80px;}
-.m-r-81 {margin-right: 81px;}
-.m-r-82 {margin-right: 82px;}
-.m-r-83 {margin-right: 83px;}
-.m-r-84 {margin-right: 84px;}
-.m-r-85 {margin-right: 85px;}
-.m-r-86 {margin-right: 86px;}
-.m-r-87 {margin-right: 87px;}
-.m-r-88 {margin-right: 88px;}
-.m-r-89 {margin-right: 89px;}
-.m-r-90 {margin-right: 90px;}
-.m-r-91 {margin-right: 91px;}
-.m-r-92 {margin-right: 92px;}
-.m-r-93 {margin-right: 93px;}
-.m-r-94 {margin-right: 94px;}
-.m-r-95 {margin-right: 95px;}
-.m-r-96 {margin-right: 96px;}
-.m-r-97 {margin-right: 97px;}
-.m-r-98 {margin-right: 98px;}
-.m-r-99 {margin-right: 99px;}
-.m-r-100 {margin-right: 100px;}
-.m-r-101 {margin-right: 101px;}
-.m-r-102 {margin-right: 102px;}
-.m-r-103 {margin-right: 103px;}
-.m-r-104 {margin-right: 104px;}
-.m-r-105 {margin-right: 105px;}
-.m-r-106 {margin-right: 106px;}
-.m-r-107 {margin-right: 107px;}
-.m-r-108 {margin-right: 108px;}
-.m-r-109 {margin-right: 109px;}
-.m-r-110 {margin-right: 110px;}
-.m-r-111 {margin-right: 111px;}
-.m-r-112 {margin-right: 112px;}
-.m-r-113 {margin-right: 113px;}
-.m-r-114 {margin-right: 114px;}
-.m-r-115 {margin-right: 115px;}
-.m-r-116 {margin-right: 116px;}
-.m-r-117 {margin-right: 117px;}
-.m-r-118 {margin-right: 118px;}
-.m-r-119 {margin-right: 119px;}
-.m-r-120 {margin-right: 120px;}
-.m-r-121 {margin-right: 121px;}
-.m-r-122 {margin-right: 122px;}
-.m-r-123 {margin-right: 123px;}
-.m-r-124 {margin-right: 124px;}
-.m-r-125 {margin-right: 125px;}
-.m-r-126 {margin-right: 126px;}
-.m-r-127 {margin-right: 127px;}
-.m-r-128 {margin-right: 128px;}
-.m-r-129 {margin-right: 129px;}
-.m-r-130 {margin-right: 130px;}
-.m-r-131 {margin-right: 131px;}
-.m-r-132 {margin-right: 132px;}
-.m-r-133 {margin-right: 133px;}
-.m-r-134 {margin-right: 134px;}
-.m-r-135 {margin-right: 135px;}
-.m-r-136 {margin-right: 136px;}
-.m-r-137 {margin-right: 137px;}
-.m-r-138 {margin-right: 138px;}
-.m-r-139 {margin-right: 139px;}
-.m-r-140 {margin-right: 140px;}
-.m-r-141 {margin-right: 141px;}
-.m-r-142 {margin-right: 142px;}
-.m-r-143 {margin-right: 143px;}
-.m-r-144 {margin-right: 144px;}
-.m-r-145 {margin-right: 145px;}
-.m-r-146 {margin-right: 146px;}
-.m-r-147 {margin-right: 147px;}
-.m-r-148 {margin-right: 148px;}
-.m-r-149 {margin-right: 149px;}
-.m-r-150 {margin-right: 150px;}
-.m-r-151 {margin-right: 151px;}
-.m-r-152 {margin-right: 152px;}
-.m-r-153 {margin-right: 153px;}
-.m-r-154 {margin-right: 154px;}
-.m-r-155 {margin-right: 155px;}
-.m-r-156 {margin-right: 156px;}
-.m-r-157 {margin-right: 157px;}
-.m-r-158 {margin-right: 158px;}
-.m-r-159 {margin-right: 159px;}
-.m-r-160 {margin-right: 160px;}
-.m-r-161 {margin-right: 161px;}
-.m-r-162 {margin-right: 162px;}
-.m-r-163 {margin-right: 163px;}
-.m-r-164 {margin-right: 164px;}
-.m-r-165 {margin-right: 165px;}
-.m-r-166 {margin-right: 166px;}
-.m-r-167 {margin-right: 167px;}
-.m-r-168 {margin-right: 168px;}
-.m-r-169 {margin-right: 169px;}
-.m-r-170 {margin-right: 170px;}
-.m-r-171 {margin-right: 171px;}
-.m-r-172 {margin-right: 172px;}
-.m-r-173 {margin-right: 173px;}
-.m-r-174 {margin-right: 174px;}
-.m-r-175 {margin-right: 175px;}
-.m-r-176 {margin-right: 176px;}
-.m-r-177 {margin-right: 177px;}
-.m-r-178 {margin-right: 178px;}
-.m-r-179 {margin-right: 179px;}
-.m-r-180 {margin-right: 180px;}
-.m-r-181 {margin-right: 181px;}
-.m-r-182 {margin-right: 182px;}
-.m-r-183 {margin-right: 183px;}
-.m-r-184 {margin-right: 184px;}
-.m-r-185 {margin-right: 185px;}
-.m-r-186 {margin-right: 186px;}
-.m-r-187 {margin-right: 187px;}
-.m-r-188 {margin-right: 188px;}
-.m-r-189 {margin-right: 189px;}
-.m-r-190 {margin-right: 190px;}
-.m-r-191 {margin-right: 191px;}
-.m-r-192 {margin-right: 192px;}
-.m-r-193 {margin-right: 193px;}
-.m-r-194 {margin-right: 194px;}
-.m-r-195 {margin-right: 195px;}
-.m-r-196 {margin-right: 196px;}
-.m-r-197 {margin-right: 197px;}
-.m-r-198 {margin-right: 198px;}
-.m-r-199 {margin-right: 199px;}
-.m-r-200 {margin-right: 200px;}
-.m-r-201 {margin-right: 201px;}
-.m-r-202 {margin-right: 202px;}
-.m-r-203 {margin-right: 203px;}
-.m-r-204 {margin-right: 204px;}
-.m-r-205 {margin-right: 205px;}
-.m-r-206 {margin-right: 206px;}
-.m-r-207 {margin-right: 207px;}
-.m-r-208 {margin-right: 208px;}
-.m-r-209 {margin-right: 209px;}
-.m-r-210 {margin-right: 210px;}
-.m-r-211 {margin-right: 211px;}
-.m-r-212 {margin-right: 212px;}
-.m-r-213 {margin-right: 213px;}
-.m-r-214 {margin-right: 214px;}
-.m-r-215 {margin-right: 215px;}
-.m-r-216 {margin-right: 216px;}
-.m-r-217 {margin-right: 217px;}
-.m-r-218 {margin-right: 218px;}
-.m-r-219 {margin-right: 219px;}
-.m-r-220 {margin-right: 220px;}
-.m-r-221 {margin-right: 221px;}
-.m-r-222 {margin-right: 222px;}
-.m-r-223 {margin-right: 223px;}
-.m-r-224 {margin-right: 224px;}
-.m-r-225 {margin-right: 225px;}
-.m-r-226 {margin-right: 226px;}
-.m-r-227 {margin-right: 227px;}
-.m-r-228 {margin-right: 228px;}
-.m-r-229 {margin-right: 229px;}
-.m-r-230 {margin-right: 230px;}
-.m-r-231 {margin-right: 231px;}
-.m-r-232 {margin-right: 232px;}
-.m-r-233 {margin-right: 233px;}
-.m-r-234 {margin-right: 234px;}
-.m-r-235 {margin-right: 235px;}
-.m-r-236 {margin-right: 236px;}
-.m-r-237 {margin-right: 237px;}
-.m-r-238 {margin-right: 238px;}
-.m-r-239 {margin-right: 239px;}
-.m-r-240 {margin-right: 240px;}
-.m-r-241 {margin-right: 241px;}
-.m-r-242 {margin-right: 242px;}
-.m-r-243 {margin-right: 243px;}
-.m-r-244 {margin-right: 244px;}
-.m-r-245 {margin-right: 245px;}
-.m-r-246 {margin-right: 246px;}
-.m-r-247 {margin-right: 247px;}
-.m-r-248 {margin-right: 248px;}
-.m-r-249 {margin-right: 249px;}
-.m-r-250 {margin-right: 250px;}
-.m-l-r-auto {margin-left: auto;	margin-right: auto;}
-.m-l-auto {margin-left: auto;}
-.m-r-auto {margin-right: auto;}
-
-
-
-/*[ TEXT ]
-///////////////////////////////////////////////////////////
-*/
-/* ------------------------------------ */
-.text-white {color: white;}
-.text-black {color: black;}
-
-.text-hov-white:hover {color: white;}
-
-/* ------------------------------------ */
-.text-up {text-transform: uppercase;}
-
-/* ------------------------------------ */
-.text-center {text-align: center;}
-.text-left {text-align: left;}
-.text-right {text-align: right;}
-.text-middle {vertical-align: middle;}
-
-/* ------------------------------------ */
-.lh-1-0 {line-height: 1.0;}
-.lh-1-1 {line-height: 1.1;}
-.lh-1-2 {line-height: 1.2;}
-.lh-1-3 {line-height: 1.3;}
-.lh-1-4 {line-height: 1.4;}
-.lh-1-5 {line-height: 1.5;}
-.lh-1-6 {line-height: 1.6;}
-.lh-1-7 {line-height: 1.7;}
-.lh-1-8 {line-height: 1.8;}
-.lh-1-9 {line-height: 1.9;}
-.lh-2-0 {line-height: 2.0;}
-.lh-2-1 {line-height: 2.1;}
-.lh-2-2 {line-height: 2.2;}
-.lh-2-3 {line-height: 2.3;}
-.lh-2-4 {line-height: 2.4;}
-.lh-2-5 {line-height: 2.5;}
-.lh-2-6 {line-height: 2.6;}
-.lh-2-7 {line-height: 2.7;}
-.lh-2-8 {line-height: 2.8;}
-.lh-2-9 {line-height: 2.9;}
-
-
-
-
-
-/*[ SHAPE ]
-///////////////////////////////////////////////////////////
-*/
-
-/*[ Display ]
------------------------------------------------------------
-*/
-.dis-none {display: none;}
-.dis-block {display: block;}
-.dis-inline {display: inline;}
-.dis-inline-block {display: inline-block;}
-.dis-flex {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-}
-
-/*[ Position ]
------------------------------------------------------------
-*/
-.pos-relative {position: relative;}
-.pos-absolute {position: absolute;}
-.pos-fixed {position: fixed;}
-
-/*[ float ]
------------------------------------------------------------
-*/
-.float-l {float: left;}
-.float-r {float: right;}
-
-
-/*[ Width & Height ]
------------------------------------------------------------
-*/
-.sizefull {
-	width: 100%;
-	height: 100%;
-}
-.w-full {width: 100%;}
-.h-full {height: 100%;}
-.max-w-full {max-width: 100%;}
-.max-h-full {max-height: 100%;}
-.min-w-full {min-width: 100%;}
-.min-h-full {min-height: 100%;}
-
-/*[ Top Bottom Left Right ]
------------------------------------------------------------
-*/
-.top-0 {top: 0;}
-.bottom-0 {bottom: 0;}
-.left-0 {left: 0;}
-.right-0 {right: 0;}
-
-.top-auto {top: auto;}
-.bottom-auto {bottom: auto;}
-.left-auto {left: auto;}
-.right-auto {right: auto;}
-
-
-/*[ Opacity ]
------------------------------------------------------------
-*/
-.op-0-0 {opacity: 0;}
-.op-0-1 {opacity: 0.1;}
-.op-0-2 {opacity: 0.2;}
-.op-0-3 {opacity: 0.3;}
-.op-0-4 {opacity: 0.4;}
-.op-0-5 {opacity: 0.5;}
-.op-0-6 {opacity: 0.6;}
-.op-0-7 {opacity: 0.7;}
-.op-0-8 {opacity: 0.8;}
-.op-0-9 {opacity: 0.9;}
-.op-1-0 {opacity: 1;}
-
-/*[ Background ]
------------------------------------------------------------
-*/
-.bgwhite {background-color: white;}
-.bgblack {background-color: black;}
-
-
-
-/*[ Wrap Picture ]
------------------------------------------------------------
-*/
-.wrap-pic-w img {width: 100%;}
-.wrap-pic-max-w img {max-width: 100%;}
-
-/* ------------------------------------ */
-.wrap-pic-h img {height: 100%;}
-.wrap-pic-max-h img {max-height: 100%;}
-
-/* ------------------------------------ */
-.wrap-pic-cir {
-	border-radius: 50%;
-	overflow: hidden;
-}
-.wrap-pic-cir img {
-	width: 100%;
-}
-
-
-
-/*[ Hover ]
------------------------------------------------------------
-*/
-.hov-pointer:hover {cursor: pointer;}
-
-/* ------------------------------------ */
-.hov-img-zoom {
-	display: block;
-	overflow: hidden;
-}
-.hov-img-zoom img{
-	width: 100%;
-	-webkit-transition: all 0.6s;
-    -o-transition: all 0.6s;
-    -moz-transition: all 0.6s;
-    transition: all 0.6s;
-}
-.hov-img-zoom:hover img {
-	-webkit-transform: scale(1.1);
-  	-moz-transform: scale(1.1);
-  	-ms-transform: scale(1.1);
-  	-o-transform: scale(1.1);
-	transform: scale(1.1);
-}
-
-
-
-/*[  ]
------------------------------------------------------------
-*/
-.bo-cir {border-radius: 50%;}
-
-.of-hidden {overflow: hidden;}
-
-.visible-false {visibility: hidden;}
-.visible-true {visibility: visible;}
-
-
-
-
-/*[ Transition ]
------------------------------------------------------------
-*/
-.trans-0-1 {
-	-webkit-transition: all 0.1s;
-    -o-transition: all 0.1s;
-    -moz-transition: all 0.1s;
-    transition: all 0.1s;
-}
-.trans-0-2 {
-	-webkit-transition: all 0.2s;
-    -o-transition: all 0.2s;
-    -moz-transition: all 0.2s;
-    transition: all 0.2s;
-}
-.trans-0-3 {
-	-webkit-transition: all 0.3s;
-    -o-transition: all 0.3s;
-    -moz-transition: all 0.3s;
-    transition: all 0.3s;
-}
-.trans-0-4 {
-	-webkit-transition: all 0.4s;
-    -o-transition: all 0.4s;
-    -moz-transition: all 0.4s;
-    transition: all 0.4s;
-}
-.trans-0-5 {
-	-webkit-transition: all 0.5s;
-    -o-transition: all 0.5s;
-    -moz-transition: all 0.5s;
-    transition: all 0.5s;
-}
-.trans-0-6 {
-	-webkit-transition: all 0.6s;
-    -o-transition: all 0.6s;
-    -moz-transition: all 0.6s;
-    transition: all 0.6s;
-}
-.trans-0-9 {
-	-webkit-transition: all 0.9s;
-    -o-transition: all 0.9s;
-    -moz-transition: all 0.9s;
-    transition: all 0.9s;
-}
-.trans-1-0 {
-	-webkit-transition: all 1s;
-    -o-transition: all 1s;
-    -moz-transition: all 1s;
-    transition: all 1s;
-}
-
-
-
-/*[ Layout ]
-///////////////////////////////////////////////////////////
-*/
-
-/*[ Flex ]
------------------------------------------------------------
-*/
-/* ------------------------------------ */
-.flex-w {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-wrap: wrap;
-	-moz-flex-wrap: wrap;
-	-ms-flex-wrap: wrap;
-	-o-flex-wrap: wrap;
-	flex-wrap: wrap;
-}
-
-/* ------------------------------------ */
-.flex-l {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: flex-start;
-}
-
-.flex-r {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: flex-end;
-}
-
-.flex-c {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: center;
-}
-
-.flex-sa {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: space-around;
-}
-
-.flex-sb {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: space-between;
-}
-
-/* ------------------------------------ */
-.flex-t {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-ms-align-items: flex-start;
-	align-items: flex-start;
-}
-
-.flex-b {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-ms-align-items: flex-end;
-	align-items: flex-end;
-}
-
-.flex-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-str {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-ms-align-items: stretch;
-	align-items: stretch;
-}
-
-/* ------------------------------------ */
-.flex-row {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: row;
-	-moz-flex-direction: row;
-	-ms-flex-direction: row;
-	-o-flex-direction: row;
-	flex-direction: row;
-}
-
-.flex-row-rev {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: row-reverse;
-	-moz-flex-direction: row-reverse;
-	-ms-flex-direction: row-reverse;
-	-o-flex-direction: row-reverse;
-	flex-direction: row-reverse;
-}
-
-.flex-col {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-}
-
-.flex-col-rev {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column-reverse;
-	-moz-flex-direction: column-reverse;
-	-ms-flex-direction: column-reverse;
-	-o-flex-direction: column-reverse;
-	flex-direction: column-reverse;
-}
-
-/* ------------------------------------ */
-.flex-c-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: center;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-c-t {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: center;
-	-ms-align-items: flex-start;
-	align-items: flex-start;
-}
-
-.flex-c-b {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: center;
-	-ms-align-items: flex-end;
-	align-items: flex-end;
-}
-
-.flex-c-str {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: center;
-	-ms-align-items: stretch;
-	align-items: stretch;
-}
-
-.flex-l-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: flex-start;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-r-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: flex-end;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-sa-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: space-around;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-sb-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	justify-content: space-between;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-/* ------------------------------------ */
-.flex-col-l {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: flex-start;
-	align-items: flex-start;
-}
-
-.flex-col-r {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: flex-end;
-	align-items: flex-end;
-}
-
-.flex-col-c {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-col-l-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: flex-start;
-	align-items: flex-start;
-	justify-content: center;
-}
-
-.flex-col-r-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: flex-end;
-	align-items: flex-end;
-	justify-content: center;
-}
-
-.flex-col-c-m {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: center;
-	align-items: center;
-	justify-content: center;
-}
-
-.flex-col-str {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	-ms-align-items: stretch;
-	align-items: stretch;
-}
-
-.flex-col-sb {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column;
-	-moz-flex-direction: column;
-	-ms-flex-direction: column;
-	-o-flex-direction: column;
-	flex-direction: column;
-	justify-content: space-between;
-}
-
-/* ------------------------------------ */
-.flex-col-rev-l {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column-reverse;
-	-moz-flex-direction: column-reverse;
-	-ms-flex-direction: column-reverse;
-	-o-flex-direction: column-reverse;
-	flex-direction: column-reverse;
-	-ms-align-items: flex-start;
-	align-items: flex-start;
-}
-
-.flex-col-rev-r {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column-reverse;
-	-moz-flex-direction: column-reverse;
-	-ms-flex-direction: column-reverse;
-	-o-flex-direction: column-reverse;
-	flex-direction: column-reverse;
-	-ms-align-items: flex-end;
-	align-items: flex-end;
-}
-
-.flex-col-rev-c {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column-reverse;
-	-moz-flex-direction: column-reverse;
-	-ms-flex-direction: column-reverse;
-	-o-flex-direction: column-reverse;
-	flex-direction: column-reverse;
-	-ms-align-items: center;
-	align-items: center;
-}
-
-.flex-col-rev-str {
-	display: -webkit-box;
-	display: -webkit-flex;
-	display: -moz-box;
-	display: -ms-flexbox;
-	display: flex;
-	-webkit-flex-direction: column-reverse;
-	-moz-flex-direction: column-reverse;
-	-ms-flex-direction: column-reverse;
-	-o-flex-direction: column-reverse;
-	flex-direction: column-reverse;
-	-ms-align-items: stretch;
-	align-items: stretch;
-}
-
-
-/*[ Absolute ]
------------------------------------------------------------
-*/
-.ab-c-m {
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	-webkit-transform: translate(-50%, -50%);
-  	-moz-transform: translate(-50%, -50%);
-  	-ms-transform: translate(-50%, -50%);
-  	-o-transform: translate(-50%, -50%);
-	transform: translate(-50%, -50%);
-}
-
-.ab-c-t {
-	position: absolute;
-	top: 0px;
-	left: 50%;
-	-webkit-transform: translateX(-50%);
-  	-moz-transform: translateX(-50%);
-  	-ms-transform: translateX(-50%);
-  	-o-transform: translateX(-50%);
-	transform: translateX(-50%);
-}
-
-.ab-c-b {
-	position: absolute;
-	bottom: 0px;
-	left: 50%;
-	-webkit-transform: translateX(-50%);
-  	-moz-transform: translateX(-50%);
-  	-ms-transform: translateX(-50%);
-  	-o-transform: translateX(-50%);
-	transform: translateX(-50%);
-}
-
-.ab-l-m {
-	position: absolute;
-	left: 0px;
-	top: 50%;
-	-webkit-transform: translateY(-50%);
-  	-moz-transform: translateY(-50%);
-  	-ms-transform: translateY(-50%);
-  	-o-transform: translateY(-50%);
-	transform: translateY(-50%);
-}
-
-.ab-r-m {
-	position: absolute;
-	right: 0px;
-	top: 50%;
-	-webkit-transform: translateY(-50%);
-  	-moz-transform: translateY(-50%);
-  	-ms-transform: translateY(-50%);
-  	-o-transform: translateY(-50%);
-	transform: translateY(-50%);
-}
-
-.ab-t-l {
-	position: absolute;
-	left: 0px;
-	top: 0px;
-}
-
-.ab-t-r {
-	position: absolute;
-	right: 0px;
-	top: 0px;
-}
-
-.ab-b-l {
-	position: absolute;
-	left: 0px;
-	bottom: 0px;
-}
-
-.ab-b-r {
-	position: absolute;
-	right: 0px;
-	bottom: 0px;
-}
-
-
-
-
diff --git a/archived/http-root/res/sheet/fonts/OpenSans/OpenSans-Regular.ttf b/archived/http-root/res/sheet/fonts/OpenSans/OpenSans-Regular.ttf
deleted file mode 100755
index db433349b7047f72f40072630c1bc110620bf09e..0000000000000000000000000000000000000000
Binary files a/archived/http-root/res/sheet/fonts/OpenSans/OpenSans-Regular.ttf and /dev/null differ
diff --git a/archived/http-root/res/sheet/fonts/font-awesome-4.7.0/css/font-awesome.min.css b/archived/http-root/res/sheet/fonts/font-awesome-4.7.0/css/font-awesome.min.css
deleted file mode 100755
index 540440ce89f2a408aa699b65100e18f15e0f09ca..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/fonts/font-awesome-4.7.0/css/font-awesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/archived/http-root/res/sheet/js/main.js b/archived/http-root/res/sheet/js/main.js
deleted file mode 100755
index 0031826df1b48153b8ed4479e71bea67dd1a4e1b..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/js/main.js
+++ /dev/null
@@ -1,8 +0,0 @@
-
-(function ($) {
-    "use strict";
-
-        
-    
-
-})(jQuery);
\ No newline at end of file
diff --git a/archived/http-root/res/sheet/vendor/animate/animate.css b/archived/http-root/res/sheet/vendor/animate/animate.css
deleted file mode 100755
index 1e79e03adecd83496d25f13eee07e4c2159dae9d..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/animate/animate.css
+++ /dev/null
@@ -1,1579 +0,0 @@
-@charset "UTF-8";
-
-/*!
- * animate.css -http://daneden.me/animate
- * Version - 3.5.2
- * Licensed under the MIT license - http://opensource.org/licenses/MIT
- *
- * Copyright (c) 2017 Daniel Eden
- */
-
-.animated {
-  animation-duration: 1s;
-  animation-fill-mode: both;
-}
-
-.animated.infinite {
-  animation-iteration-count: infinite;
-}
-
-.animated.hinge {
-  animation-duration: 2s;
-}
-
-.animated.flipOutX,
-.animated.flipOutY,
-.animated.bounceIn,
-.animated.bounceOut {
-  animation-duration: .75s;
-}
-
-@keyframes bounce {
-  from, 20%, 53%, 80%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-    transform: translate3d(0,0,0);
-  }
-
-  40%, 43% {
-    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-    transform: translate3d(0, -30px, 0);
-  }
-
-  70% {
-    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-    transform: translate3d(0, -15px, 0);
-  }
-
-  90% {
-    transform: translate3d(0,-4px,0);
-  }
-}
-
-.bounce {
-  animation-name: bounce;
-  transform-origin: center bottom;
-}
-
-@keyframes flash {
-  from, 50%, to {
-    opacity: 1;
-  }
-
-  25%, 75% {
-    opacity: 0;
-  }
-}
-
-.flash {
-  animation-name: flash;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@keyframes pulse {
-  from {
-    transform: scale3d(1, 1, 1);
-  }
-
-  50% {
-    transform: scale3d(1.05, 1.05, 1.05);
-  }
-
-  to {
-    transform: scale3d(1, 1, 1);
-  }
-}
-
-.pulse {
-  animation-name: pulse;
-}
-
-@keyframes rubberBand {
-  from {
-    transform: scale3d(1, 1, 1);
-  }
-
-  30% {
-    transform: scale3d(1.25, 0.75, 1);
-  }
-
-  40% {
-    transform: scale3d(0.75, 1.25, 1);
-  }
-
-  50% {
-    transform: scale3d(1.15, 0.85, 1);
-  }
-
-  65% {
-    transform: scale3d(.95, 1.05, 1);
-  }
-
-  75% {
-    transform: scale3d(1.05, .95, 1);
-  }
-
-  to {
-    transform: scale3d(1, 1, 1);
-  }
-}
-
-.rubberBand {
-  animation-name: rubberBand;
-}
-
-@keyframes shake {
-  from, to {
-    transform: translate3d(0, 0, 0);
-  }
-
-  10%, 30%, 50%, 70%, 90% {
-    transform: translate3d(-10px, 0, 0);
-  }
-
-  20%, 40%, 60%, 80% {
-    transform: translate3d(10px, 0, 0);
-  }
-}
-
-.shake {
-  animation-name: shake;
-}
-
-@keyframes headShake {
-  0% {
-    transform: translateX(0);
-  }
-
-  6.5% {
-    transform: translateX(-6px) rotateY(-9deg);
-  }
-
-  18.5% {
-    transform: translateX(5px) rotateY(7deg);
-  }
-
-  31.5% {
-    transform: translateX(-3px) rotateY(-5deg);
-  }
-
-  43.5% {
-    transform: translateX(2px) rotateY(3deg);
-  }
-
-  50% {
-    transform: translateX(0);
-  }
-}
-
-.headShake {
-  animation-timing-function: ease-in-out;
-  animation-name: headShake;
-}
-
-@keyframes swing {
-  20% {
-    transform: rotate3d(0, 0, 1, 15deg);
-  }
-
-  40% {
-    transform: rotate3d(0, 0, 1, -10deg);
-  }
-
-  60% {
-    transform: rotate3d(0, 0, 1, 5deg);
-  }
-
-  80% {
-    transform: rotate3d(0, 0, 1, -5deg);
-  }
-
-  to {
-    transform: rotate3d(0, 0, 1, 0deg);
-  }
-}
-
-.swing {
-  transform-origin: top center;
-  animation-name: swing;
-}
-
-@keyframes tada {
-  from {
-    transform: scale3d(1, 1, 1);
-  }
-
-  10%, 20% {
-    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
-  }
-
-  30%, 50%, 70%, 90% {
-    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
-  }
-
-  40%, 60%, 80% {
-    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
-  }
-
-  to {
-    transform: scale3d(1, 1, 1);
-  }
-}
-
-.tada {
-  animation-name: tada;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@keyframes wobble {
-  from {
-    transform: none;
-  }
-
-  15% {
-    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
-  }
-
-  30% {
-    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
-  }
-
-  45% {
-    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
-  }
-
-  60% {
-    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
-  }
-
-  75% {
-    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
-  }
-
-  to {
-    transform: none;
-  }
-}
-
-.wobble {
-  animation-name: wobble;
-}
-
-@keyframes jello {
-  from, 11.1%, to {
-    transform: none;
-  }
-
-  22.2% {
-    transform: skewX(-12.5deg) skewY(-12.5deg);
-  }
-
-  33.3% {
-    transform: skewX(6.25deg) skewY(6.25deg);
-  }
-
-  44.4% {
-    transform: skewX(-3.125deg) skewY(-3.125deg);
-  }
-
-  55.5% {
-    transform: skewX(1.5625deg) skewY(1.5625deg);
-  }
-
-  66.6% {
-    transform: skewX(-0.78125deg) skewY(-0.78125deg);
-  }
-
-  77.7% {
-    transform: skewX(0.390625deg) skewY(0.390625deg);
-  }
-
-  88.8% {
-    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
-  }
-}
-
-.jello {
-  animation-name: jello;
-  transform-origin: center;
-}
-
-@keyframes bounceIn {
-  from, 20%, 40%, 60%, 80%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-  }
-
-  0% {
-    opacity: 0;
-    transform: scale3d(.3, .3, .3);
-  }
-
-  20% {
-    transform: scale3d(1.1, 1.1, 1.1);
-  }
-
-  40% {
-    transform: scale3d(.9, .9, .9);
-  }
-
-  60% {
-    opacity: 1;
-    transform: scale3d(1.03, 1.03, 1.03);
-  }
-
-  80% {
-    transform: scale3d(.97, .97, .97);
-  }
-
-  to {
-    opacity: 1;
-    transform: scale3d(1, 1, 1);
-  }
-}
-
-.bounceIn {
-  animation-name: bounceIn;
-}
-
-@keyframes bounceInDown {
-  from, 60%, 75%, 90%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-  }
-
-  0% {
-    opacity: 0;
-    transform: translate3d(0, -3000px, 0);
-  }
-
-  60% {
-    opacity: 1;
-    transform: translate3d(0, 25px, 0);
-  }
-
-  75% {
-    transform: translate3d(0, -10px, 0);
-  }
-
-  90% {
-    transform: translate3d(0, 5px, 0);
-  }
-
-  to {
-    transform: none;
-  }
-}
-
-.bounceInDown {
-  animation-name: bounceInDown;
-}
-
-@keyframes bounceInLeft {
-  from, 60%, 75%, 90%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-  }
-
-  0% {
-    opacity: 0;
-    transform: translate3d(-3000px, 0, 0);
-  }
-
-  60% {
-    opacity: 1;
-    transform: translate3d(25px, 0, 0);
-  }
-
-  75% {
-    transform: translate3d(-10px, 0, 0);
-  }
-
-  90% {
-    transform: translate3d(5px, 0, 0);
-  }
-
-  to {
-    transform: none;
-  }
-}
-
-.bounceInLeft {
-  animation-name: bounceInLeft;
-}
-
-@keyframes bounceInRight {
-  from, 60%, 75%, 90%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-  }
-
-  from {
-    opacity: 0;
-    transform: translate3d(3000px, 0, 0);
-  }
-
-  60% {
-    opacity: 1;
-    transform: translate3d(-25px, 0, 0);
-  }
-
-  75% {
-    transform: translate3d(10px, 0, 0);
-  }
-
-  90% {
-    transform: translate3d(-5px, 0, 0);
-  }
-
-  to {
-    transform: none;
-  }
-}
-
-.bounceInRight {
-  animation-name: bounceInRight;
-}
-
-@keyframes bounceInUp {
-  from, 60%, 75%, 90%, to {
-    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-  }
-
-  from {
-    opacity: 0;
-    transform: translate3d(0, 3000px, 0);
-  }
-
-  60% {
-    opacity: 1;
-    transform: translate3d(0, -20px, 0);
-  }
-
-  75% {
-    transform: translate3d(0, 10px, 0);
-  }
-
-  90% {
-    transform: translate3d(0, -5px, 0);
-  }
-
-  to {
-    transform: translate3d(0, 0, 0);
-  }
-}
-
-.bounceInUp {
-  animation-name: bounceInUp;
-}
-
-@keyframes bounceOut {
-  20% {
-    transform: scale3d(.9, .9, .9);
-  }
-
-  50%, 55% {
-    opacity: 1;
-    transform: scale3d(1.1, 1.1, 1.1);
-  }
-
-  to {
-    opacity: 0;
-    transform: scale3d(.3, .3, .3);
-  }
-}
-
-.bounceOut {
-  animation-name: bounceOut;
-}
-
-@keyframes bounceOutDown {
-  20% {
-    transform: translate3d(0, 10px, 0);
-  }
-
-  40%, 45% {
-    opacity: 1;
-    transform: translate3d(0, -20px, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, 2000px, 0);
-  }
-}
-
-.bounceOutDown {
-  animation-name: bounceOutDown;
-}
-
-@keyframes bounceOutLeft {
-  20% {
-    opacity: 1;
-    transform: translate3d(20px, 0, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(-2000px, 0, 0);
-  }
-}
-
-.bounceOutLeft {
-  animation-name: bounceOutLeft;
-}
-
-@keyframes bounceOutRight {
-  20% {
-    opacity: 1;
-    transform: translate3d(-20px, 0, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(2000px, 0, 0);
-  }
-}
-
-.bounceOutRight {
-  animation-name: bounceOutRight;
-}
-
-@keyframes bounceOutUp {
-  20% {
-    transform: translate3d(0, -10px, 0);
-  }
-
-  40%, 45% {
-    opacity: 1;
-    transform: translate3d(0, 20px, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, -2000px, 0);
-  }
-}
-
-.bounceOutUp {
-  animation-name: bounceOutUp;
-}
-
-@keyframes fadeIn {
-  from {
-    opacity: 0;
-  }
-
-  to {
-    opacity: 1;
-  }
-}
-
-.fadeIn {
-  animation-name: fadeIn;
-}
-
-@keyframes fadeInDown {
-  from {
-    opacity: 0;
-    transform: translate3d(0, -100%, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInDown {
-  animation-name: fadeInDown;
-}
-
-@keyframes fadeInDownBig {
-  from {
-    opacity: 0;
-    transform: translate3d(0, -2000px, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInDownBig {
-  animation-name: fadeInDownBig;
-}
-
-@keyframes fadeInLeft {
-  from {
-    opacity: 0;
-    transform: translate3d(-100%, 0, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInLeft {
-  animation-name: fadeInLeft;
-}
-
-@keyframes fadeInLeftBig {
-  from {
-    opacity: 0;
-    transform: translate3d(-2000px, 0, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInLeftBig {
-  animation-name: fadeInLeftBig;
-}
-
-@keyframes fadeInRight {
-  from {
-    opacity: 0;
-    transform: translate3d(100%, 0, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInRight {
-  animation-name: fadeInRight;
-}
-
-@keyframes fadeInRightBig {
-  from {
-    opacity: 0;
-    transform: translate3d(2000px, 0, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInRightBig {
-  animation-name: fadeInRightBig;
-}
-
-@keyframes fadeInUp {
-  from {
-    opacity: 0;
-    transform: translate3d(0, 100%, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInUp {
-  animation-name: fadeInUp;
-}
-
-@keyframes fadeInUpBig {
-  from {
-    opacity: 0;
-    transform: translate3d(0, 2000px, 0);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.fadeInUpBig {
-  animation-name: fadeInUpBig;
-}
-
-@keyframes fadeOut {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-  }
-}
-
-.fadeOut {
-  animation-name: fadeOut;
-}
-
-@keyframes fadeOutDown {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, 100%, 0);
-  }
-}
-
-.fadeOutDown {
-  animation-name: fadeOutDown;
-}
-
-@keyframes fadeOutDownBig {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, 2000px, 0);
-  }
-}
-
-.fadeOutDownBig {
-  animation-name: fadeOutDownBig;
-}
-
-@keyframes fadeOutLeft {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(-100%, 0, 0);
-  }
-}
-
-.fadeOutLeft {
-  animation-name: fadeOutLeft;
-}
-
-@keyframes fadeOutLeftBig {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(-2000px, 0, 0);
-  }
-}
-
-.fadeOutLeftBig {
-  animation-name: fadeOutLeftBig;
-}
-
-@keyframes fadeOutRight {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(100%, 0, 0);
-  }
-}
-
-.fadeOutRight {
-  animation-name: fadeOutRight;
-}
-
-@keyframes fadeOutRightBig {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(2000px, 0, 0);
-  }
-}
-
-.fadeOutRightBig {
-  animation-name: fadeOutRightBig;
-}
-
-@keyframes fadeOutUp {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, -100%, 0);
-  }
-}
-
-.fadeOutUp {
-  animation-name: fadeOutUp;
-}
-
-@keyframes fadeOutUpBig {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(0, -2000px, 0);
-  }
-}
-
-.fadeOutUpBig {
-  animation-name: fadeOutUpBig;
-}
-
-@keyframes flip {
-  from {
-    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
-    animation-timing-function: ease-out;
-  }
-
-  40% {
-    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
-    animation-timing-function: ease-out;
-  }
-
-  50% {
-    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
-    animation-timing-function: ease-in;
-  }
-
-  80% {
-    transform: perspective(400px) scale3d(.95, .95, .95);
-    animation-timing-function: ease-in;
-  }
-
-  to {
-    transform: perspective(400px);
-    animation-timing-function: ease-in;
-  }
-}
-
-.animated.flip {
-  -webkit-backface-visibility: visible;
-  backface-visibility: visible;
-  animation-name: flip;
-}
-
-@keyframes flipInX {
-  from {
-    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
-    animation-timing-function: ease-in;
-    opacity: 0;
-  }
-
-  40% {
-    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
-    animation-timing-function: ease-in;
-  }
-
-  60% {
-    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
-    opacity: 1;
-  }
-
-  80% {
-    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
-  }
-
-  to {
-    transform: perspective(400px);
-  }
-}
-
-.flipInX {
-  -webkit-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  animation-name: flipInX;
-}
-
-@keyframes flipInY {
-  from {
-    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
-    animation-timing-function: ease-in;
-    opacity: 0;
-  }
-
-  40% {
-    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
-    animation-timing-function: ease-in;
-  }
-
-  60% {
-    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
-    opacity: 1;
-  }
-
-  80% {
-    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
-  }
-
-  to {
-    transform: perspective(400px);
-  }
-}
-
-.flipInY {
-  -webkit-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  animation-name: flipInY;
-}
-
-@keyframes flipOutX {
-  from {
-    transform: perspective(400px);
-  }
-
-  30% {
-    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
-    opacity: 1;
-  }
-
-  to {
-    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
-    opacity: 0;
-  }
-}
-
-.flipOutX {
-  animation-name: flipOutX;
-  -webkit-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-}
-
-@keyframes flipOutY {
-  from {
-    transform: perspective(400px);
-  }
-
-  30% {
-    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
-    opacity: 1;
-  }
-
-  to {
-    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
-    opacity: 0;
-  }
-}
-
-.flipOutY {
-  -webkit-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  animation-name: flipOutY;
-}
-
-@keyframes lightSpeedIn {
-  from {
-    transform: translate3d(100%, 0, 0) skewX(-30deg);
-    opacity: 0;
-  }
-
-  60% {
-    transform: skewX(20deg);
-    opacity: 1;
-  }
-
-  80% {
-    transform: skewX(-5deg);
-    opacity: 1;
-  }
-
-  to {
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.lightSpeedIn {
-  animation-name: lightSpeedIn;
-  animation-timing-function: ease-out;
-}
-
-@keyframes lightSpeedOut {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    transform: translate3d(100%, 0, 0) skewX(30deg);
-    opacity: 0;
-  }
-}
-
-.lightSpeedOut {
-  animation-name: lightSpeedOut;
-  animation-timing-function: ease-in;
-}
-
-@keyframes rotateIn {
-  from {
-    transform-origin: center;
-    transform: rotate3d(0, 0, 1, -200deg);
-    opacity: 0;
-  }
-
-  to {
-    transform-origin: center;
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.rotateIn {
-  animation-name: rotateIn;
-}
-
-@keyframes rotateInDownLeft {
-  from {
-    transform-origin: left bottom;
-    transform: rotate3d(0, 0, 1, -45deg);
-    opacity: 0;
-  }
-
-  to {
-    transform-origin: left bottom;
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.rotateInDownLeft {
-  animation-name: rotateInDownLeft;
-}
-
-@keyframes rotateInDownRight {
-  from {
-    transform-origin: right bottom;
-    transform: rotate3d(0, 0, 1, 45deg);
-    opacity: 0;
-  }
-
-  to {
-    transform-origin: right bottom;
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.rotateInDownRight {
-  animation-name: rotateInDownRight;
-}
-
-@keyframes rotateInUpLeft {
-  from {
-    transform-origin: left bottom;
-    transform: rotate3d(0, 0, 1, 45deg);
-    opacity: 0;
-  }
-
-  to {
-    transform-origin: left bottom;
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.rotateInUpLeft {
-  animation-name: rotateInUpLeft;
-}
-
-@keyframes rotateInUpRight {
-  from {
-    transform-origin: right bottom;
-    transform: rotate3d(0, 0, 1, -90deg);
-    opacity: 0;
-  }
-
-  to {
-    transform-origin: right bottom;
-    transform: none;
-    opacity: 1;
-  }
-}
-
-.rotateInUpRight {
-  animation-name: rotateInUpRight;
-}
-
-@keyframes rotateOut {
-  from {
-    transform-origin: center;
-    opacity: 1;
-  }
-
-  to {
-    transform-origin: center;
-    transform: rotate3d(0, 0, 1, 200deg);
-    opacity: 0;
-  }
-}
-
-.rotateOut {
-  animation-name: rotateOut;
-}
-
-@keyframes rotateOutDownLeft {
-  from {
-    transform-origin: left bottom;
-    opacity: 1;
-  }
-
-  to {
-    transform-origin: left bottom;
-    transform: rotate3d(0, 0, 1, 45deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutDownLeft {
-  animation-name: rotateOutDownLeft;
-}
-
-@keyframes rotateOutDownRight {
-  from {
-    transform-origin: right bottom;
-    opacity: 1;
-  }
-
-  to {
-    transform-origin: right bottom;
-    transform: rotate3d(0, 0, 1, -45deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutDownRight {
-  animation-name: rotateOutDownRight;
-}
-
-@keyframes rotateOutUpLeft {
-  from {
-    transform-origin: left bottom;
-    opacity: 1;
-  }
-
-  to {
-    transform-origin: left bottom;
-    transform: rotate3d(0, 0, 1, -45deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutUpLeft {
-  animation-name: rotateOutUpLeft;
-}
-
-@keyframes rotateOutUpRight {
-  from {
-    transform-origin: right bottom;
-    opacity: 1;
-  }
-
-  to {
-    transform-origin: right bottom;
-    transform: rotate3d(0, 0, 1, 90deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutUpRight {
-  animation-name: rotateOutUpRight;
-}
-
-@keyframes hinge {
-  0% {
-    transform-origin: top left;
-    animation-timing-function: ease-in-out;
-  }
-
-  20%, 60% {
-    transform: rotate3d(0, 0, 1, 80deg);
-    transform-origin: top left;
-    animation-timing-function: ease-in-out;
-  }
-
-  40%, 80% {
-    transform: rotate3d(0, 0, 1, 60deg);
-    transform-origin: top left;
-    animation-timing-function: ease-in-out;
-    opacity: 1;
-  }
-
-  to {
-    transform: translate3d(0, 700px, 0);
-    opacity: 0;
-  }
-}
-
-.hinge {
-  animation-name: hinge;
-}
-
-@keyframes jackInTheBox {
-  from {
-    opacity: 0;
-    transform: scale(0.1) rotate(30deg);
-    transform-origin: center bottom;
-  }
-
-  50% {
-    transform: rotate(-10deg);
-  }
-
-  70% {
-    transform: rotate(3deg);
-  }
-
-  to {
-    opacity: 1;
-    transform: scale(1);
-  }
-}
-
-.jackInTheBox {
-  animation-name: jackInTheBox;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@keyframes rollIn {
-  from {
-    opacity: 0;
-    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
-  }
-
-  to {
-    opacity: 1;
-    transform: none;
-  }
-}
-
-.rollIn {
-  animation-name: rollIn;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@keyframes rollOut {
-  from {
-    opacity: 1;
-  }
-
-  to {
-    opacity: 0;
-    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
-  }
-}
-
-.rollOut {
-  animation-name: rollOut;
-}
-
-@keyframes zoomIn {
-  from {
-    opacity: 0;
-    transform: scale3d(.3, .3, .3);
-  }
-
-  50% {
-    opacity: 1;
-  }
-}
-
-.zoomIn {
-  animation-name: zoomIn;
-}
-
-@keyframes zoomInDown {
-  from {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  60% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomInDown {
-  animation-name: zoomInDown;
-}
-
-@keyframes zoomInLeft {
-  from {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  60% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomInLeft {
-  animation-name: zoomInLeft;
-}
-
-@keyframes zoomInRight {
-  from {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  60% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomInRight {
-  animation-name: zoomInRight;
-}
-
-@keyframes zoomInUp {
-  from {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  60% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomInUp {
-  animation-name: zoomInUp;
-}
-
-@keyframes zoomOut {
-  from {
-    opacity: 1;
-  }
-
-  50% {
-    opacity: 0;
-    transform: scale3d(.3, .3, .3);
-  }
-
-  to {
-    opacity: 0;
-  }
-}
-
-.zoomOut {
-  animation-name: zoomOut;
-}
-
-@keyframes zoomOutDown {
-  40% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  to {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
-    transform-origin: center bottom;
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomOutDown {
-  animation-name: zoomOutDown;
-}
-
-@keyframes zoomOutLeft {
-  40% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: scale(.1) translate3d(-2000px, 0, 0);
-    transform-origin: left center;
-  }
-}
-
-.zoomOutLeft {
-  animation-name: zoomOutLeft;
-}
-
-@keyframes zoomOutRight {
-  40% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
-  }
-
-  to {
-    opacity: 0;
-    transform: scale(.1) translate3d(2000px, 0, 0);
-    transform-origin: right center;
-  }
-}
-
-.zoomOutRight {
-  animation-name: zoomOutRight;
-}
-
-@keyframes zoomOutUp {
-  40% {
-    opacity: 1;
-    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
-    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
-  }
-
-  to {
-    opacity: 0;
-    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
-    transform-origin: center bottom;
-    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-  }
-}
-
-.zoomOutUp {
-  animation-name: zoomOutUp;
-}
-
-@keyframes slideInDown {
-  from {
-    transform: translate3d(0, -100%, 0);
-    visibility: visible;
-  }
-
-  to {
-    transform: translate3d(0, 0, 0);
-  }
-}
-
-.slideInDown {
-  animation-name: slideInDown;
-}
-
-@keyframes slideInLeft {
-  from {
-    transform: translate3d(-100%, 0, 0);
-    visibility: visible;
-  }
-
-  to {
-    transform: translate3d(0, 0, 0);
-  }
-}
-
-.slideInLeft {
-  animation-name: slideInLeft;
-}
-
-@keyframes slideInRight {
-  from {
-    transform: translate3d(100%, 0, 0);
-    visibility: visible;
-  }
-
-  to {
-    transform: translate3d(0, 0, 0);
-  }
-}
-
-.slideInRight {
-  animation-name: slideInRight;
-}
-
-@keyframes slideInUp {
-  from {
-    transform: translate3d(0, 100%, 0);
-    visibility: visible;
-  }
-
-  to {
-    transform: translate3d(0, 0, 0);
-  }
-}
-
-.slideInUp {
-  animation-name: slideInUp;
-}
-
-@keyframes slideOutDown {
-  from {
-    transform: translate3d(0, 0, 0);
-  }
-
-  to {
-    visibility: hidden;
-    transform: translate3d(0, 100%, 0);
-  }
-}
-
-.slideOutDown {
-  animation-name: slideOutDown;
-}
-
-@keyframes slideOutLeft {
-  from {
-    transform: translate3d(0, 0, 0);
-  }
-
-  to {
-    visibility: hidden;
-    transform: translate3d(-100%, 0, 0);
-  }
-}
-
-.slideOutLeft {
-  animation-name: slideOutLeft;
-}
-
-@keyframes slideOutRight {
-  from {
-    transform: translate3d(0, 0, 0);
-  }
-
-  to {
-    visibility: hidden;
-    transform: translate3d(100%, 0, 0);
-  }
-}
-
-.slideOutRight {
-  animation-name: slideOutRight;
-}
-
-@keyframes slideOutUp {
-  from {
-    transform: translate3d(0, 0, 0);
-  }
-
-  to {
-    visibility: hidden;
-    transform: translate3d(0, -100%, 0);
-  }
-}
-
-.slideOutUp {
-  animation-name: slideOutUp;
-}
diff --git a/archived/http-root/res/sheet/vendor/bootstrap/css/bootstrap.min.css b/archived/http-root/res/sheet/vendor/bootstrap/css/bootstrap.min.css
deleted file mode 100755
index 622b5a94dc9be58634f8d4f118faa056c6d9f526..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/bootstrap/css/bootstrap.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors
- * Copyright 2011-2017 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{box-sizing:inherit}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f8f9fa;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#212529}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #e9ecef}.table thead th{vertical-align:bottom;border-bottom:2px solid #e9ecef}.table tbody+tbody{border-top:2px solid #e9ecef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #e9ecef}.table-bordered td,.table-bordered th{border:1px solid #e9ecef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddfe2}.table-hover .table-secondary:hover{background-color:#cfd2d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfd2d6}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.thead-inverse th{color:#fff;background-color:#212529}.thead-default th{color:#495057;background-color:#e9ecef}.table-inverse{color:#fff;background-color:#212529}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#32383e}.table-inverse.table-bordered{border:0}.table-inverse.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-inverse.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:991px){.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#495057;background-color:#fff;background-image:none;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-plaintext{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.form-control-plaintext.input-group-addon,.input-group-lg>.input-group-btn>.form-control-plaintext.btn,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.form-control-plaintext.input-group-addon,.input-group-sm>.input-group-btn>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.3125rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#868e96}.form-check-label{padding-left:1.25rem;margin-bottom:0}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.invalid-feedback{display:none;margin-top:.25rem;font-size:.875rem;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;width:250px;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.invalid-feedback,.custom-select.is-valid~.invalid-tooltip,.form-control.is-valid~.invalid-feedback,.form-control.is-valid~.invalid-tooltip,.was-validated .custom-select:valid~.invalid-feedback,.was-validated .custom-select:valid~.invalid-tooltip,.was-validated .form-control:valid~.invalid-feedback,.was-validated .form-control:valid~.invalid-tooltip{display:block}.form-check-input.is-valid+.form-check-label,.was-validated .form-check-input:valid+.form-check-label{color:#28a745}.custom-control-input.is-valid~.custom-control-indicator,.was-validated .custom-control-input:valid~.custom-control-indicator{background-color:rgba(40,167,69,.25)}.custom-control-input.is-valid~.custom-control-description,.was-validated .custom-control-input:valid~.custom-control-description{color:#28a745}.custom-file-input.is-valid~.custom-file-control,.was-validated .custom-file-input:valid~.custom-file-control{border-color:#28a745}.custom-file-input.is-valid~.custom-file-control::before,.was-validated .custom-file-input:valid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-valid:focus,.was-validated .custom-file-input:valid:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid+.form-check-label,.was-validated .form-check-input:invalid+.form-check-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-indicator,.was-validated .custom-control-input:invalid~.custom-control-indicator{background-color:rgba(220,53,69,.25)}.custom-control-input.is-invalid~.custom-control-description,.was-validated .custom-control-input:invalid~.custom-control-description{color:#dc3545}.custom-file-input.is-invalid~.custom-file-control,.was-validated .custom-file-input:invalid~.custom-file-control{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-control::before,.was-validated .custom-file-input:invalid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-invalid:focus,.was-validated .custom-file-input:invalid:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem .75rem;font-size:1rem;line-height:1.25;border-radius:.25rem;transition:all .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 3px rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 3px rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#007bff;border-color:#007bff}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{background-color:#0069d9;background-image:none;border-color:#0062cc}.btn-secondary{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:hover{color:#fff;background-color:#727b84;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 3px rgba(134,142,150,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#868e96;border-color:#868e96}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{background-color:#727b84;background-image:none;border-color:#6c757d}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 3px rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#28a745;border-color:#28a745}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{background-color:#218838;background-image:none;border-color:#1e7e34}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 3px rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#17a2b8;border-color:#17a2b8}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{background-color:#138496;background-image:none;border-color:#117a8b}.btn-warning{color:#111;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#111;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 3px rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#ffc107;border-color:#ffc107}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{background-color:#e0a800;background-image:none;border-color:#d39e00}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 3px rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#dc3545;border-color:#dc3545}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{background-color:#c82333;background-image:none;border-color:#bd2130}.btn-light{color:#111;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#111;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 3px rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{background-color:#e2e6ea;background-image:none;border-color:#dae0e5}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 3px rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{background-color:#343a40;border-color:#343a40}.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{background-color:#23272b;background-image:none;border-color:#1d2124}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 3px rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-secondary{color:#868e96;background-color:transparent;background-image:none;border-color:#868e96}.btn-outline-secondary:hover{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 3px rgba(134,142,150,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#868e96;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 3px rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 3px rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#fff;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 3px rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#ffc107;border-color:#ffc107}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 3px rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 3px rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light.active,.btn-outline-light:active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 3px rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark.active,.btn-outline-dark:active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-link{font-weight:400;color:#007bff;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent;box-shadow:none}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#868e96}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.show>a{outline:0}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;margin-bottom:0}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn+.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#495057;text-align:center;background-color:#e9ecef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-indicator{box-shadow:0 0 0 1px #fff,0 0 0 3px #007bff}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-indicator{background-color:#e9ecef}.custom-control-input:disabled~.custom-control-description{color:#868e96}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#007bff;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select:disabled{color:#868e96;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#495057;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en):empty::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#495057;background-color:#e9ecef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#868e96}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.show>.nav-pills .nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-left:15px}}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group .card{-ms-flex:1 0 0%;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb::after{display:block;clear:both;content:""}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#868e96;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#868e96}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#868e96;pointer-events:none;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#868e96}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#6c757d}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#111;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#111;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#111;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#111;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#464a4e;background-color:#e7e8ea;border-color:#dddfe2}.alert-secondary hr{border-top-color:#cfd2d6}.alert-secondary .alert-link{color:#2e3133}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#e9ecef;border-radius:.25rem}.progress-bar{height:1rem;line-height:1rem;color:#fff;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}a.list-group-item-primary,button.list-group-item-primary{color:#004085}a.list-group-item-primary:focus,a.list-group-item-primary:hover,button.list-group-item-primary:focus,button.list-group-item-primary:hover{color:#004085;background-color:#9fcdff}a.list-group-item-primary.active,button.list-group-item-primary.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#464a4e;background-color:#dddfe2}a.list-group-item-secondary,button.list-group-item-secondary{color:#464a4e}a.list-group-item-secondary:focus,a.list-group-item-secondary:hover,button.list-group-item-secondary:focus,button.list-group-item-secondary:hover{color:#464a4e;background-color:#cfd2d6}a.list-group-item-secondary.active,button.list-group-item-secondary.active{color:#fff;background-color:#464a4e;border-color:#464a4e}.list-group-item-success{color:#155724;background-color:#c3e6cb}a.list-group-item-success,button.list-group-item-success{color:#155724}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#155724;background-color:#b1dfbb}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}a.list-group-item-info,button.list-group-item-info{color:#0c5460}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#0c5460;background-color:#abdde5}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}a.list-group-item-warning,button.list-group-item-warning{color:#856404}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#856404;background-color:#ffe8a1}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}a.list-group-item-danger,button.list-group-item-danger{color:#721c24}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#721c24;background-color:#f1b0b7}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}a.list-group-item-light,button.list-group-item-light{color:#818182}a.list-group-item-light:focus,a.list-group-item-light:hover,button.list-group-item-light:focus,button.list-group-item-light:hover{color:#818182;background-color:#ececf6}a.list-group-item-light.active,button.list-group-item-light.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}a.list-group-item-dark,button.list-group-item-dark{color:#1b1e21}a.list-group-item-dark:focus,a.list-group-item-dark:hover,button.list-group-item-dark:focus,button.list-group-item-dark:hover{color:#1b1e21;background-color:#b9bbbe}a.list-group-item-dark.active,button.list-group-item-dark.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:15px;border-bottom:1px solid #e9ecef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:5px;height:5px}.tooltip.bs-tooltip-auto[x-placement^=top],.tooltip.bs-tooltip-top{padding:5px 0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow,.tooltip.bs-tooltip-top .arrow{bottom:0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.bs-tooltip-top .arrow::before{margin-left:-3px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tooltip-auto[x-placement^=right],.tooltip.bs-tooltip-right{padding:0 5px}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.bs-tooltip-right .arrow{left:0}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.bs-tooltip-right .arrow::before{margin-top:-3px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tooltip-auto[x-placement^=bottom],.tooltip.bs-tooltip-bottom{padding:5px 0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow,.tooltip.bs-tooltip-bottom .arrow{top:0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.bs-tooltip-bottom .arrow::before{margin-left:-3px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tooltip-auto[x-placement^=left],.tooltip.bs-tooltip-left{padding:0 5px}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.bs-tooltip-left .arrow{right:0}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.bs-tooltip-left .arrow::before{right:0;margin-top:-3px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip .arrow::before{position:absolute;border-color:transparent;border-style:solid}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:10px;height:5px}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;border-color:transparent;border-style:solid}.popover .arrow::before{content:"";border-width:11px}.popover .arrow::after{content:"";border-width:11px}.popover.bs-popover-auto[x-placement^=top],.popover.bs-popover-top{margin-bottom:10px}.popover.bs-popover-auto[x-placement^=top] .arrow,.popover.bs-popover-top .arrow{bottom:0}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::after,.popover.bs-popover-top .arrow::before{border-bottom-width:0}.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::before{bottom:-11px;margin-left:-6px;border-top-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-top .arrow::after{bottom:-10px;margin-left:-6px;border-top-color:#fff}.popover.bs-popover-auto[x-placement^=right],.popover.bs-popover-right{margin-left:10px}.popover.bs-popover-auto[x-placement^=right] .arrow,.popover.bs-popover-right .arrow{left:0}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::after,.popover.bs-popover-right .arrow::before{margin-top:-8px;border-left-width:0}.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::before{left:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-right .arrow::after{left:-10px;border-right-color:#fff}.popover.bs-popover-auto[x-placement^=bottom],.popover.bs-popover-bottom{margin-top:10px}.popover.bs-popover-auto[x-placement^=bottom] .arrow,.popover.bs-popover-bottom .arrow{top:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::after,.popover.bs-popover-bottom .arrow::before{margin-left:-7px;border-top-width:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::before{top:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-bottom .arrow::after{top:-10px;border-bottom-color:#fff}.popover.bs-popover-auto[x-placement^=bottom] .popover-header::before,.popover.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-popover-auto[x-placement^=left],.popover.bs-popover-left{margin-right:10px}.popover.bs-popover-auto[x-placement^=left] .arrow,.popover.bs-popover-left .arrow{right:0}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::after,.popover.bs-popover-left .arrow::before{margin-top:-8px;border-right-width:0}.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::before{right:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-left .arrow::after{right:-10px;border-left-color:#fff}.popover-header{padding:8px 14px;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:9px 14px;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#868e96!important}a.bg-secondary:focus,a.bg-secondary:hover{background-color:#6c757d!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #e9ecef!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#868e96!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.d-print-block{display:none!important}@media print{.d-print-block{display:block!important}}.d-print-inline{display:none!important}@media print{.d-print-inline{display:inline!important}}.d-print-inline-block{display:none!important}@media print{.d-print-inline-block{display:inline-block!important}}@media print{.d-print-none{display:none!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#868e96!important}a.text-secondary:focus,a.text-secondary:hover{color:#6c757d!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#868e96!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/archived/http-root/res/sheet/vendor/bootstrap/js/bootstrap.min.js b/archived/http-root/res/sheet/vendor/bootstrap/js/bootstrap.min.js
deleted file mode 100755
index e1874769b74562eaee4dbb330e4f1df33413e53c..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/bootstrap/js/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bootstrap v4.0.0-beta (https://getbootstrap.com)
- * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");!function(t){var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=function(t){function e(t){return{}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function n(t){return(t[0]||t).nodeType}function i(){return{bindType:s.end,delegateType:s.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}}function o(){if(window.QUnit)return!1;var t=document.createElement("bootstrap");for(var e in a)if(void 0!==t.style[e])return{end:a[e]};return!1}function r(e){var n=this,i=!1;return t(this).one(l.TRANSITION_END,function(){i=!0}),setTimeout(function(){i||l.triggerTransitionEnd(n)},e),this}var s=!1,a={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n=e.getAttribute("data-target");n&&"#"!==n||(n=e.getAttribute("href")||"");try{return t(n).length>0?n:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(e){t(e).trigger(s.end)},supportsTransitionEnd:function(){return Boolean(s)},typeCheckConfig:function(t,i,o){for(var r in o)if(o.hasOwnProperty(r)){var s=o[r],a=i[r],l=a&&n(a)?"element":e(a);if(!new RegExp(s).test(l))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+l+'" but expected type "'+s+'".')}}};return s=o(),t.fn.emulateTransitionEnd=r,l.supportsTransitionEnd()&&(t.event.special[l.TRANSITION_END]=i()),l}(jQuery),s=(function(t){var e="alert",i=t.fn[e],s={DISMISS:'[data-dismiss="alert"]'},a={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},l={ALERT:"alert",FADE:"fade",SHOW:"show"},h=function(){function e(t){n(this,e),this._element=t}return e.prototype.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.prototype.dispose=function(){t.removeData(this._element,"bs.alert"),this._element=null},e.prototype._getRootElement=function(e){var n=r.getSelectorFromElement(e),i=!1;return n&&(i=t(n)[0]),i||(i=t(e).closest("."+l.ALERT)[0]),i},e.prototype._triggerCloseEvent=function(e){var n=t.Event(a.CLOSE);return t(e).trigger(n),n},e.prototype._removeElement=function(e){var n=this;t(e).removeClass(l.SHOW),r.supportsTransitionEnd()&&t(e).hasClass(l.FADE)?t(e).one(r.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(150):this._destroyElement(e)},e.prototype._destroyElement=function(e){t(e).detach().trigger(a.CLOSED).remove()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.alert");o||(o=new e(this),i.data("bs.alert",o)),"close"===n&&o[n](this)})},e._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DISMISS,h._handleDismiss(new h)),t.fn[e]=h._jQueryInterface,t.fn[e].Constructor=h,t.fn[e].noConflict=function(){return t.fn[e]=i,h._jQueryInterface}}(jQuery),function(t){var e="button",i=t.fn[e],r={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},s={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},a={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.toggle=function(){var e=!0,n=!0,i=t(this._element).closest(s.DATA_TOGGLE)[0];if(i){var o=t(this._element).find(s.INPUT)[0];if(o){if("radio"===o.type)if(o.checked&&t(this._element).hasClass(r.ACTIVE))e=!1;else{var a=t(i).find(s.ACTIVE)[0];a&&t(a).removeClass(r.ACTIVE)}if(e){if(o.hasAttribute("disabled")||i.hasAttribute("disabled")||o.classList.contains("disabled")||i.classList.contains("disabled"))return;o.checked=!t(this._element).hasClass(r.ACTIVE),t(o).trigger("change")}o.focus(),n=!1}}n&&this._element.setAttribute("aria-pressed",!t(this._element).hasClass(r.ACTIVE)),e&&t(this._element).toggleClass(r.ACTIVE)},e.prototype.dispose=function(){t.removeData(this._element,"bs.button"),this._element=null},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.button");i||(i=new e(this),t(this).data("bs.button",i)),"toggle"===n&&i[n]()})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DATA_TOGGLE_CARROT,function(e){e.preventDefault();var n=e.target;t(n).hasClass(r.BUTTON)||(n=t(n).closest(s.BUTTON)),l._jQueryInterface.call(t(n),"toggle")}).on(a.FOCUS_BLUR_DATA_API,s.DATA_TOGGLE_CARROT,function(e){var n=t(e.target).closest(s.BUTTON)[0];t(n).toggleClass(r.FOCUS,/^focus(in)?$/.test(e.type))}),t.fn[e]=l._jQueryInterface,t.fn[e].Constructor=l,t.fn[e].noConflict=function(){return t.fn[e]=i,l._jQueryInterface}}(jQuery),function(t){var e="carousel",s="bs.carousel",a="."+s,l=t.fn[e],h={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},c={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},u={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},d={SLIDE:"slide"+a,SLID:"slid"+a,KEYDOWN:"keydown"+a,MOUSEENTER:"mouseenter"+a,MOUSELEAVE:"mouseleave"+a,TOUCHEND:"touchend"+a,LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},f={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},p={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},_=function(){function l(e,i){n(this,l),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(i),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(p.INDICATORS)[0],this._addEventListeners()}return l.prototype.next=function(){this._isSliding||this._slide(u.NEXT)},l.prototype.nextWhenVisible=function(){document.hidden||this.next()},l.prototype.prev=function(){this._isSliding||this._slide(u.PREV)},l.prototype.pause=function(e){e||(this._isPaused=!0),t(this._element).find(p.NEXT_PREV)[0]&&r.supportsTransitionEnd()&&(r.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},l.prototype.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},l.prototype.to=function(e){var n=this;this._activeElement=t(this._element).find(p.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var o=e>i?u.NEXT:u.PREV;this._slide(o,this._items[e])}},l.prototype.dispose=function(){t(this._element).off(a),t.removeData(this._element,s),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},l.prototype._getConfig=function(n){return n=t.extend({},h,n),r.typeCheckConfig(e,n,c),n},l.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},l.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next();break;default:return}},l.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(p.ITEM)),this._items.indexOf(e)},l.prototype._getItemByDirection=function(t,e){var n=t===u.NEXT,i=t===u.PREV,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===u.PREV?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},l.prototype._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),o=this._getItemIndex(t(this._element).find(p.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:o,to:i});return t(this._element).trigger(r),r},l.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(p.ACTIVE).removeClass(f.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(f.ACTIVE)}},l.prototype._slide=function(e,n){var i=this,o=t(this._element).find(p.ACTIVE_ITEM)[0],s=this._getItemIndex(o),a=n||o&&this._getItemByDirection(e,o),l=this._getItemIndex(a),h=Boolean(this._interval),c=void 0,_=void 0,g=void 0;if(e===u.NEXT?(c=f.LEFT,_=f.NEXT,g=u.LEFT):(c=f.RIGHT,_=f.PREV,g=u.RIGHT),a&&t(a).hasClass(f.ACTIVE))this._isSliding=!1;else if(!this._triggerSlideEvent(a,g).isDefaultPrevented()&&o&&a){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(a);var m=t.Event(d.SLID,{relatedTarget:a,direction:g,from:s,to:l});r.supportsTransitionEnd()&&t(this._element).hasClass(f.SLIDE)?(t(a).addClass(_),r.reflow(a),t(o).addClass(c),t(a).addClass(c),t(o).one(r.TRANSITION_END,function(){t(a).removeClass(c+" "+_).addClass(f.ACTIVE),t(o).removeClass(f.ACTIVE+" "+_+" "+c),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(m)},0)}).emulateTransitionEnd(600)):(t(o).removeClass(f.ACTIVE),t(a).addClass(f.ACTIVE),this._isSliding=!1,t(this._element).trigger(m)),h&&this.cycle()}},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o=t.extend({},h,t(this).data());"object"===(void 0===e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new l(this,o),t(this).data(s,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},l._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(f.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),a=this.getAttribute("data-slide-to");a&&(o.interval=!1),l._jQueryInterface.call(t(i),o),a&&t(i).data(s).to(a),e.preventDefault()}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return h}}]),l}();t(document).on(d.CLICK_DATA_API,p.DATA_SLIDE,_._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(p.DATA_RIDE).each(function(){var e=t(this);_._jQueryInterface.call(e,e.data())})}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=l,_._jQueryInterface}}(jQuery),function(t){var e="collapse",s="bs.collapse",a=t.fn[e],l={toggle:!0,parent:""},h={toggle:"boolean",parent:"string"},c={SHOW:"show.bs.collapse",SHOWN:"shown.bs.collapse",HIDE:"hide.bs.collapse",HIDDEN:"hidden.bs.collapse",CLICK_DATA_API:"click.bs.collapse.data-api"},u={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},d={WIDTH:"width",HEIGHT:"height"},f={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},p=function(){function a(e,i){n(this,a),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var o=t(f.DATA_TOGGLE),s=0;s<o.length;s++){var l=o[s],h=r.getSelectorFromElement(l);null!==h&&t(h).filter(e).length>0&&this._triggerArray.push(l)}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return a.prototype.toggle=function(){t(this._element).hasClass(u.SHOW)?this.hide():this.show()},a.prototype.show=function(){var e=this;if(!this._isTransitioning&&!t(this._element).hasClass(u.SHOW)){var n=void 0,i=void 0;if(this._parent&&((n=t.makeArray(t(this._parent).children().children(f.ACTIVES))).length||(n=null)),!(n&&(i=t(n).data(s))&&i._isTransitioning)){var o=t.Event(c.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(a._jQueryInterface.call(t(n),"hide"),i||t(n).data(s,null));var l=this._getDimension();t(this._element).removeClass(u.COLLAPSE).addClass(u.COLLAPSING),this._element.style[l]=0,this._triggerArray.length&&t(this._triggerArray).removeClass(u.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var h=function(){t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).addClass(u.SHOW),e._element.style[l]="",e.setTransitioning(!1),t(e._element).trigger(c.SHOWN)};if(r.supportsTransitionEnd()){var d="scroll"+(l[0].toUpperCase()+l.slice(1));t(this._element).one(r.TRANSITION_END,h).emulateTransitionEnd(600),this._element.style[l]=this._element[d]+"px"}else h()}}}},a.prototype.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(u.SHOW)){var n=t.Event(c.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",r.reflow(this._element),t(this._element).addClass(u.COLLAPSING).removeClass(u.COLLAPSE).removeClass(u.SHOW),this._triggerArray.length)for(var o=0;o<this._triggerArray.length;o++){var s=this._triggerArray[o],a=r.getSelectorFromElement(s);null!==a&&(t(a).hasClass(u.SHOW)||t(s).addClass(u.COLLAPSED).attr("aria-expanded",!1))}this.setTransitioning(!0);var l=function(){e.setTransitioning(!1),t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).trigger(c.HIDDEN)};this._element.style[i]="",r.supportsTransitionEnd()?t(this._element).one(r.TRANSITION_END,l).emulateTransitionEnd(600):l()}}},a.prototype.setTransitioning=function(t){this._isTransitioning=t},a.prototype.dispose=function(){t.removeData(this._element,s),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},a.prototype._getConfig=function(n){return n=t.extend({},l,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,h),n},a.prototype._getDimension=function(){return t(this._element).hasClass(d.WIDTH)?d.WIDTH:d.HEIGHT},a.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(a._getTargetFromElement(n),[n])}),n},a.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(u.SHOW);n.length&&t(n).toggleClass(u.COLLAPSED,!i).attr("aria-expanded",i)}},a._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},a._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(s),r=t.extend({},l,n.data(),"object"===(void 0===e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new a(this,r),n.data(s,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,f.DATA_TOGGLE,function(e){/input|textarea/i.test(e.target.tagName)||e.preventDefault();var n=t(this),i=r.getSelectorFromElement(this);t(i).each(function(){var e=t(this),i=e.data(s)?"toggle":n.data();p._jQueryInterface.call(e,i)})}),t.fn[e]=p._jQueryInterface,t.fn[e].Constructor=p,t.fn[e].noConflict=function(){return t.fn[e]=a,p._jQueryInterface}}(jQuery),function(t){if("undefined"==typeof Popper)throw new Error("Bootstrap dropdown require Popper.js (https://popper.js.org)");var e="dropdown",s="bs.dropdown",a="."+s,l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK:"click"+a,CLICK_DATA_API:"click.bs.dropdown.data-api",KEYDOWN_DATA_API:"keydown.bs.dropdown.data-api",KEYUP_DATA_API:"keyup.bs.dropdown.data-api"},u={DISABLED:"disabled",SHOW:"show",DROPUP:"dropup",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left"},d={DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",MENU:".dropdown-menu",NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:".dropdown-menu .dropdown-item:not(.disabled)"},f={TOP:"top-start",TOPEND:"top-end",BOTTOM:"bottom-start",BOTTOMEND:"bottom-end"},p={placement:f.BOTTOM,offset:0,flip:!0},_={placement:"string",offset:"(number|string)",flip:"boolean"},g=function(){function l(t,e){n(this,l),this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}return l.prototype.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u.DISABLED)){var e=l._getParentFromElement(this._element),n=t(this._menu).hasClass(u.SHOW);if(l._clearMenus(),!n){var i={relatedTarget:this._element},o=t.Event(c.SHOW,i);if(t(e).trigger(o),!o.isDefaultPrevented()){var r=this._element;t(e).hasClass(u.DROPUP)&&(t(this._menu).hasClass(u.MENULEFT)||t(this._menu).hasClass(u.MENURIGHT))&&(r=e),this._popper=new Popper(r,this._menu,this._getPopperConfig()),"ontouchstart"in document.documentElement&&!t(e).closest(d.NAVBAR_NAV).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(u.SHOW),t(e).toggleClass(u.SHOW).trigger(t.Event(c.SHOWN,i))}}}},l.prototype.dispose=function(){t.removeData(this._element,s),t(this._element).off(a),this._element=null,this._menu=null,null!==this._popper&&this._popper.destroy(),this._popper=null},l.prototype.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l.prototype._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l.prototype._getConfig=function(n){var i=t(this._element).data();return void 0!==i.placement&&(i.placement=f[i.placement.toUpperCase()]),n=t.extend({},this.constructor.Default,t(this._element).data(),n),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},l.prototype._getMenuElement=function(){if(!this._menu){var e=l._getParentFromElement(this._element);this._menu=t(e).find(d.MENU)[0]}return this._menu},l.prototype._getPlacement=function(){var e=t(this._element).parent(),n=this._config.placement;return e.hasClass(u.DROPUP)||this._config.placement===f.TOP?(n=f.TOP,t(this._menu).hasClass(u.MENURIGHT)&&(n=f.TOPEND)):t(this._menu).hasClass(u.MENURIGHT)&&(n=f.BOTTOMEND),n},l.prototype._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l.prototype._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:{offset:this._config.offset},flip:{enabled:this._config.flip}}};return this._inNavbar&&(t.modifiers.applyStyle={enabled:!this._inNavbar}),t},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o="object"===(void 0===e?"undefined":i(e))?e:null;if(n||(n=new l(this,o),t(this).data(s,n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},l._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(d.DATA_TOGGLE)),i=0;i<n.length;i++){var o=l._getParentFromElement(n[i]),r=t(n[i]).data(s),a={relatedTarget:n[i]};if(r){var h=r._menu;if(t(o).hasClass(u.SHOW)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&t.contains(o,e.target))){var f=t.Event(c.HIDE,a);t(o).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),n[i].setAttribute("aria-expanded","false"),t(h).removeClass(u.SHOW),t(o).removeClass(u.SHOW).trigger(t.Event(c.HIDDEN,a)))}}}},l._getParentFromElement=function(e){var n=void 0,i=r.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},l._dataApiKeydownHandler=function(e){if(!(!h.test(e.which)||/button/i.test(e.target.tagName)&&32===e.which||/input|textarea/i.test(e.target.tagName)||(e.preventDefault(),e.stopPropagation(),this.disabled||t(this).hasClass(u.DISABLED)))){var n=l._getParentFromElement(this),i=t(n).hasClass(u.SHOW);if((i||27===e.which&&32===e.which)&&(!i||27!==e.which&&32!==e.which)){var o=t(n).find(d.VISIBLE_ITEMS).get();if(o.length){var r=o.indexOf(e.target);38===e.which&&r>0&&r--,40===e.which&&r<o.length-1&&r++,r<0&&(r=0),o[r].focus()}}else{if(27===e.which){var s=t(n).find(d.DATA_TOGGLE)[0];t(s).trigger("focus")}t(this).trigger("click")}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return p}},{key:"DefaultType",get:function(){return _}}]),l}();t(document).on(c.KEYDOWN_DATA_API,d.DATA_TOGGLE,g._dataApiKeydownHandler).on(c.KEYDOWN_DATA_API,d.MENU,g._dataApiKeydownHandler).on(c.CLICK_DATA_API+" "+c.KEYUP_DATA_API,g._clearMenus).on(c.CLICK_DATA_API,d.DATA_TOGGLE,function(e){e.preventDefault(),e.stopPropagation(),g._jQueryInterface.call(t(this),"toggle")}).on(c.CLICK_DATA_API,d.FORM_CHILD,function(t){t.stopPropagation()}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=l,g._jQueryInterface}}(jQuery),function(t){var e="modal",s=".bs.modal",a=t.fn[e],l={backdrop:!0,keyboard:!0,focus:!0,show:!0},h={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},c={HIDE:"hide.bs.modal",HIDDEN:"hidden.bs.modal",SHOW:"show.bs.modal",SHOWN:"shown.bs.modal",FOCUSIN:"focusin.bs.modal",RESIZE:"resize.bs.modal",CLICK_DISMISS:"click.dismiss.bs.modal",KEYDOWN_DISMISS:"keydown.dismiss.bs.modal",MOUSEUP_DISMISS:"mouseup.dismiss.bs.modal",MOUSEDOWN_DISMISS:"mousedown.dismiss.bs.modal",CLICK_DATA_API:"click.bs.modal.data-api"},u={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",SHOW:"show"},d={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},f=function(){function a(e,i){n(this,a),this._config=this._getConfig(i),this._element=e,this._dialog=t(e).find(d.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return a.prototype.toggle=function(t){return this._isShown?this.hide():this.show(t)},a.prototype.show=function(e){var n=this;if(!this._isTransitioning){r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)&&(this._isTransitioning=!0);var i=t.Event(c.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),t(document.body).addClass(u.OPEN),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(c.CLICK_DISMISS,d.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(c.MOUSEDOWN_DISMISS,function(){t(n._element).one(c.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},a.prototype.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);i&&(this._isTransitioning=!0);var o=t.Event(c.HIDE);t(this._element).trigger(o),this._isShown&&!o.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),t(document).off(c.FOCUSIN),t(this._element).removeClass(u.SHOW),t(this._element).off(c.CLICK_DISMISS),t(this._dialog).off(c.MOUSEDOWN_DISMISS),i?t(this._element).one(r.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal())}},a.prototype.dispose=function(){t.removeData(this._element,"bs.modal"),t(window,document,this._element,this._backdrop).off(s),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},a.prototype.handleUpdate=function(){this._adjustDialog()},a.prototype._getConfig=function(n){return n=t.extend({},l,n),r.typeCheckConfig(e,n,h),n},a.prototype._showElement=function(e){var n=this,i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&r.reflow(this._element),t(this._element).addClass(u.SHOW),this._config.focus&&this._enforceFocus();var o=t.Event(c.SHOWN,{relatedTarget:e}),s=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(o)};i?t(this._dialog).one(r.TRANSITION_END,s).emulateTransitionEnd(300):s()},a.prototype._enforceFocus=function(){var e=this;t(document).off(c.FOCUSIN).on(c.FOCUSIN,function(n){document===n.target||e._element===n.target||t(e._element).has(n.target).length||e._element.focus()})},a.prototype._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(c.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||t(this._element).off(c.KEYDOWN_DISMISS)},a.prototype._setResizeEvent=function(){var e=this;this._isShown?t(window).on(c.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(c.RESIZE)},a.prototype._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(u.OPEN),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(c.HIDDEN)})},a.prototype._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},a.prototype._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(u.FADE)?u.FADE:"";if(this._isShown&&this._config.backdrop){var o=r.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u.BACKDROP,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(c.CLICK_DISMISS,function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),o&&r.reflow(this._backdrop),t(this._backdrop).addClass(u.SHOW),!e)return;if(!o)return void e();t(this._backdrop).one(r.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(u.SHOW);var s=function(){n._removeBackdrop(),e&&e()};r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)?t(this._backdrop).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s()}else e&&e()},a.prototype._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},a.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},a.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},a.prototype._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(d.FIXED_CONTENT).each(function(n,i){var o=t(i)[0].style.paddingRight,r=t(i).css("padding-right");t(i).data("padding-right",o).css("padding-right",parseFloat(r)+e._scrollbarWidth+"px")}),t(d.NAVBAR_TOGGLER).each(function(n,i){var o=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",o).css("margin-right",parseFloat(r)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},a.prototype._resetScrollbar=function(){t(d.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");void 0!==i&&t(n).css("padding-right",i).removeData("padding-right")}),t(d.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");void 0!==i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");void 0!==e&&t("body").css("padding-right",e).removeData("padding-right")},a.prototype._getScrollbarWidth=function(){var t=document.createElement("div");t.className=u.SCROLLBAR_MEASURER,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},a._jQueryInterface=function(e,n){return this.each(function(){var o=t(this).data("bs.modal"),r=t.extend({},a.Default,t(this).data(),"object"===(void 0===e?"undefined":i(e))&&e);if(o||(o=new a(this,r),t(this).data("bs.modal",o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e](n)}else r.show&&o.show(n)})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,d.DATA_TOGGLE,function(e){var n=this,i=void 0,o=r.getSelectorFromElement(this);o&&(i=t(o)[0]);var s=t(i).data("bs.modal")?"toggle":t.extend({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var a=t(i).one(c.SHOW,function(e){e.isDefaultPrevented()||a.one(c.HIDDEN,function(){t(n).is(":visible")&&n.focus()})});f._jQueryInterface.call(t(i),s,this)}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=a,f._jQueryInterface}}(jQuery),function(t){var e="scrollspy",s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},c={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d={OFFSET:"offset",POSITION:"position"},f=function(){function s(e,i){var o=this;n(this,s),this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(i),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.LIST_ITEMS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return o._process(t)}),this.refresh(),this._process()}return s.prototype.refresh=function(){var e=this,n=this._scrollElement!==this._scrollElement.window?d.POSITION:d.OFFSET,i="auto"===this._config.method?n:this._config.method,o=i===d.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n=void 0,s=r.getSelectorFromElement(e);if(s&&(n=t(s)[0]),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[t(n)[i]().top+o,s]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},s.prototype.dispose=function(){t.removeData(this._element,"bs.scrollspy"),t(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},s.prototype._getConfig=function(n){if("string"!=typeof(n=t.extend({},a,n)).target){var i=t(n.target).attr("id");i||(i=r.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return r.typeCheckConfig(e,n,l),n},s.prototype._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},s.prototype._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},s.prototype._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},s.prototype._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},s.prototype._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(c.DROPDOWN_ITEM)?(i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(c.ACTIVE),i.addClass(c.ACTIVE)):(i.addClass(c.ACTIVE),i.parents(u.NAV_LIST_GROUP).prev(u.NAV_LINKS+", "+u.LIST_ITEMS).addClass(c.ACTIVE)),t(this._scrollElement).trigger(h.ACTIVATE,{relatedTarget:e})},s.prototype._clear=function(){t(this._selector).filter(u.ACTIVE).removeClass(c.ACTIVE)},s._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.scrollspy"),o="object"===(void 0===e?"undefined":i(e))&&e;if(n||(n=new s(this,o),t(this).data("bs.scrollspy",n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(s,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return a}}]),s}();t(window).on(h.LOAD_DATA_API,function(){for(var e=t.makeArray(t(u.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);f._jQueryInterface.call(i,i.data())}}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=s,f._jQueryInterface}}(jQuery),function(t){var e=t.fn.tab,i={HIDE:"hide.bs.tab",HIDDEN:"hidden.bs.tab",SHOW:"show.bs.tab",SHOWN:"shown.bs.tab",CLICK_DATA_API:"click.bs.tab.data-api"},s={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},a={DROPDOWN:".dropdown",NAV_LIST_GROUP:".nav, .list-group",ACTIVE:".active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(s.ACTIVE)||t(this._element).hasClass(s.DISABLED))){var n=void 0,o=void 0,l=t(this._element).closest(a.NAV_LIST_GROUP)[0],h=r.getSelectorFromElement(this._element);l&&(o=t.makeArray(t(l).find(a.ACTIVE)),o=o[o.length-1]);var c=t.Event(i.HIDE,{relatedTarget:this._element}),u=t.Event(i.SHOW,{relatedTarget:o});if(o&&t(o).trigger(c),t(this._element).trigger(u),!u.isDefaultPrevented()&&!c.isDefaultPrevented()){h&&(n=t(h)[0]),this._activate(this._element,l);var d=function(){var n=t.Event(i.HIDDEN,{relatedTarget:e._element}),r=t.Event(i.SHOWN,{relatedTarget:o});t(o).trigger(n),t(e._element).trigger(r)};n?this._activate(n,n.parentNode,d):d()}}},e.prototype.dispose=function(){t.removeData(this._element,"bs.tab"),this._element=null},e.prototype._activate=function(e,n,i){var o=this,l=t(n).find(a.ACTIVE)[0],h=i&&r.supportsTransitionEnd()&&l&&t(l).hasClass(s.FADE),c=function(){return o._transitionComplete(e,l,h,i)};l&&h?t(l).one(r.TRANSITION_END,c).emulateTransitionEnd(150):c(),l&&t(l).removeClass(s.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(s.ACTIVE);var l=t(n.parentNode).find(a.DROPDOWN_ACTIVE_CHILD)[0];l&&t(l).removeClass(s.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(s.SHOW)):t(e).removeClass(s.FADE),e.parentNode&&t(e.parentNode).hasClass(s.DROPDOWN_MENU)){var h=t(e).closest(a.DROPDOWN)[0];h&&t(h).find(a.DROPDOWN_TOGGLE).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.tab");if(o||(o=new e(this),i.data("bs.tab",o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}}]),e}();t(document).on(i.CLICK_DATA_API,a.DATA_TOGGLE,function(e){e.preventDefault(),l._jQueryInterface.call(t(this),"show")}),t.fn.tab=l._jQueryInterface,t.fn.tab.Constructor=l,t.fn.tab.noConflict=function(){return t.fn.tab=e,l._jQueryInterface}}(jQuery),function(t){if("undefined"==typeof Popper)throw new Error("Bootstrap tooltips require Popper.js (https://popper.js.org)");var e="tooltip",s=".bs.tooltip",a=t.fn[e],l=new RegExp("(^|\\s)bs-tooltip\\S+","g"),h={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)"},c={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},u={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip"},d={SHOW:"show",OUT:"out"},f={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,INSERTED:"inserted"+s,CLICK:"click"+s,FOCUSIN:"focusin"+s,FOCUSOUT:"focusout"+s,MOUSEENTER:"mouseenter"+s,MOUSELEAVE:"mouseleave"+s},p={FADE:"fade",SHOW:"show"},_={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},g={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},m=function(){function a(t,e){n(this,a),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return a.prototype.enable=function(){this._isEnabled=!0},a.prototype.disable=function(){this._isEnabled=!1},a.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p.SHOW))return void this._leave(null,this);this._enter(null,this)}},a.prototype.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},a.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(p.FADE);var l="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(o).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Popper(this.element,o,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:_.ARROW}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(o).addClass(p.SHOW),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d.OUT&&e._leave(null,e)};r.supportsTransitionEnd()&&t(this.tip).hasClass(p.FADE)?t(this.tip).one(r.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},a.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE),s=function(){n._hoverState!==d.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(p.SHOW),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[g.CLICK]=!1,this._activeTrigger[g.FOCUS]=!1,this._activeTrigger[g.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(p.FADE)?t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s(),this._hoverState="")},a.prototype.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},a.prototype.isWithContent=function(){return Boolean(this.getTitle())},a.prototype.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},a.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},a.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(_.TOOLTIP_INNER),this.getTitle()),e.removeClass(p.FADE+" "+p.SHOW)},a.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===(void 0===n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},a.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},a.prototype._getAttachment=function(t){return c[t.toUpperCase()]},a.prototype._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==g.MANUAL){var i=n===g.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===g.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},a.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?g.FOCUS:g.HOVER]=!0),t(n.getTipElement()).hasClass(p.SHOW)||n._hoverState===d.SHOW?n._hoverState=d.SHOW:(clearTimeout(n._timeout),n._hoverState=d.SHOW,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===d.SHOW&&n.show()},n.config.delay.show):n.show())},a.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?g.FOCUS:g.HOVER]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d.OUT,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d.OUT&&n.hide()},n.config.delay.hide):n.hide())},a.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a.prototype._getConfig=function(n){return(n=t.extend({},this.constructor.Default,t(this.element).data(),n)).delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.title&&"number"==typeof n.title&&(n.title=n.title.toString()),n.content&&"number"==typeof n.content&&(n.content=n.content.toString()),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},a.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a.prototype._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},a.prototype._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},a.prototype._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(p.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.tooltip"),o="object"===(void 0===e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,o),t(this).data("bs.tooltip",n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return f}},{key:"EVENT_KEY",get:function(){return s}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=a,m._jQueryInterface},m}(jQuery));!function(r){var a="popover",l=".bs.popover",h=r.fn[a],c=new RegExp("(^|\\s)bs-popover\\S+","g"),u=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),d=r.extend({},s.DefaultType,{content:"(string|element|function)"}),f={FADE:"fade",SHOW:"show"},p={TITLE:".popover-header",CONTENT:".popover-body"},_={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},g=function(s){function h(){return n(this,h),t(this,s.apply(this,arguments))}return e(h,s),h.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},h.prototype.addAttachmentClass=function(t){r(this.getTipElement()).addClass("bs-popover-"+t)},h.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},h.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(p.TITLE),this.getTitle()),this.setElementContent(t.find(p.CONTENT),this._getContent()),t.removeClass(f.FADE+" "+f.SHOW)},h.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},h.prototype._cleanTipClass=function(){var t=r(this.getTipElement()),e=t.attr("class").match(c);null!==e&&e.length>0&&t.removeClass(e.join(""))},h._jQueryInterface=function(t){return this.each(function(){var e=r(this).data("bs.popover"),n="object"===(void 0===t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new h(this,n),r(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(h,null,[{key:"VERSION",get:function(){return"4.0.0-beta"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return d}}]),h}(s);r.fn[a]=g._jQueryInterface,r.fn[a].Constructor=g,r.fn[a].noConflict=function(){return r.fn[a]=h,g._jQueryInterface}}(jQuery)}();
\ No newline at end of file
diff --git a/archived/http-root/res/sheet/vendor/bootstrap/js/popper.js b/archived/http-root/res/sheet/vendor/bootstrap/js/popper.js
deleted file mode 100755
index de6619d5bac9966865edbf4b5c9a5dba27f3c6aa..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/bootstrap/js/popper.js
+++ /dev/null
@@ -1,2448 +0,0 @@
-/**!
- * @fileOverview Kickass library to create and place poppers near their reference elements.
- * @version 1.12.5
- * @license
- * Copyright (c) 2016 Federico Zivolo and contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-	typeof define === 'function' && define.amd ? define(factory) :
-	(global.Popper = factory());
-}(this, (function () { 'use strict';
-
-var nativeHints = ['native code', '[object MutationObserverConstructor]'];
-
-/**
- * Determine if a function is implemented natively (as opposed to a polyfill).
- * @method
- * @memberof Popper.Utils
- * @argument {Function | undefined} fn the function to check
- * @returns {Boolean}
- */
-var isNative = (function (fn) {
-  return nativeHints.some(function (hint) {
-    return (fn || '').toString().indexOf(hint) > -1;
-  });
-});
-
-var isBrowser = typeof window !== 'undefined';
-var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
-var timeoutDuration = 0;
-for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
-  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
-    timeoutDuration = 1;
-    break;
-  }
-}
-
-function microtaskDebounce(fn) {
-  var scheduled = false;
-  var i = 0;
-  var elem = document.createElement('span');
-
-  // MutationObserver provides a mechanism for scheduling microtasks, which
-  // are scheduled *before* the next task. This gives us a way to debounce
-  // a function but ensure it's called *before* the next paint.
-  var observer = new MutationObserver(function () {
-    fn();
-    scheduled = false;
-  });
-
-  observer.observe(elem, { attributes: true });
-
-  return function () {
-    if (!scheduled) {
-      scheduled = true;
-      elem.setAttribute('x-index', i);
-      i = i + 1; // don't use compund (+=) because it doesn't get optimized in V8
-    }
-  };
-}
-
-function taskDebounce(fn) {
-  var scheduled = false;
-  return function () {
-    if (!scheduled) {
-      scheduled = true;
-      setTimeout(function () {
-        scheduled = false;
-        fn();
-      }, timeoutDuration);
-    }
-  };
-}
-
-// It's common for MutationObserver polyfills to be seen in the wild, however
-// these rely on Mutation Events which only occur when an element is connected
-// to the DOM. The algorithm used in this module does not use a connected element,
-// and so we must ensure that a *native* MutationObserver is available.
-var supportsNativeMutationObserver = isBrowser && isNative(window.MutationObserver);
-
-/**
-* Create a debounced version of a method, that's asynchronously deferred
-* but called in the minimum time possible.
-*
-* @method
-* @memberof Popper.Utils
-* @argument {Function} fn
-* @returns {Function}
-*/
-var debounce = supportsNativeMutationObserver ? microtaskDebounce : taskDebounce;
-
-/**
- * Check if the given variable is a function
- * @method
- * @memberof Popper.Utils
- * @argument {Any} functionToCheck - variable to check
- * @returns {Boolean} answer to: is a function?
- */
-function isFunction(functionToCheck) {
-  var getType = {};
-  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
-}
-
-/**
- * Get CSS computed property of the given element
- * @method
- * @memberof Popper.Utils
- * @argument {Eement} element
- * @argument {String} property
- */
-function getStyleComputedProperty(element, property) {
-  if (element.nodeType !== 1) {
-    return [];
-  }
-  // NOTE: 1 DOM access here
-  var css = window.getComputedStyle(element, null);
-  return property ? css[property] : css;
-}
-
-/**
- * Returns the parentNode or the host of the element
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @returns {Element} parent
- */
-function getParentNode(element) {
-  if (element.nodeName === 'HTML') {
-    return element;
-  }
-  return element.parentNode || element.host;
-}
-
-/**
- * Returns the scrolling parent of the given element
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @returns {Element} scroll parent
- */
-function getScrollParent(element) {
-  // Return body, `getScroll` will take care to get the correct `scrollTop` from it
-  if (!element || ['HTML', 'BODY', '#document'].indexOf(element.nodeName) !== -1) {
-    return window.document.body;
-  }
-
-  // Firefox want us to check `-x` and `-y` variations as well
-
-  var _getStyleComputedProp = getStyleComputedProperty(element),
-      overflow = _getStyleComputedProp.overflow,
-      overflowX = _getStyleComputedProp.overflowX,
-      overflowY = _getStyleComputedProp.overflowY;
-
-  if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {
-    return element;
-  }
-
-  return getScrollParent(getParentNode(element));
-}
-
-/**
- * Returns the offset parent of the given element
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @returns {Element} offset parent
- */
-function getOffsetParent(element) {
-  // NOTE: 1 DOM access here
-  var offsetParent = element && element.offsetParent;
-  var nodeName = offsetParent && offsetParent.nodeName;
-
-  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
-    return window.document.documentElement;
-  }
-
-  // .offsetParent will return the closest TD or TABLE in case
-  // no offsetParent is present, I hate this job...
-  if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
-    return getOffsetParent(offsetParent);
-  }
-
-  return offsetParent;
-}
-
-function isOffsetContainer(element) {
-  var nodeName = element.nodeName;
-
-  if (nodeName === 'BODY') {
-    return false;
-  }
-  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
-}
-
-/**
- * Finds the root node (document, shadowDOM root) of the given element
- * @method
- * @memberof Popper.Utils
- * @argument {Element} node
- * @returns {Element} root node
- */
-function getRoot(node) {
-  if (node.parentNode !== null) {
-    return getRoot(node.parentNode);
-  }
-
-  return node;
-}
-
-/**
- * Finds the offset parent common to the two provided nodes
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element1
- * @argument {Element} element2
- * @returns {Element} common offset parent
- */
-function findCommonOffsetParent(element1, element2) {
-  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
-  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
-    return window.document.documentElement;
-  }
-
-  // Here we make sure to give as "start" the element that comes first in the DOM
-  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
-  var start = order ? element1 : element2;
-  var end = order ? element2 : element1;
-
-  // Get common ancestor container
-  var range = document.createRange();
-  range.setStart(start, 0);
-  range.setEnd(end, 0);
-  var commonAncestorContainer = range.commonAncestorContainer;
-
-  // Both nodes are inside #document
-
-  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
-    if (isOffsetContainer(commonAncestorContainer)) {
-      return commonAncestorContainer;
-    }
-
-    return getOffsetParent(commonAncestorContainer);
-  }
-
-  // one of the nodes is inside shadowDOM, find which one
-  var element1root = getRoot(element1);
-  if (element1root.host) {
-    return findCommonOffsetParent(element1root.host, element2);
-  } else {
-    return findCommonOffsetParent(element1, getRoot(element2).host);
-  }
-}
-
-/**
- * Gets the scroll value of the given element in the given side (top and left)
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @argument {String} side `top` or `left`
- * @returns {number} amount of scrolled pixels
- */
-function getScroll(element) {
-  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
-
-  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
-  var nodeName = element.nodeName;
-
-  if (nodeName === 'BODY' || nodeName === 'HTML') {
-    var html = window.document.documentElement;
-    var scrollingElement = window.document.scrollingElement || html;
-    return scrollingElement[upperSide];
-  }
-
-  return element[upperSide];
-}
-
-/*
- * Sum or subtract the element scroll values (left and top) from a given rect object
- * @method
- * @memberof Popper.Utils
- * @param {Object} rect - Rect object you want to change
- * @param {HTMLElement} element - The element from the function reads the scroll values
- * @param {Boolean} subtract - set to true if you want to subtract the scroll values
- * @return {Object} rect - The modifier rect object
- */
-function includeScroll(rect, element) {
-  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
-  var scrollTop = getScroll(element, 'top');
-  var scrollLeft = getScroll(element, 'left');
-  var modifier = subtract ? -1 : 1;
-  rect.top += scrollTop * modifier;
-  rect.bottom += scrollTop * modifier;
-  rect.left += scrollLeft * modifier;
-  rect.right += scrollLeft * modifier;
-  return rect;
-}
-
-/*
- * Helper to detect borders of a given element
- * @method
- * @memberof Popper.Utils
- * @param {CSSStyleDeclaration} styles
- * Result of `getStyleComputedProperty` on the given element
- * @param {String} axis - `x` or `y`
- * @return {number} borders - The borders size of the given axis
- */
-
-function getBordersSize(styles, axis) {
-  var sideA = axis === 'x' ? 'Left' : 'Top';
-  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
-
-  return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0];
-}
-
-/**
- * Tells if you are running Internet Explorer 10
- * @method
- * @memberof Popper.Utils
- * @returns {Boolean} isIE10
- */
-var isIE10 = undefined;
-
-var isIE10$1 = function () {
-  if (isIE10 === undefined) {
-    isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;
-  }
-  return isIE10;
-};
-
-function getSize(axis, body, html, computedStyle) {
-  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);
-}
-
-function getWindowSizes() {
-  var body = window.document.body;
-  var html = window.document.documentElement;
-  var computedStyle = isIE10$1() && window.getComputedStyle(html);
-
-  return {
-    height: getSize('Height', body, html, computedStyle),
-    width: getSize('Width', body, html, computedStyle)
-  };
-}
-
-var classCallCheck = function (instance, Constructor) {
-  if (!(instance instanceof Constructor)) {
-    throw new TypeError("Cannot call a class as a function");
-  }
-};
-
-var createClass = function () {
-  function defineProperties(target, props) {
-    for (var i = 0; i < props.length; i++) {
-      var descriptor = props[i];
-      descriptor.enumerable = descriptor.enumerable || false;
-      descriptor.configurable = true;
-      if ("value" in descriptor) descriptor.writable = true;
-      Object.defineProperty(target, descriptor.key, descriptor);
-    }
-  }
-
-  return function (Constructor, protoProps, staticProps) {
-    if (protoProps) defineProperties(Constructor.prototype, protoProps);
-    if (staticProps) defineProperties(Constructor, staticProps);
-    return Constructor;
-  };
-}();
-
-
-
-
-
-var defineProperty = function (obj, key, value) {
-  if (key in obj) {
-    Object.defineProperty(obj, key, {
-      value: value,
-      enumerable: true,
-      configurable: true,
-      writable: true
-    });
-  } else {
-    obj[key] = value;
-  }
-
-  return obj;
-};
-
-var _extends = Object.assign || function (target) {
-  for (var i = 1; i < arguments.length; i++) {
-    var source = arguments[i];
-
-    for (var key in source) {
-      if (Object.prototype.hasOwnProperty.call(source, key)) {
-        target[key] = source[key];
-      }
-    }
-  }
-
-  return target;
-};
-
-/**
- * Given element offsets, generate an output similar to getBoundingClientRect
- * @method
- * @memberof Popper.Utils
- * @argument {Object} offsets
- * @returns {Object} ClientRect like output
- */
-function getClientRect(offsets) {
-  return _extends({}, offsets, {
-    right: offsets.left + offsets.width,
-    bottom: offsets.top + offsets.height
-  });
-}
-
-/**
- * Get bounding client rect of given element
- * @method
- * @memberof Popper.Utils
- * @param {HTMLElement} element
- * @return {Object} client rect
- */
-function getBoundingClientRect(element) {
-  var rect = {};
-
-  // IE10 10 FIX: Please, don't ask, the element isn't
-  // considered in DOM in some circumstances...
-  // This isn't reproducible in IE10 compatibility mode of IE11
-  if (isIE10$1()) {
-    try {
-      rect = element.getBoundingClientRect();
-      var scrollTop = getScroll(element, 'top');
-      var scrollLeft = getScroll(element, 'left');
-      rect.top += scrollTop;
-      rect.left += scrollLeft;
-      rect.bottom += scrollTop;
-      rect.right += scrollLeft;
-    } catch (err) {}
-  } else {
-    rect = element.getBoundingClientRect();
-  }
-
-  var result = {
-    left: rect.left,
-    top: rect.top,
-    width: rect.right - rect.left,
-    height: rect.bottom - rect.top
-  };
-
-  // subtract scrollbar size from sizes
-  var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};
-  var width = sizes.width || element.clientWidth || result.right - result.left;
-  var height = sizes.height || element.clientHeight || result.bottom - result.top;
-
-  var horizScrollbar = element.offsetWidth - width;
-  var vertScrollbar = element.offsetHeight - height;
-
-  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
-  // we make this check conditional for performance reasons
-  if (horizScrollbar || vertScrollbar) {
-    var styles = getStyleComputedProperty(element);
-    horizScrollbar -= getBordersSize(styles, 'x');
-    vertScrollbar -= getBordersSize(styles, 'y');
-
-    result.width -= horizScrollbar;
-    result.height -= vertScrollbar;
-  }
-
-  return getClientRect(result);
-}
-
-function getOffsetRectRelativeToArbitraryNode(children, parent) {
-  var isIE10 = isIE10$1();
-  var isHTML = parent.nodeName === 'HTML';
-  var childrenRect = getBoundingClientRect(children);
-  var parentRect = getBoundingClientRect(parent);
-  var scrollParent = getScrollParent(children);
-
-  var styles = getStyleComputedProperty(parent);
-  var borderTopWidth = +styles.borderTopWidth.split('px')[0];
-  var borderLeftWidth = +styles.borderLeftWidth.split('px')[0];
-
-  var offsets = getClientRect({
-    top: childrenRect.top - parentRect.top - borderTopWidth,
-    left: childrenRect.left - parentRect.left - borderLeftWidth,
-    width: childrenRect.width,
-    height: childrenRect.height
-  });
-  offsets.marginTop = 0;
-  offsets.marginLeft = 0;
-
-  // Subtract margins of documentElement in case it's being used as parent
-  // we do this only on HTML because it's the only element that behaves
-  // differently when margins are applied to it. The margins are included in
-  // the box of the documentElement, in the other cases not.
-  if (!isIE10 && isHTML) {
-    var marginTop = +styles.marginTop.split('px')[0];
-    var marginLeft = +styles.marginLeft.split('px')[0];
-
-    offsets.top -= borderTopWidth - marginTop;
-    offsets.bottom -= borderTopWidth - marginTop;
-    offsets.left -= borderLeftWidth - marginLeft;
-    offsets.right -= borderLeftWidth - marginLeft;
-
-    // Attach marginTop and marginLeft because in some circumstances we may need them
-    offsets.marginTop = marginTop;
-    offsets.marginLeft = marginLeft;
-  }
-
-  if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
-    offsets = includeScroll(offsets, parent);
-  }
-
-  return offsets;
-}
-
-function getViewportOffsetRectRelativeToArtbitraryNode(element) {
-  var html = window.document.documentElement;
-  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
-  var width = Math.max(html.clientWidth, window.innerWidth || 0);
-  var height = Math.max(html.clientHeight, window.innerHeight || 0);
-
-  var scrollTop = getScroll(html);
-  var scrollLeft = getScroll(html, 'left');
-
-  var offset = {
-    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
-    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
-    width: width,
-    height: height
-  };
-
-  return getClientRect(offset);
-}
-
-/**
- * Check if the given element is fixed or is inside a fixed parent
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @argument {Element} customContainer
- * @returns {Boolean} answer to "isFixed?"
- */
-function isFixed(element) {
-  var nodeName = element.nodeName;
-  if (nodeName === 'BODY' || nodeName === 'HTML') {
-    return false;
-  }
-  if (getStyleComputedProperty(element, 'position') === 'fixed') {
-    return true;
-  }
-  return isFixed(getParentNode(element));
-}
-
-/**
- * Computed the boundaries limits and return them
- * @method
- * @memberof Popper.Utils
- * @param {HTMLElement} popper
- * @param {HTMLElement} reference
- * @param {number} padding
- * @param {HTMLElement} boundariesElement - Element used to define the boundaries
- * @returns {Object} Coordinates of the boundaries
- */
-function getBoundaries(popper, reference, padding, boundariesElement) {
-  // NOTE: 1 DOM access here
-  var boundaries = { top: 0, left: 0 };
-  var offsetParent = findCommonOffsetParent(popper, reference);
-
-  // Handle viewport case
-  if (boundariesElement === 'viewport') {
-    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);
-  } else {
-    // Handle other cases based on DOM element used as boundaries
-    var boundariesNode = void 0;
-    if (boundariesElement === 'scrollParent') {
-      boundariesNode = getScrollParent(getParentNode(popper));
-      if (boundariesNode.nodeName === 'BODY') {
-        boundariesNode = window.document.documentElement;
-      }
-    } else if (boundariesElement === 'window') {
-      boundariesNode = window.document.documentElement;
-    } else {
-      boundariesNode = boundariesElement;
-    }
-
-    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);
-
-    // In case of HTML, we need a different computation
-    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
-      var _getWindowSizes = getWindowSizes(),
-          height = _getWindowSizes.height,
-          width = _getWindowSizes.width;
-
-      boundaries.top += offsets.top - offsets.marginTop;
-      boundaries.bottom = height + offsets.top;
-      boundaries.left += offsets.left - offsets.marginLeft;
-      boundaries.right = width + offsets.left;
-    } else {
-      // for all the other DOM elements, this one is good
-      boundaries = offsets;
-    }
-  }
-
-  // Add paddings
-  boundaries.left += padding;
-  boundaries.top += padding;
-  boundaries.right -= padding;
-  boundaries.bottom -= padding;
-
-  return boundaries;
-}
-
-function getArea(_ref) {
-  var width = _ref.width,
-      height = _ref.height;
-
-  return width * height;
-}
-
-/**
- * Utility used to transform the `auto` placement to the placement with more
- * available space.
- * @method
- * @memberof Popper.Utils
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
-  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
-
-  if (placement.indexOf('auto') === -1) {
-    return placement;
-  }
-
-  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
-
-  var rects = {
-    top: {
-      width: boundaries.width,
-      height: refRect.top - boundaries.top
-    },
-    right: {
-      width: boundaries.right - refRect.right,
-      height: boundaries.height
-    },
-    bottom: {
-      width: boundaries.width,
-      height: boundaries.bottom - refRect.bottom
-    },
-    left: {
-      width: refRect.left - boundaries.left,
-      height: boundaries.height
-    }
-  };
-
-  var sortedAreas = Object.keys(rects).map(function (key) {
-    return _extends({
-      key: key
-    }, rects[key], {
-      area: getArea(rects[key])
-    });
-  }).sort(function (a, b) {
-    return b.area - a.area;
-  });
-
-  var filteredAreas = sortedAreas.filter(function (_ref2) {
-    var width = _ref2.width,
-        height = _ref2.height;
-    return width >= popper.clientWidth && height >= popper.clientHeight;
-  });
-
-  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
-
-  var variation = placement.split('-')[1];
-
-  return computedPlacement + (variation ? '-' + variation : '');
-}
-
-/**
- * Get offsets to the reference element
- * @method
- * @memberof Popper.Utils
- * @param {Object} state
- * @param {Element} popper - the popper element
- * @param {Element} reference - the reference element (the popper will be relative to this)
- * @returns {Object} An object containing the offsets which will be applied to the popper
- */
-function getReferenceOffsets(state, popper, reference) {
-  var commonOffsetParent = findCommonOffsetParent(popper, reference);
-  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);
-}
-
-/**
- * Get the outer sizes of the given element (offset size + margins)
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element
- * @returns {Object} object containing width and height properties
- */
-function getOuterSizes(element) {
-  var styles = window.getComputedStyle(element);
-  var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
-  var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
-  var result = {
-    width: element.offsetWidth + y,
-    height: element.offsetHeight + x
-  };
-  return result;
-}
-
-/**
- * Get the opposite placement of the given one
- * @method
- * @memberof Popper.Utils
- * @argument {String} placement
- * @returns {String} flipped placement
- */
-function getOppositePlacement(placement) {
-  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
-  return placement.replace(/left|right|bottom|top/g, function (matched) {
-    return hash[matched];
-  });
-}
-
-/**
- * Get offsets to the popper
- * @method
- * @memberof Popper.Utils
- * @param {Object} position - CSS position the Popper will get applied
- * @param {HTMLElement} popper - the popper element
- * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
- * @param {String} placement - one of the valid placement options
- * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
- */
-function getPopperOffsets(popper, referenceOffsets, placement) {
-  placement = placement.split('-')[0];
-
-  // Get popper node sizes
-  var popperRect = getOuterSizes(popper);
-
-  // Add position, width and height to our offsets object
-  var popperOffsets = {
-    width: popperRect.width,
-    height: popperRect.height
-  };
-
-  // depending by the popper placement we have to compute its offsets slightly differently
-  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
-  var mainSide = isHoriz ? 'top' : 'left';
-  var secondarySide = isHoriz ? 'left' : 'top';
-  var measurement = isHoriz ? 'height' : 'width';
-  var secondaryMeasurement = !isHoriz ? 'height' : 'width';
-
-  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
-  if (placement === secondarySide) {
-    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
-  } else {
-    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
-  }
-
-  return popperOffsets;
-}
-
-/**
- * Mimics the `find` method of Array
- * @method
- * @memberof Popper.Utils
- * @argument {Array} arr
- * @argument prop
- * @argument value
- * @returns index or -1
- */
-function find(arr, check) {
-  // use native find if supported
-  if (Array.prototype.find) {
-    return arr.find(check);
-  }
-
-  // use `filter` to obtain the same behavior of `find`
-  return arr.filter(check)[0];
-}
-
-/**
- * Return the index of the matching object
- * @method
- * @memberof Popper.Utils
- * @argument {Array} arr
- * @argument prop
- * @argument value
- * @returns index or -1
- */
-function findIndex(arr, prop, value) {
-  // use native findIndex if supported
-  if (Array.prototype.findIndex) {
-    return arr.findIndex(function (cur) {
-      return cur[prop] === value;
-    });
-  }
-
-  // use `find` + `indexOf` if `findIndex` isn't supported
-  var match = find(arr, function (obj) {
-    return obj[prop] === value;
-  });
-  return arr.indexOf(match);
-}
-
-/**
- * Loop trough the list of modifiers and run them in order,
- * each of them will then edit the data object.
- * @method
- * @memberof Popper.Utils
- * @param {dataObject} data
- * @param {Array} modifiers
- * @param {String} ends - Optional modifier name used as stopper
- * @returns {dataObject}
- */
-function runModifiers(modifiers, data, ends) {
-  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
-
-  modifiersToRun.forEach(function (modifier) {
-    if (modifier.function) {
-      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
-    }
-    var fn = modifier.function || modifier.fn;
-    if (modifier.enabled && isFunction(fn)) {
-      // Add properties to offsets to make them a complete clientRect object
-      // we do this before each modifier to make sure the previous one doesn't
-      // mess with these values
-      data.offsets.popper = getClientRect(data.offsets.popper);
-      data.offsets.reference = getClientRect(data.offsets.reference);
-
-      data = fn(data, modifier);
-    }
-  });
-
-  return data;
-}
-
-/**
- * Updates the position of the popper, computing the new offsets and applying
- * the new style.<br />
- * Prefer `scheduleUpdate` over `update` because of performance reasons.
- * @method
- * @memberof Popper
- */
-function update() {
-  // if popper is destroyed, don't perform any further update
-  if (this.state.isDestroyed) {
-    return;
-  }
-
-  var data = {
-    instance: this,
-    styles: {},
-    arrowStyles: {},
-    attributes: {},
-    flipped: false,
-    offsets: {}
-  };
-
-  // compute reference element offsets
-  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);
-
-  // compute auto placement, store placement inside the data object,
-  // modifiers will be able to edit `placement` if needed
-  // and refer to originalPlacement to know the original value
-  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
-
-  // store the computed placement inside `originalPlacement`
-  data.originalPlacement = data.placement;
-
-  // compute the popper offsets
-  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
-  data.offsets.popper.position = 'absolute';
-
-  // run the modifiers
-  data = runModifiers(this.modifiers, data);
-
-  // the first `update` will call `onCreate` callback
-  // the other ones will call `onUpdate` callback
-  if (!this.state.isCreated) {
-    this.state.isCreated = true;
-    this.options.onCreate(data);
-  } else {
-    this.options.onUpdate(data);
-  }
-}
-
-/**
- * Helper used to know if the given modifier is enabled.
- * @method
- * @memberof Popper.Utils
- * @returns {Boolean}
- */
-function isModifierEnabled(modifiers, modifierName) {
-  return modifiers.some(function (_ref) {
-    var name = _ref.name,
-        enabled = _ref.enabled;
-    return enabled && name === modifierName;
-  });
-}
-
-/**
- * Get the prefixed supported property name
- * @method
- * @memberof Popper.Utils
- * @argument {String} property (camelCase)
- * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
- */
-function getSupportedPropertyName(property) {
-  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
-  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
-
-  for (var i = 0; i < prefixes.length - 1; i++) {
-    var prefix = prefixes[i];
-    var toCheck = prefix ? '' + prefix + upperProp : property;
-    if (typeof window.document.body.style[toCheck] !== 'undefined') {
-      return toCheck;
-    }
-  }
-  return null;
-}
-
-/**
- * Destroy the popper
- * @method
- * @memberof Popper
- */
-function destroy() {
-  this.state.isDestroyed = true;
-
-  // touch DOM only if `applyStyle` modifier is enabled
-  if (isModifierEnabled(this.modifiers, 'applyStyle')) {
-    this.popper.removeAttribute('x-placement');
-    this.popper.style.left = '';
-    this.popper.style.position = '';
-    this.popper.style.top = '';
-    this.popper.style[getSupportedPropertyName('transform')] = '';
-  }
-
-  this.disableEventListeners();
-
-  // remove the popper if user explicity asked for the deletion on destroy
-  // do not use `remove` because IE11 doesn't support it
-  if (this.options.removeOnDestroy) {
-    this.popper.parentNode.removeChild(this.popper);
-  }
-  return this;
-}
-
-function attachToScrollParents(scrollParent, event, callback, scrollParents) {
-  var isBody = scrollParent.nodeName === 'BODY';
-  var target = isBody ? window : scrollParent;
-  target.addEventListener(event, callback, { passive: true });
-
-  if (!isBody) {
-    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
-  }
-  scrollParents.push(target);
-}
-
-/**
- * Setup needed event listeners used to update the popper position
- * @method
- * @memberof Popper.Utils
- * @private
- */
-function setupEventListeners(reference, options, state, updateBound) {
-  // Resize event listener on window
-  state.updateBound = updateBound;
-  window.addEventListener('resize', state.updateBound, { passive: true });
-
-  // Scroll event listener on scroll parents
-  var scrollElement = getScrollParent(reference);
-  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
-  state.scrollElement = scrollElement;
-  state.eventsEnabled = true;
-
-  return state;
-}
-
-/**
- * It will add resize/scroll events and start recalculating
- * position of the popper element when they are triggered.
- * @method
- * @memberof Popper
- */
-function enableEventListeners() {
-  if (!this.state.eventsEnabled) {
-    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
-  }
-}
-
-/**
- * Remove event listeners used to update the popper position
- * @method
- * @memberof Popper.Utils
- * @private
- */
-function removeEventListeners(reference, state) {
-  // Remove resize event listener on window
-  window.removeEventListener('resize', state.updateBound);
-
-  // Remove scroll event listener on scroll parents
-  state.scrollParents.forEach(function (target) {
-    target.removeEventListener('scroll', state.updateBound);
-  });
-
-  // Reset state
-  state.updateBound = null;
-  state.scrollParents = [];
-  state.scrollElement = null;
-  state.eventsEnabled = false;
-  return state;
-}
-
-/**
- * It will remove resize/scroll events and won't recalculate popper position
- * when they are triggered. It also won't trigger onUpdate callback anymore,
- * unless you call `update` method manually.
- * @method
- * @memberof Popper
- */
-function disableEventListeners() {
-  if (this.state.eventsEnabled) {
-    window.cancelAnimationFrame(this.scheduleUpdate);
-    this.state = removeEventListeners(this.reference, this.state);
-  }
-}
-
-/**
- * Tells if a given input is a number
- * @method
- * @memberof Popper.Utils
- * @param {*} input to check
- * @return {Boolean}
- */
-function isNumeric(n) {
-  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
-}
-
-/**
- * Set the style to the given popper
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element - Element to apply the style to
- * @argument {Object} styles
- * Object with a list of properties and values which will be applied to the element
- */
-function setStyles(element, styles) {
-  Object.keys(styles).forEach(function (prop) {
-    var unit = '';
-    // add unit if the value is numeric and is one of the following
-    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
-      unit = 'px';
-    }
-    element.style[prop] = styles[prop] + unit;
-  });
-}
-
-/**
- * Set the attributes to the given popper
- * @method
- * @memberof Popper.Utils
- * @argument {Element} element - Element to apply the attributes to
- * @argument {Object} styles
- * Object with a list of properties and values which will be applied to the element
- */
-function setAttributes(element, attributes) {
-  Object.keys(attributes).forEach(function (prop) {
-    var value = attributes[prop];
-    if (value !== false) {
-      element.setAttribute(prop, attributes[prop]);
-    } else {
-      element.removeAttribute(prop);
-    }
-  });
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by `update` method
- * @argument {Object} data.styles - List of style properties - values to apply to popper element
- * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The same data object
- */
-function applyStyle(data) {
-  // any property present in `data.styles` will be applied to the popper,
-  // in this way we can make the 3rd party modifiers add custom styles to it
-  // Be aware, modifiers could override the properties defined in the previous
-  // lines of this modifier!
-  setStyles(data.instance.popper, data.styles);
-
-  // any property present in `data.attributes` will be applied to the popper,
-  // they will be set as HTML attributes of the element
-  setAttributes(data.instance.popper, data.attributes);
-
-  // if arrowElement is defined and arrowStyles has some properties
-  if (data.arrowElement && Object.keys(data.arrowStyles).length) {
-    setStyles(data.arrowElement, data.arrowStyles);
-  }
-
-  return data;
-}
-
-/**
- * Set the x-placement attribute before everything else because it could be used
- * to add margins to the popper margins needs to be calculated to get the
- * correct popper offsets.
- * @method
- * @memberof Popper.modifiers
- * @param {HTMLElement} reference - The reference element used to position the popper
- * @param {HTMLElement} popper - The HTML element used as popper.
- * @param {Object} options - Popper.js options
- */
-function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
-  // compute reference element offsets
-  var referenceOffsets = getReferenceOffsets(state, popper, reference);
-
-  // compute auto placement, store placement inside the data object,
-  // modifiers will be able to edit `placement` if needed
-  // and refer to originalPlacement to know the original value
-  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
-
-  popper.setAttribute('x-placement', placement);
-
-  // Apply `position` to popper before anything else because
-  // without the position applied we can't guarantee correct computations
-  setStyles(popper, { position: 'absolute' });
-
-  return options;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by `update` method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function computeStyle(data, options) {
-  var x = options.x,
-      y = options.y;
-  var popper = data.offsets.popper;
-
-  // Remove this legacy support in Popper.js v2
-
-  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
-    return modifier.name === 'applyStyle';
-  }).gpuAcceleration;
-  if (legacyGpuAccelerationOption !== undefined) {
-    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
-  }
-  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
-
-  var offsetParent = getOffsetParent(data.instance.popper);
-  var offsetParentRect = getBoundingClientRect(offsetParent);
-
-  // Styles
-  var styles = {
-    position: popper.position
-  };
-
-  // floor sides to avoid blurry text
-  var offsets = {
-    left: Math.floor(popper.left),
-    top: Math.floor(popper.top),
-    bottom: Math.floor(popper.bottom),
-    right: Math.floor(popper.right)
-  };
-
-  var sideA = x === 'bottom' ? 'top' : 'bottom';
-  var sideB = y === 'right' ? 'left' : 'right';
-
-  // if gpuAcceleration is set to `true` and transform is supported,
-  //  we use `translate3d` to apply the position to the popper we
-  // automatically use the supported prefixed version if needed
-  var prefixedProperty = getSupportedPropertyName('transform');
-
-  // now, let's make a step back and look at this code closely (wtf?)
-  // If the content of the popper grows once it's been positioned, it
-  // may happen that the popper gets misplaced because of the new content
-  // overflowing its reference element
-  // To avoid this problem, we provide two options (x and y), which allow
-  // the consumer to define the offset origin.
-  // If we position a popper on top of a reference element, we can set
-  // `x` to `top` to make the popper grow towards its top instead of
-  // its bottom.
-  var left = void 0,
-      top = void 0;
-  if (sideA === 'bottom') {
-    top = -offsetParentRect.height + offsets.bottom;
-  } else {
-    top = offsets.top;
-  }
-  if (sideB === 'right') {
-    left = -offsetParentRect.width + offsets.right;
-  } else {
-    left = offsets.left;
-  }
-  if (gpuAcceleration && prefixedProperty) {
-    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
-    styles[sideA] = 0;
-    styles[sideB] = 0;
-    styles.willChange = 'transform';
-  } else {
-    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
-    var invertTop = sideA === 'bottom' ? -1 : 1;
-    var invertLeft = sideB === 'right' ? -1 : 1;
-    styles[sideA] = top * invertTop;
-    styles[sideB] = left * invertLeft;
-    styles.willChange = sideA + ', ' + sideB;
-  }
-
-  // Attributes
-  var attributes = {
-    'x-placement': data.placement
-  };
-
-  // Update `data` attributes, styles and arrowStyles
-  data.attributes = _extends({}, attributes, data.attributes);
-  data.styles = _extends({}, styles, data.styles);
-  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
-
-  return data;
-}
-
-/**
- * Helper used to know if the given modifier depends from another one.<br />
- * It checks if the needed modifier is listed and enabled.
- * @method
- * @memberof Popper.Utils
- * @param {Array} modifiers - list of modifiers
- * @param {String} requestingName - name of requesting modifier
- * @param {String} requestedName - name of requested modifier
- * @returns {Boolean}
- */
-function isModifierRequired(modifiers, requestingName, requestedName) {
-  var requesting = find(modifiers, function (_ref) {
-    var name = _ref.name;
-    return name === requestingName;
-  });
-
-  var isRequired = !!requesting && modifiers.some(function (modifier) {
-    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
-  });
-
-  if (!isRequired) {
-    var _requesting = '`' + requestingName + '`';
-    var requested = '`' + requestedName + '`';
-    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
-  }
-  return isRequired;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function arrow(data, options) {
-  // arrow depends on keepTogether in order to work
-  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
-    return data;
-  }
-
-  var arrowElement = options.element;
-
-  // if arrowElement is a string, suppose it's a CSS selector
-  if (typeof arrowElement === 'string') {
-    arrowElement = data.instance.popper.querySelector(arrowElement);
-
-    // if arrowElement is not found, don't run the modifier
-    if (!arrowElement) {
-      return data;
-    }
-  } else {
-    // if the arrowElement isn't a query selector we must check that the
-    // provided DOM node is child of its popper node
-    if (!data.instance.popper.contains(arrowElement)) {
-      console.warn('WARNING: `arrow.element` must be child of its popper element!');
-      return data;
-    }
-  }
-
-  var placement = data.placement.split('-')[0];
-  var _data$offsets = data.offsets,
-      popper = _data$offsets.popper,
-      reference = _data$offsets.reference;
-
-  var isVertical = ['left', 'right'].indexOf(placement) !== -1;
-
-  var len = isVertical ? 'height' : 'width';
-  var sideCapitalized = isVertical ? 'Top' : 'Left';
-  var side = sideCapitalized.toLowerCase();
-  var altSide = isVertical ? 'left' : 'top';
-  var opSide = isVertical ? 'bottom' : 'right';
-  var arrowElementSize = getOuterSizes(arrowElement)[len];
-
-  //
-  // extends keepTogether behavior making sure the popper and its
-  // reference have enough pixels in conjuction
-  //
-
-  // top/left side
-  if (reference[opSide] - arrowElementSize < popper[side]) {
-    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
-  }
-  // bottom/right side
-  if (reference[side] + arrowElementSize > popper[opSide]) {
-    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
-  }
-
-  // compute center of the popper
-  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
-
-  // Compute the sideValue using the updated popper offsets
-  // take popper margin in account because we don't have this info available
-  var popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', '');
-  var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide;
-
-  // prevent arrowElement from being placed not contiguously to its popper
-  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
-
-  data.arrowElement = arrowElement;
-  data.offsets.arrow = {};
-  data.offsets.arrow[side] = Math.round(sideValue);
-  data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node
-
-  return data;
-}
-
-/**
- * Get the opposite placement variation of the given one
- * @method
- * @memberof Popper.Utils
- * @argument {String} placement variation
- * @returns {String} flipped placement variation
- */
-function getOppositeVariation(variation) {
-  if (variation === 'end') {
-    return 'start';
-  } else if (variation === 'start') {
-    return 'end';
-  }
-  return variation;
-}
-
-/**
- * List of accepted placements to use as values of the `placement` option.<br />
- * Valid placements are:
- * - `auto`
- * - `top`
- * - `right`
- * - `bottom`
- * - `left`
- *
- * Each placement can have a variation from this list:
- * - `-start`
- * - `-end`
- *
- * Variations are interpreted easily if you think of them as the left to right
- * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
- * is right.<br />
- * Vertically (`left` and `right`), `start` is top and `end` is bottom.
- *
- * Some valid examples are:
- * - `top-end` (on top of reference, right aligned)
- * - `right-start` (on right of reference, top aligned)
- * - `bottom` (on bottom, centered)
- * - `auto-right` (on the side with more space available, alignment depends by placement)
- *
- * @static
- * @type {Array}
- * @enum {String}
- * @readonly
- * @method placements
- * @memberof Popper
- */
-var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
-
-// Get rid of `auto` `auto-start` and `auto-end`
-var validPlacements = placements.slice(3);
-
-/**
- * Given an initial placement, returns all the subsequent placements
- * clockwise (or counter-clockwise).
- *
- * @method
- * @memberof Popper.Utils
- * @argument {String} placement - A valid placement (it accepts variations)
- * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
- * @returns {Array} placements including their variations
- */
-function clockwise(placement) {
-  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
-  var index = validPlacements.indexOf(placement);
-  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
-  return counter ? arr.reverse() : arr;
-}
-
-var BEHAVIORS = {
-  FLIP: 'flip',
-  CLOCKWISE: 'clockwise',
-  COUNTERCLOCKWISE: 'counterclockwise'
-};
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function flip(data, options) {
-  // if `inner` modifier is enabled, we can't use the `flip` modifier
-  if (isModifierEnabled(data.instance.modifiers, 'inner')) {
-    return data;
-  }
-
-  if (data.flipped && data.placement === data.originalPlacement) {
-    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
-    return data;
-  }
-
-  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);
-
-  var placement = data.placement.split('-')[0];
-  var placementOpposite = getOppositePlacement(placement);
-  var variation = data.placement.split('-')[1] || '';
-
-  var flipOrder = [];
-
-  switch (options.behavior) {
-    case BEHAVIORS.FLIP:
-      flipOrder = [placement, placementOpposite];
-      break;
-    case BEHAVIORS.CLOCKWISE:
-      flipOrder = clockwise(placement);
-      break;
-    case BEHAVIORS.COUNTERCLOCKWISE:
-      flipOrder = clockwise(placement, true);
-      break;
-    default:
-      flipOrder = options.behavior;
-  }
-
-  flipOrder.forEach(function (step, index) {
-    if (placement !== step || flipOrder.length === index + 1) {
-      return data;
-    }
-
-    placement = data.placement.split('-')[0];
-    placementOpposite = getOppositePlacement(placement);
-
-    var popperOffsets = data.offsets.popper;
-    var refOffsets = data.offsets.reference;
-
-    // using floor because the reference offsets may contain decimals we are not going to consider here
-    var floor = Math.floor;
-    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
-
-    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
-    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
-    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
-    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
-
-    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
-
-    // flip the variation if required
-    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
-    var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
-
-    if (overlapsRef || overflowsBoundaries || flippedVariation) {
-      // this boolean to detect any flip loop
-      data.flipped = true;
-
-      if (overlapsRef || overflowsBoundaries) {
-        placement = flipOrder[index + 1];
-      }
-
-      if (flippedVariation) {
-        variation = getOppositeVariation(variation);
-      }
-
-      data.placement = placement + (variation ? '-' + variation : '');
-
-      // this object contains `position`, we want to preserve it along with
-      // any additional property we may add in the future
-      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
-
-      data = runModifiers(data.instance.modifiers, data, 'flip');
-    }
-  });
-  return data;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function keepTogether(data) {
-  var _data$offsets = data.offsets,
-      popper = _data$offsets.popper,
-      reference = _data$offsets.reference;
-
-  var placement = data.placement.split('-')[0];
-  var floor = Math.floor;
-  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
-  var side = isVertical ? 'right' : 'bottom';
-  var opSide = isVertical ? 'left' : 'top';
-  var measurement = isVertical ? 'width' : 'height';
-
-  if (popper[side] < floor(reference[opSide])) {
-    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
-  }
-  if (popper[opSide] > floor(reference[side])) {
-    data.offsets.popper[opSide] = floor(reference[side]);
-  }
-
-  return data;
-}
-
-/**
- * Converts a string containing value + unit into a px value number
- * @function
- * @memberof {modifiers~offset}
- * @private
- * @argument {String} str - Value + unit string
- * @argument {String} measurement - `height` or `width`
- * @argument {Object} popperOffsets
- * @argument {Object} referenceOffsets
- * @returns {Number|String}
- * Value in pixels, or original string if no values were extracted
- */
-function toValue(str, measurement, popperOffsets, referenceOffsets) {
-  // separate value from unit
-  var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
-  var value = +split[1];
-  var unit = split[2];
-
-  // If it's not a number it's an operator, I guess
-  if (!value) {
-    return str;
-  }
-
-  if (unit.indexOf('%') === 0) {
-    var element = void 0;
-    switch (unit) {
-      case '%p':
-        element = popperOffsets;
-        break;
-      case '%':
-      case '%r':
-      default:
-        element = referenceOffsets;
-    }
-
-    var rect = getClientRect(element);
-    return rect[measurement] / 100 * value;
-  } else if (unit === 'vh' || unit === 'vw') {
-    // if is a vh or vw, we calculate the size based on the viewport
-    var size = void 0;
-    if (unit === 'vh') {
-      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
-    } else {
-      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
-    }
-    return size / 100 * value;
-  } else {
-    // if is an explicit pixel unit, we get rid of the unit and keep the value
-    // if is an implicit unit, it's px, and we return just the value
-    return value;
-  }
-}
-
-/**
- * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
- * @function
- * @memberof {modifiers~offset}
- * @private
- * @argument {String} offset
- * @argument {Object} popperOffsets
- * @argument {Object} referenceOffsets
- * @argument {String} basePlacement
- * @returns {Array} a two cells array with x and y offsets in numbers
- */
-function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
-  var offsets = [0, 0];
-
-  // Use height if placement is left or right and index is 0 otherwise use width
-  // in this way the first offset will use an axis and the second one
-  // will use the other one
-  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
-
-  // Split the offset string to obtain a list of values and operands
-  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
-  var fragments = offset.split(/(\+|\-)/).map(function (frag) {
-    return frag.trim();
-  });
-
-  // Detect if the offset string contains a pair of values or a single one
-  // they could be separated by comma or space
-  var divider = fragments.indexOf(find(fragments, function (frag) {
-    return frag.search(/,|\s/) !== -1;
-  }));
-
-  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
-    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
-  }
-
-  // If divider is found, we divide the list of values and operands to divide
-  // them by ofset X and Y.
-  var splitRegex = /\s*,\s*|\s+/;
-  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
-
-  // Convert the values with units to absolute pixels to allow our computations
-  ops = ops.map(function (op, index) {
-    // Most of the units rely on the orientation of the popper
-    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
-    var mergeWithPrevious = false;
-    return op
-    // This aggregates any `+` or `-` sign that aren't considered operators
-    // e.g.: 10 + +5 => [10, +, +5]
-    .reduce(function (a, b) {
-      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
-        a[a.length - 1] = b;
-        mergeWithPrevious = true;
-        return a;
-      } else if (mergeWithPrevious) {
-        a[a.length - 1] += b;
-        mergeWithPrevious = false;
-        return a;
-      } else {
-        return a.concat(b);
-      }
-    }, [])
-    // Here we convert the string values into number values (in px)
-    .map(function (str) {
-      return toValue(str, measurement, popperOffsets, referenceOffsets);
-    });
-  });
-
-  // Loop trough the offsets arrays and execute the operations
-  ops.forEach(function (op, index) {
-    op.forEach(function (frag, index2) {
-      if (isNumeric(frag)) {
-        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
-      }
-    });
-  });
-  return offsets;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @argument {Number|String} options.offset=0
- * The offset value as described in the modifier description
- * @returns {Object} The data object, properly modified
- */
-function offset(data, _ref) {
-  var offset = _ref.offset;
-  var placement = data.placement,
-      _data$offsets = data.offsets,
-      popper = _data$offsets.popper,
-      reference = _data$offsets.reference;
-
-  var basePlacement = placement.split('-')[0];
-
-  var offsets = void 0;
-  if (isNumeric(+offset)) {
-    offsets = [+offset, 0];
-  } else {
-    offsets = parseOffset(offset, popper, reference, basePlacement);
-  }
-
-  if (basePlacement === 'left') {
-    popper.top += offsets[0];
-    popper.left -= offsets[1];
-  } else if (basePlacement === 'right') {
-    popper.top += offsets[0];
-    popper.left += offsets[1];
-  } else if (basePlacement === 'top') {
-    popper.left += offsets[0];
-    popper.top -= offsets[1];
-  } else if (basePlacement === 'bottom') {
-    popper.left += offsets[0];
-    popper.top += offsets[1];
-  }
-
-  data.popper = popper;
-  return data;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by `update` method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function preventOverflow(data, options) {
-  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
-
-  // If offsetParent is the reference element, we really want to
-  // go one step up and use the next offsetParent as reference to
-  // avoid to make this modifier completely useless and look like broken
-  if (data.instance.reference === boundariesElement) {
-    boundariesElement = getOffsetParent(boundariesElement);
-  }
-
-  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);
-  options.boundaries = boundaries;
-
-  var order = options.priority;
-  var popper = data.offsets.popper;
-
-  var check = {
-    primary: function primary(placement) {
-      var value = popper[placement];
-      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
-        value = Math.max(popper[placement], boundaries[placement]);
-      }
-      return defineProperty({}, placement, value);
-    },
-    secondary: function secondary(placement) {
-      var mainSide = placement === 'right' ? 'left' : 'top';
-      var value = popper[mainSide];
-      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
-        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
-      }
-      return defineProperty({}, mainSide, value);
-    }
-  };
-
-  order.forEach(function (placement) {
-    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
-    popper = _extends({}, popper, check[side](placement));
-  });
-
-  data.offsets.popper = popper;
-
-  return data;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by `update` method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function shift(data) {
-  var placement = data.placement;
-  var basePlacement = placement.split('-')[0];
-  var shiftvariation = placement.split('-')[1];
-
-  // if shift shiftvariation is specified, run the modifier
-  if (shiftvariation) {
-    var _data$offsets = data.offsets,
-        reference = _data$offsets.reference,
-        popper = _data$offsets.popper;
-
-    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
-    var side = isVertical ? 'left' : 'top';
-    var measurement = isVertical ? 'width' : 'height';
-
-    var shiftOffsets = {
-      start: defineProperty({}, side, reference[side]),
-      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
-    };
-
-    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
-  }
-
-  return data;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by update method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function hide(data) {
-  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
-    return data;
-  }
-
-  var refRect = data.offsets.reference;
-  var bound = find(data.instance.modifiers, function (modifier) {
-    return modifier.name === 'preventOverflow';
-  }).boundaries;
-
-  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
-    // Avoid unnecessary DOM access if visibility hasn't changed
-    if (data.hide === true) {
-      return data;
-    }
-
-    data.hide = true;
-    data.attributes['x-out-of-boundaries'] = '';
-  } else {
-    // Avoid unnecessary DOM access if visibility hasn't changed
-    if (data.hide === false) {
-      return data;
-    }
-
-    data.hide = false;
-    data.attributes['x-out-of-boundaries'] = false;
-  }
-
-  return data;
-}
-
-/**
- * @function
- * @memberof Modifiers
- * @argument {Object} data - The data object generated by `update` method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {Object} The data object, properly modified
- */
-function inner(data) {
-  var placement = data.placement;
-  var basePlacement = placement.split('-')[0];
-  var _data$offsets = data.offsets,
-      popper = _data$offsets.popper,
-      reference = _data$offsets.reference;
-
-  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
-
-  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
-
-  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
-
-  data.placement = getOppositePlacement(placement);
-  data.offsets.popper = getClientRect(popper);
-
-  return data;
-}
-
-/**
- * Modifier function, each modifier can have a function of this type assigned
- * to its `fn` property.<br />
- * These functions will be called on each update, this means that you must
- * make sure they are performant enough to avoid performance bottlenecks.
- *
- * @function ModifierFn
- * @argument {dataObject} data - The data object generated by `update` method
- * @argument {Object} options - Modifiers configuration and options
- * @returns {dataObject} The data object, properly modified
- */
-
-/**
- * Modifiers are plugins used to alter the behavior of your poppers.<br />
- * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
- * needed by the library.
- *
- * Usually you don't want to override the `order`, `fn` and `onLoad` props.
- * All the other properties are configurations that could be tweaked.
- * @namespace modifiers
- */
-var modifiers = {
-  /**
-   * Modifier used to shift the popper on the start or end of its reference
-   * element.<br />
-   * It will read the variation of the `placement` property.<br />
-   * It can be one either `-end` or `-start`.
-   * @memberof modifiers
-   * @inner
-   */
-  shift: {
-    /** @prop {number} order=100 - Index used to define the order of execution */
-    order: 100,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: shift
-  },
-
-  /**
-   * The `offset` modifier can shift your popper on both its axis.
-   *
-   * It accepts the following units:
-   * - `px` or unitless, interpreted as pixels
-   * - `%` or `%r`, percentage relative to the length of the reference element
-   * - `%p`, percentage relative to the length of the popper element
-   * - `vw`, CSS viewport width unit
-   * - `vh`, CSS viewport height unit
-   *
-   * For length is intended the main axis relative to the placement of the popper.<br />
-   * This means that if the placement is `top` or `bottom`, the length will be the
-   * `width`. In case of `left` or `right`, it will be the height.
-   *
-   * You can provide a single value (as `Number` or `String`), or a pair of values
-   * as `String` divided by a comma or one (or more) white spaces.<br />
-   * The latter is a deprecated method because it leads to confusion and will be
-   * removed in v2.<br />
-   * Additionally, it accepts additions and subtractions between different units.
-   * Note that multiplications and divisions aren't supported.
-   *
-   * Valid examples are:
-   * ```
-   * 10
-   * '10%'
-   * '10, 10'
-   * '10%, 10'
-   * '10 + 10%'
-   * '10 - 5vh + 3%'
-   * '-10px + 5vh, 5px - 6%'
-   * ```
-   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
-   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
-   * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)
-   *
-   * @memberof modifiers
-   * @inner
-   */
-  offset: {
-    /** @prop {number} order=200 - Index used to define the order of execution */
-    order: 200,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: offset,
-    /** @prop {Number|String} offset=0
-     * The offset value as described in the modifier description
-     */
-    offset: 0
-  },
-
-  /**
-   * Modifier used to prevent the popper from being positioned outside the boundary.
-   *
-   * An scenario exists where the reference itself is not within the boundaries.<br />
-   * We can say it has "escaped the boundaries" — or just "escaped".<br />
-   * In this case we need to decide whether the popper should either:
-   *
-   * - detach from the reference and remain "trapped" in the boundaries, or
-   * - if it should ignore the boundary and "escape with its reference"
-   *
-   * When `escapeWithReference` is set to`true` and reference is completely
-   * outside its boundaries, the popper will overflow (or completely leave)
-   * the boundaries in order to remain attached to the edge of the reference.
-   *
-   * @memberof modifiers
-   * @inner
-   */
-  preventOverflow: {
-    /** @prop {number} order=300 - Index used to define the order of execution */
-    order: 300,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: preventOverflow,
-    /**
-     * @prop {Array} [priority=['left','right','top','bottom']]
-     * Popper will try to prevent overflow following these priorities by default,
-     * then, it could overflow on the left and on top of the `boundariesElement`
-     */
-    priority: ['left', 'right', 'top', 'bottom'],
-    /**
-     * @prop {number} padding=5
-     * Amount of pixel used to define a minimum distance between the boundaries
-     * and the popper this makes sure the popper has always a little padding
-     * between the edges of its container
-     */
-    padding: 5,
-    /**
-     * @prop {String|HTMLElement} boundariesElement='scrollParent'
-     * Boundaries used by the modifier, can be `scrollParent`, `window`,
-     * `viewport` or any DOM element.
-     */
-    boundariesElement: 'scrollParent'
-  },
-
-  /**
-   * Modifier used to make sure the reference and its popper stay near eachothers
-   * without leaving any gap between the two. Expecially useful when the arrow is
-   * enabled and you want to assure it to point to its reference element.
-   * It cares only about the first axis, you can still have poppers with margin
-   * between the popper and its reference element.
-   * @memberof modifiers
-   * @inner
-   */
-  keepTogether: {
-    /** @prop {number} order=400 - Index used to define the order of execution */
-    order: 400,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: keepTogether
-  },
-
-  /**
-   * This modifier is used to move the `arrowElement` of the popper to make
-   * sure it is positioned between the reference element and its popper element.
-   * It will read the outer size of the `arrowElement` node to detect how many
-   * pixels of conjuction are needed.
-   *
-   * It has no effect if no `arrowElement` is provided.
-   * @memberof modifiers
-   * @inner
-   */
-  arrow: {
-    /** @prop {number} order=500 - Index used to define the order of execution */
-    order: 500,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: arrow,
-    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
-    element: '[x-arrow]'
-  },
-
-  /**
-   * Modifier used to flip the popper's placement when it starts to overlap its
-   * reference element.
-   *
-   * Requires the `preventOverflow` modifier before it in order to work.
-   *
-   * **NOTE:** this modifier will interrupt the current update cycle and will
-   * restart it if it detects the need to flip the placement.
-   * @memberof modifiers
-   * @inner
-   */
-  flip: {
-    /** @prop {number} order=600 - Index used to define the order of execution */
-    order: 600,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: flip,
-    /**
-     * @prop {String|Array} behavior='flip'
-     * The behavior used to change the popper's placement. It can be one of
-     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
-     * placements (with optional variations).
-     */
-    behavior: 'flip',
-    /**
-     * @prop {number} padding=5
-     * The popper will flip if it hits the edges of the `boundariesElement`
-     */
-    padding: 5,
-    /**
-     * @prop {String|HTMLElement} boundariesElement='viewport'
-     * The element which will define the boundaries of the popper position,
-     * the popper will never be placed outside of the defined boundaries
-     * (except if keepTogether is enabled)
-     */
-    boundariesElement: 'viewport'
-  },
-
-  /**
-   * Modifier used to make the popper flow toward the inner of the reference element.
-   * By default, when this modifier is disabled, the popper will be placed outside
-   * the reference element.
-   * @memberof modifiers
-   * @inner
-   */
-  inner: {
-    /** @prop {number} order=700 - Index used to define the order of execution */
-    order: 700,
-    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
-    enabled: false,
-    /** @prop {ModifierFn} */
-    fn: inner
-  },
-
-  /**
-   * Modifier used to hide the popper when its reference element is outside of the
-   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
-   * be used to hide with a CSS selector the popper when its reference is
-   * out of boundaries.
-   *
-   * Requires the `preventOverflow` modifier before it in order to work.
-   * @memberof modifiers
-   * @inner
-   */
-  hide: {
-    /** @prop {number} order=800 - Index used to define the order of execution */
-    order: 800,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: hide
-  },
-
-  /**
-   * Computes the style that will be applied to the popper element to gets
-   * properly positioned.
-   *
-   * Note that this modifier will not touch the DOM, it just prepares the styles
-   * so that `applyStyle` modifier can apply it. This separation is useful
-   * in case you need to replace `applyStyle` with a custom implementation.
-   *
-   * This modifier has `850` as `order` value to maintain backward compatibility
-   * with previous versions of Popper.js. Expect the modifiers ordering method
-   * to change in future major versions of the library.
-   *
-   * @memberof modifiers
-   * @inner
-   */
-  computeStyle: {
-    /** @prop {number} order=850 - Index used to define the order of execution */
-    order: 850,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: computeStyle,
-    /**
-     * @prop {Boolean} gpuAcceleration=true
-     * If true, it uses the CSS 3d transformation to position the popper.
-     * Otherwise, it will use the `top` and `left` properties.
-     */
-    gpuAcceleration: true,
-    /**
-     * @prop {string} [x='bottom']
-     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
-     * Change this if your popper should grow in a direction different from `bottom`
-     */
-    x: 'bottom',
-    /**
-     * @prop {string} [x='left']
-     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
-     * Change this if your popper should grow in a direction different from `right`
-     */
-    y: 'right'
-  },
-
-  /**
-   * Applies the computed styles to the popper element.
-   *
-   * All the DOM manipulations are limited to this modifier. This is useful in case
-   * you want to integrate Popper.js inside a framework or view library and you
-   * want to delegate all the DOM manipulations to it.
-   *
-   * Note that if you disable this modifier, you must make sure the popper element
-   * has its position set to `absolute` before Popper.js can do its work!
-   *
-   * Just disable this modifier and define you own to achieve the desired effect.
-   *
-   * @memberof modifiers
-   * @inner
-   */
-  applyStyle: {
-    /** @prop {number} order=900 - Index used to define the order of execution */
-    order: 900,
-    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
-    enabled: true,
-    /** @prop {ModifierFn} */
-    fn: applyStyle,
-    /** @prop {Function} */
-    onLoad: applyStyleOnLoad,
-    /**
-     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
-     * @prop {Boolean} gpuAcceleration=true
-     * If true, it uses the CSS 3d transformation to position the popper.
-     * Otherwise, it will use the `top` and `left` properties.
-     */
-    gpuAcceleration: undefined
-  }
-};
-
-/**
- * The `dataObject` is an object containing all the informations used by Popper.js
- * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
- * @name dataObject
- * @property {Object} data.instance The Popper.js instance
- * @property {String} data.placement Placement applied to popper
- * @property {String} data.originalPlacement Placement originally defined on init
- * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
- * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.
- * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
- * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)
- * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)
- * @property {Object} data.boundaries Offsets of the popper boundaries
- * @property {Object} data.offsets The measurements of popper, reference and arrow elements.
- * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
- * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
- * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
- */
-
-/**
- * Default options provided to Popper.js constructor.<br />
- * These can be overriden using the `options` argument of Popper.js.<br />
- * To override an option, simply pass as 3rd argument an object with the same
- * structure of this object, example:
- * ```
- * new Popper(ref, pop, {
- *   modifiers: {
- *     preventOverflow: { enabled: false }
- *   }
- * })
- * ```
- * @type {Object}
- * @static
- * @memberof Popper
- */
-var Defaults = {
-  /**
-   * Popper's placement
-   * @prop {Popper.placements} placement='bottom'
-   */
-  placement: 'bottom',
-
-  /**
-   * Whether events (resize, scroll) are initially enabled
-   * @prop {Boolean} eventsEnabled=true
-   */
-  eventsEnabled: true,
-
-  /**
-   * Set to true if you want to automatically remove the popper when
-   * you call the `destroy` method.
-   * @prop {Boolean} removeOnDestroy=false
-   */
-  removeOnDestroy: false,
-
-  /**
-   * Callback called when the popper is created.<br />
-   * By default, is set to no-op.<br />
-   * Access Popper.js instance with `data.instance`.
-   * @prop {onCreate}
-   */
-  onCreate: function onCreate() {},
-
-  /**
-   * Callback called when the popper is updated, this callback is not called
-   * on the initialization/creation of the popper, but only on subsequent
-   * updates.<br />
-   * By default, is set to no-op.<br />
-   * Access Popper.js instance with `data.instance`.
-   * @prop {onUpdate}
-   */
-  onUpdate: function onUpdate() {},
-
-  /**
-   * List of modifiers used to modify the offsets before they are applied to the popper.
-   * They provide most of the functionalities of Popper.js
-   * @prop {modifiers}
-   */
-  modifiers: modifiers
-};
-
-/**
- * @callback onCreate
- * @param {dataObject} data
- */
-
-/**
- * @callback onUpdate
- * @param {dataObject} data
- */
-
-// Utils
-// Methods
-var Popper = function () {
-  /**
-   * Create a new Popper.js instance
-   * @class Popper
-   * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper
-   * @param {HTMLElement} popper - The HTML element used as popper.
-   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
-   * @return {Object} instance - The generated Popper.js instance
-   */
-  function Popper(reference, popper) {
-    var _this = this;
-
-    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-    classCallCheck(this, Popper);
-
-    this.scheduleUpdate = function () {
-      return requestAnimationFrame(_this.update);
-    };
-
-    // make update() debounced, so that it only runs at most once-per-tick
-    this.update = debounce(this.update.bind(this));
-
-    // with {} we create a new object with the options inside it
-    this.options = _extends({}, Popper.Defaults, options);
-
-    // init state
-    this.state = {
-      isDestroyed: false,
-      isCreated: false,
-      scrollParents: []
-    };
-
-    // get reference and popper elements (allow jQuery wrappers)
-    this.reference = reference.jquery ? reference[0] : reference;
-    this.popper = popper.jquery ? popper[0] : popper;
-
-    // Deep merge modifiers options
-    this.options.modifiers = {};
-    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
-      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
-    });
-
-    // Refactoring modifiers' list (Object => Array)
-    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
-      return _extends({
-        name: name
-      }, _this.options.modifiers[name]);
-    })
-    // sort the modifiers by order
-    .sort(function (a, b) {
-      return a.order - b.order;
-    });
-
-    // modifiers have the ability to execute arbitrary code when Popper.js get inited
-    // such code is executed in the same order of its modifier
-    // they could add new properties to their options configuration
-    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
-    this.modifiers.forEach(function (modifierOptions) {
-      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
-        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
-      }
-    });
-
-    // fire the first update to position the popper in the right place
-    this.update();
-
-    var eventsEnabled = this.options.eventsEnabled;
-    if (eventsEnabled) {
-      // setup event listeners, they will take care of update the position in specific situations
-      this.enableEventListeners();
-    }
-
-    this.state.eventsEnabled = eventsEnabled;
-  }
-
-  // We can't use class properties because they don't get listed in the
-  // class prototype and break stuff like Sinon stubs
-
-
-  createClass(Popper, [{
-    key: 'update',
-    value: function update$$1() {
-      return update.call(this);
-    }
-  }, {
-    key: 'destroy',
-    value: function destroy$$1() {
-      return destroy.call(this);
-    }
-  }, {
-    key: 'enableEventListeners',
-    value: function enableEventListeners$$1() {
-      return enableEventListeners.call(this);
-    }
-  }, {
-    key: 'disableEventListeners',
-    value: function disableEventListeners$$1() {
-      return disableEventListeners.call(this);
-    }
-
-    /**
-     * Schedule an update, it will run on the next UI update available
-     * @method scheduleUpdate
-     * @memberof Popper
-     */
-
-
-    /**
-     * Collection of utilities useful when writing custom modifiers.
-     * Starting from version 1.7, this method is available only if you
-     * include `popper-utils.js` before `popper.js`.
-     *
-     * **DEPRECATION**: This way to access PopperUtils is deprecated
-     * and will be removed in v2! Use the PopperUtils module directly instead.
-     * Due to the high instability of the methods contained in Utils, we can't
-     * guarantee them to follow semver. Use them at your own risk!
-     * @static
-     * @private
-     * @type {Object}
-     * @deprecated since version 1.8
-     * @member Utils
-     * @memberof Popper
-     */
-
-  }]);
-  return Popper;
-}();
-
-/**
- * The `referenceObject` is an object that provides an interface compatible with Popper.js
- * and lets you use it as replacement of a real DOM node.<br />
- * You can use this method to position a popper relatively to a set of coordinates
- * in case you don't have a DOM node to use as reference.
- *
- * ```
- * new Popper(referenceObject, popperNode);
- * ```
- *
- * NB: This feature isn't supported in Internet Explorer 10
- * @name referenceObject
- * @property {Function} data.getBoundingClientRect
- * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
- * @property {number} data.clientWidth
- * An ES6 getter that will return the width of the virtual reference element.
- * @property {number} data.clientHeight
- * An ES6 getter that will return the height of the virtual reference element.
- */
-
-
-Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
-Popper.placements = placements;
-Popper.Defaults = Defaults;
-
-return Popper;
-
-})));
-//# sourceMappingURL=popper.js.map
diff --git a/archived/http-root/res/sheet/vendor/jquery/jquery-3.2.1.min.js b/archived/http-root/res/sheet/vendor/jquery/jquery-3.2.1.min.js
deleted file mode 100755
index 644d35e274fd64ddaf6d12af813e820c424176a9..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/jquery/jquery-3.2.1.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
-a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
-null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
diff --git a/archived/http-root/res/sheet/vendor/perfect-scrollbar/perfect-scrollbar.css b/archived/http-root/res/sheet/vendor/perfect-scrollbar/perfect-scrollbar.css
deleted file mode 100755
index 859062c12cb29049aff3ed5494359b31a6155ebc..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/perfect-scrollbar/perfect-scrollbar.css
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Container style
- */
-.ps {
-  overflow: hidden !important;
-  overflow-anchor: none;
-  -ms-overflow-style: none;
-  touch-action: auto;
-  -ms-touch-action: auto;
-}
-
-/*
- * Scrollbar rail styles
- */
-.ps__rail-x {
-  display: none;
-  opacity: 0;
-  transition: background-color .2s linear, opacity .2s linear;
-  -webkit-transition: background-color .2s linear, opacity .2s linear;
-  height: 15px;
-  /* there must be 'bottom' or 'top' for ps__rail-x */
-  bottom: 0px;
-  /* please don't change 'position' */
-  position: absolute;
-}
-
-.ps__rail-y {
-  display: none;
-  opacity: 0;
-  transition: background-color .2s linear, opacity .2s linear;
-  -webkit-transition: background-color .2s linear, opacity .2s linear;
-  width: 15px;
-  /* there must be 'right' or 'left' for ps__rail-y */
-  right: 0;
-  /* please don't change 'position' */
-  position: absolute;
-}
-
-.ps--active-x > .ps__rail-x,
-.ps--active-y > .ps__rail-y {
-  display: block;
-  background-color: transparent;
-}
-
-.ps:hover > .ps__rail-x,
-.ps:hover > .ps__rail-y,
-.ps--focus > .ps__rail-x,
-.ps--focus > .ps__rail-y,
-.ps--scrolling-x > .ps__rail-x,
-.ps--scrolling-y > .ps__rail-y {
-  opacity: 0.6;
-}
-
-.ps__rail-x:hover,
-.ps__rail-y:hover,
-.ps__rail-x:focus,
-.ps__rail-y:focus {
-  background-color: #eee;
-  opacity: 0.9;
-}
-
-/*
- * Scrollbar thumb styles
- */
-.ps__thumb-x {
-  background-color: #aaa;
-  border-radius: 6px;
-  transition: background-color .2s linear, height .2s ease-in-out;
-  -webkit-transition: background-color .2s linear, height .2s ease-in-out;
-  height: 6px;
-  /* there must be 'bottom' for ps__thumb-x */
-  bottom: 2px;
-  /* please don't change 'position' */
-  position: absolute;
-}
-
-.ps__thumb-y {
-  background-color: #aaa;
-  border-radius: 6px;
-  transition: background-color .2s linear, width .2s ease-in-out;
-  -webkit-transition: background-color .2s linear, width .2s ease-in-out;
-  width: 6px;
-  /* there must be 'right' for ps__thumb-y */
-  right: 2px;
-  /* please don't change 'position' */
-  position: absolute;
-}
-
-.ps__rail-x:hover > .ps__thumb-x,
-.ps__rail-x:focus > .ps__thumb-x {
-  background-color: #999;
-  height: 11px;
-}
-
-.ps__rail-y:hover > .ps__thumb-y,
-.ps__rail-y:focus > .ps__thumb-y {
-  background-color: #999;
-  width: 11px;
-}
-
-/* MS supports */
-@supports (-ms-overflow-style: none) {
-  .ps {
-    overflow: auto !important;
-  }
-}
-
-@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
-  .ps {
-    overflow: auto !important;
-  }
-}
diff --git a/archived/http-root/res/sheet/vendor/select2/select2.min.css b/archived/http-root/res/sheet/vendor/select2/select2.min.css
deleted file mode 100755
index 76de04d92330d15b62540db26b0012e3bd7204c9..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/select2/select2.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
diff --git a/archived/http-root/res/sheet/vendor/select2/select2.min.js b/archived/http-root/res/sheet/vendor/select2/select2.min.js
deleted file mode 100755
index 43f0a651e6671ce47ad453a6d9b820366682afed..0000000000000000000000000000000000000000
--- a/archived/http-root/res/sheet/vendor/select2/select2.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");
-if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null;
-},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
\ No newline at end of file
diff --git a/archived/http-root/strftime.js b/archived/http-root/strftime.js
deleted file mode 100644
index a081e2e9dc0c0bd18a5eae359a2b7dd1a724a597..0000000000000000000000000000000000000000
--- a/archived/http-root/strftime.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Port of strftime() by T. H. Doan (https://thdoan.github.io/strftime/)
- *
- * Day of year (%j) code based on Joe Orost's answer:
- * http://stackoverflow.com/questions/8619879/javascript-calculate-the-day-of-the-year-1-366
- *
- * Week number (%V) code based on Taco van den Broek's prototype:
- * http://techblog.procurios.nl/k/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html
- */
-function strftime(sFormat, date) {
-  if (typeof sFormat !== 'string') {
-    return '';
-  }
-
-  if (!(date instanceof Date)) {
-    date = new Date();
-  }
-
-  const nDay = date.getDay();
-  const nDate = date.getDate();
-  const nMonth = date.getMonth();
-  const nYear = date.getFullYear();
-  const nHour = date.getHours();
-  const nTime = date.getTime();
-  const aDays = [
-    'Sunday',
-    'Monday',
-    'Tuesday',
-    'Wednesday',
-    'Thursday',
-    'Friday',
-    'Saturday'
-  ];
-  const aMonths = [
-    'January',
-    'February',
-    'March',
-    'April',
-    'May',
-    'June',
-    'July',
-    'August',
-    'September',
-    'October',
-    'November',
-    'December'
-  ];
-  const aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
-  const isLeapYear = () => (nYear % 4 === 0 && nYear % 100 !== 0) || nYear % 400 === 0;
-  const getThursday = () => {
-    const target = new Date(date);
-    target.setDate(nDate - ((nDay + 6) % 7) + 3);
-    return target;
-  };
-  const zeroPad = (nNum, nPad) => ((Math.pow(10, nPad) + nNum) + '').slice(1);
-
-  return sFormat.replace(/%[a-z]+\b/gi, (sMatch) => {
-    return (({
-      '%a': aDays[nDay].slice(0, 3),
-      '%A': aDays[nDay],
-      '%b': aMonths[nMonth].slice(0, 3),
-      '%B': aMonths[nMonth],
-      '%c': date.toUTCString().replace(',', ''),
-      '%C': Math.floor(nYear / 100),
-      '%d': zeroPad(nDate, 2),
-      '%e': nDate,
-      '%F': (new Date(nTime - (date.getTimezoneOffset() * 60000))).toISOString().slice(0, 10),
-      '%G': getThursday().getFullYear(),
-      '%g': (getThursday().getFullYear() + '').slice(2),
-      '%H': zeroPad(nHour, 2),
-      '%I': zeroPad((nHour + 11) % 12 + 1, 2),
-      '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth > 1 && isLeapYear()) ? 1 : 0), 3),
-      '%k': nHour,
-      '%l': (nHour + 11) % 12 + 1,
-      '%m': zeroPad(nMonth + 1, 2),
-      '%n': nMonth + 1,
-      '%M': zeroPad(date.getMinutes(), 2),
-      '%p': (nHour < 12) ? 'AM' : 'PM',
-      '%P': (nHour < 12) ? 'am' : 'pm',
-      '%s': Math.round(nTime / 1000),
-      '%S': zeroPad(date.getSeconds(), 2),
-      '%u': nDay || 7,
-      '%V': (() => {
-        const target = getThursday();
-        const n1stThu = target.valueOf();
-        target.setMonth(0, 1);
-        const nJan1 = target.getDay();
-
-        if (nJan1 !== 4) {
-          target.setMonth(0, 1 + ((4 - nJan1) + 7) % 7);
-        }
-
-        return zeroPad(1 + Math.ceil((n1stThu - target) / 604800000), 2);
-      })(),
-      '%w': nDay,
-      '%x': date.toLocaleDateString(),
-      '%X': date.toLocaleTimeString(),
-      '%y': (nYear + '').slice(2),
-      '%Y': nYear,
-      '%z': date.toTimeString().replace(/.+GMT([+-]\d+).+/, '$1'),
-      '%Z': date.toTimeString().replace(/.+\((.+?)\)$/, '$1'),
-      '%Zs': new Intl.DateTimeFormat('default', {
-        timeZoneName: 'short',
-      }).formatToParts(date).find((oPart) => oPart.type === 'timeZoneName')?.value,
-    }[sMatch] || '') + '') || sMatch;
-  });
-}
diff --git a/archived/http-root/template.js b/archived/http-root/template.js
deleted file mode 100644
index dab0ded4d88f93990ade106f26c7840b71278f47..0000000000000000000000000000000000000000
--- a/archived/http-root/template.js
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-// let bp_url = 'https://dataexplorer.azure.com/clusters/azcore.centralus/databases/OvlProd?query=';
-// let backplane_template = ''+
-//                 'let _ContainerId = "";\n'+
-//                 'let _NodeId = "PLACEHOLDER_NODEID";\n'+
-//                 'let _startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-//                 'let _endTime = datetime(PLACEHOLDER_ENDTIME);\n'+
-//                 'let impactedContainerId = tolower(["_ContainerId"]);\n'+
-//                 'let impactStartTime =["_startTime"];\n'+
-//                 'let impactEndTime = ["_endTime"];\n'+
-//                 'let latestNodeId = materialize(cluster("azurehn.kusto.windows.net").database("Azurehn").f_getNodeIdFromContainerId(impactedContainerId, impactStartTime - 6h, impactEndTime + 2h) | project NodeId);\n'+
-//                 'let impactedNodeId = tolower(iff(isnotempty(["_NodeId"]), ["_NodeId"], toscalar(latestNodeId)));\n'+
-//                 'let socID = toscalar(cluster("azuredcm.kusto.windows.net").database("AzureDCMDb").GetSocOrNodeFromResourceId(impactedNodeId));\n'+
-//                 'cluster("azcore.centralus.kusto.windows.net").database("OvlProd").LinuxOverlakeSystemd()\n'+
-//                 '| where NodeId =~ socID\n'+
-//                 '| where PreciseTimeStamp between (impactStartTime .. impactEndTime)\n'+
-//                 '| where _SYSTEMD_UNIT == "backplane.service"\n'+
-//                 '| project PreciseTimeStamp, Severity=case(PRIORITY == 2, "Crit", PRIORITY == 3, "Error", PRIORITY == 4, "Warn", PRIORITY == 5, "Notice", PRIORITY == 6, "Info", PRIORITY == 7, "Debug", "Undef"),\n'+
-//                 '          MESSAGE, _PID, _SYSTEMD_UNIT\n';
-
-
-// let sma_url = 'https://dataexplorer.azure.com/clusters/azcore.centralus/databases/OvlProd?query=';
-//        let sma_template = ''+
-//                'let _ContainerId = "";\n'+
-//                'let _NodeId = "PLACEHOLDER_NODEID";\n'+
-//                'let _startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-//                'let _endTime = datetime(PLACEHOLDER_ENDTIME);\n'+
-//                'let impactedContainerId = tolower(["_ContainerId"]);\n'+
-//                'let impactStartTime =["_startTime"];\n'+
-//                'let impactEndTime = ["_endTime"];\n'+
-//                'let latestNodeId = materialize(cluster("azurehn.kusto.windows.net").database("Azurehn").f_getNodeIdFromContainerId(impactedContainerId, impactStartTime - 6h, impactEndTime + 2h) | project NodeId);\n'+
-//                'let impactedNodeId = tolower(iff(isnotempty(["_NodeId"]), ["_NodeId"], toscalar(latestNodeId)));\n'+
-//                'let socID = toscalar(cluster("azuredcm.kusto.windows.net").database("AzureDCMDb").GetSocOrNodeFromResourceId(impactedNodeId));\n'+
-//                'cluster("azcore.centralus.kusto.windows.net").database("OvlProd").LinuxOverlakeSystemd()\n'+
-//                '| where NodeId =~ socID\n'+
-//                '| where PreciseTimeStamp between (impactStartTime .. impactEndTime)\n'+
-//                '| where _SYSTEMD_UNIT startswith_cs "smagent"\n'+
-//                '| project PreciseTimeStamp, Severity=case(PRIORITY == 2, "Crit", PRIORITY == 3, "Error", PRIORITY == 4, "Warn", PRIORITY == 5, "Notice", PRIORITY == 6, "Info", PRIORITY == 7, "Debug", "Undef"),\n'+
-//                '          MESSAGE, _PID, _SYSTEMD_UNIT\n';
-
-let bp_url = 'https://dataexplorer.azure.com/clusters/overlakedata.southcentralus/databases/overlake-syslog?query=';
-let bp_template = ''+
-'let startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-'let endTime   = datetime(PLACEHOLDER_ENDTIME);\n'+
-'let socID = toscalar(cluster("azuredcm.kusto.windows.net").database("AzureDCMDb").GetSocOrNodeFromResourceId("PLACEHOLDER_NODEID"));\n'+
-'LinuxOverlakeSystemdView\n'+
-'| where NodeId =~ socID\n'+
-'and (_SYSTEMD_UNIT == "backplane.service" or _SYSTEMD_UNIT contains "systemd")\n'+
-'| where TIMESTAMP between (startTime .. endTime)\n'+
-'| project PreciseTimeStamp, _SYSTEMD_UNIT, _PID, MESSAGE, _HOSTNAME\n'+
-'//| summarize min(PreciseTimeStamp) by _PID\n'+
-	'';
-let bp_template_name = ''+
-'let startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-'let endTime   = datetime(PLACEHOLDER_ENDTIME);\n'+
-'LinuxOverlakeSystemdView\n'+
-'| where _HOSTNAME contains "PLACEHOLDER_NODEID"\n'+
-'and (_SYSTEMD_UNIT == "backplane.service" or _SYSTEMD_UNIT contains "systemd")\n'+
-'| where TIMESTAMP between (startTime .. endTime)\n'+
-'| project PreciseTimeStamp, _SYSTEMD_UNIT, _PID, MESSAGE, _HOSTNAME\n'+
-'//| summarize min(PreciseTimeStamp) by _PID\n'+
-	'';
-
-
-let sma_url = 'https://dataexplorer.azure.com/clusters/overlakedata.southcentralus/databases/overlake-syslog?query=';
-let sma_template = ''+
-'let startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-'let endTime   = datetime(PLACEHOLDER_ENDTIME);\n'+
-'let socID = toscalar(cluster("azuredcm.kusto.windows.net").database("AzureDCMDb").GetSocOrNodeFromResourceId("PLACEHOLDER_NODEID"));\n'+
-'LinuxOverlakeSystemdView\n'+
-'| where NodeId =~ socID\n'+
-'and (_SYSTEMD_UNIT contains "smagent" or _SYSTEMD_UNIT contains "systemd")\n'+
-'| where TIMESTAMP between (startTime .. endTime)\n'+
-'| project PreciseTimeStamp, _SYSTEMD_UNIT, _PID, MESSAGE, _HOSTNAME\n'+
-'//| summarize min(PreciseTimeStamp) by _PID\n'+
-	'';
-let sma_template_name = ''+
-'let startTime = datetime(PLACEHOLDER_STARTTIME);\n'+
-'let endTime   = datetime(PLACEHOLDER_ENDTIME);\n'+
-'LinuxOverlakeSystemdView\n'+
-'| where _HOSTNAME contains "PLACEHOLDER_NODEID"\n'+
-'and (_SYSTEMD_UNIT == "smagent.service" or _SYSTEMD_UNIT contains "systemd")\n'+
-'| where TIMESTAMP between (startTime .. endTime)\n'+
-'| project PreciseTimeStamp, _SYSTEMD_UNIT, _PID, MESSAGE, _HOSTNAME\n'+
-'//| summarize min(PreciseTimeStamp) by _PID\n'+
-	'';
-
-
-
-
-
-
-
-
diff --git a/archived/requirements.log b/archived/requirements.log
deleted file mode 100644
index 1e7625904c7ad239dd625f520f9142257f541428..0000000000000000000000000000000000000000
--- a/archived/requirements.log
+++ /dev/null
@@ -1,23 +0,0 @@
-需求:
-我有一个简单的脚本,可以给定 cpu cores+RAM size+disk size+port forward, 从ubuntu的cloudimg创建一个VM出来。
-
-我需要一个稳定的软件,它可以自动帮我管理正在运行的VM. 它需要能够:
-1. 有一个容易使用的命令行工具. 运行它之后就可以一键创建VM,删除vm.
-
-参考用法(具体语法按照你的喜好来):
-vm create #然后interactive的方式询问名字,CPU核心数,RAM,disk。然后自动帮忙选择一个空闲的端口 forward 22,自动用默认用户名密码。
-vm create MY_VM1 cpu=2 ram=1G disk=40G port=30222:22 port=80 port=443 username=recolic password=fuck #就是non-interactive mode. 如果port/username/password不设置,就默认转发22端口,默认用户名密码。如果没有说要转发到哪一个端口,就自动选一个
-vm info #显示所有的VM信息,例如名字,cpu,ram size,disk size,forwarded ports
-vm delete MY_VM1
-
-(可选)如果再支持一个vm copy MY_VM1 new_vm就更好了!注意端口要自动改一下
-
-2. 会以daemon process的形式,或crontab的形式,在后台经常检查。发现有VM关机了(或崩溃了),就自动帮我重启。
-3. 最好是用脚本语言(因为方便我修改逻辑),编译型语言也可以。拒绝python,因为它在系统升级后往往会dependency炸掉。拒绝java/csharp这类需要runtime的语言。偏好bash或fish或perl
-4. 留出一个类似配置文件的东西(可以在代码里面),方便我偶尔修改port range,修改默认的用户名密码, 修改cloudimg镜像。自动选择空闲端口的时候就假设这个port range没有别人在用,不用特意检查。
-5. 最好是程序+所有的VM+数据文件+下载好的cloudimage镜像都放在同一个目录里 (例如/var/myvps/里面有programs, disks, metadata, images, logs几个子目录), 并且整个大文件夹移动到其他位置也能正常工作(也就是不准hardcode)。我有bash和fish的代码告诉你怎样获取自己被执行时所在的目录。
-
-部署方式:
-把整个程序目录放在任何一个地方,提供一个命令/脚本/程序,例如/.../programs/on_start.sh。我通过我喜欢的方式保证开机时这个程序被执行到一次(如果你喜欢,也可以要求被用crontab的形式执行。我作为用户都可以)
-然后它会启动一个后台的process,自动帮我开机所有的VM,并且发现有VM关机了就自动重启,发现需要cloudimage就从预定的url下载,发现VM被删除了就把东西都删掉,etc。
-