PageSourceSearch

https://health-connectivity-lounge.lovable.app/assets/html2canvas.esm-j4r7SAt4.js

js health-connectivity-lounge.lovable.app collected 2026-10-03 03:28:25 UTC 350,244 bytes, 7,796 lines download raw bytes

1/*!
2 * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
3 * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
4 * Released under MIT License
5 */
6/*! *****************************************************************************
7Copyright (c) Microsoft Corporation.
8
9Permission to use, copy, modify, and/or distribute this software for any
10purpose with or without fee is hereby granted.
11
12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
13REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
14AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
15INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
17OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18PERFORMANCE OF THIS SOFTWARE.
19***************************************************************************** */
20var extendStatics = function(d, b) {
21  extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
22    d2.__proto__ = b2;
23  } || function(d2, b2) {
24    for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
25  };
26  return extendStatics(d, b);
27};
28function __extends(d, b) {
29  if (typeof b !== "function" && b !== null)
30    throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
31  extendStatics(d, b);
32  function __() {
33    this.constructor = d;
34  }
35  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36}
37var __assign = function() {
38  __assign = Object.assign || function __assign2(t) {
39    for (var s, i = 1, n = arguments.length; i < n; i++) {
40      s = arguments[i];
41      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
42    }
43    return t;
44  };
45  return __assign.apply(this, arguments);
46};
47function __awaiter(thisArg, _arguments, P, generator) {
48  function adopt(value) {
49    return value instanceof P ? value : new P(function(resolve) {
50      resolve(value);
51    });
52  }
53  return new (P || (P = Promise))(function(resolve, reject) {
54    function fulfilled(value) {
55      try {
56        step(generator.next(value));
57      } catch (e2) {
58        reject(e2);
59      }
60    }
61    function rejected(value) {
62      try {
63        step(generator["throw"](value));
64      } catch (e2) {
65        reject(e2);
66      }
67    }
68    function step(result) {
69      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
70    }
71    step((generator = generator.apply(thisArg, [])).next());
72  });
73}
74function __generator(thisArg, body) {
75  var _ = { label: 0, sent: function() {
76    if (t[0] & 1) throw t[1];
77    return t[1];
78  }, trys: [], ops: [] }, f2, y, t, g;
79  return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
80    return this;
81  }), g;
82  function verb(n) {
83    return function(v) {
84      return step([n, v]);
85    };
86  }
87  function step(op) {
88    if (f2) throw new TypeError("Generator is already executing.");
89    while (_) try {
90      if (f2 = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
91      if (y = 0, t) op = [op[0] & 2, t.value];
92      switch (op[0]) {
93        case 0:
94        case 1:
95          t = op;
96          break;
97        case 4:
98          _.label++;
99          return { value: op[1], done: false };
100        case 5:
101          _.label++;
102          y = op[1];
103          op = [0];
104          continue;
105        case 7:
106          op = _.ops.pop();
107          _.trys.pop();
108          continue;
109        default:
110          if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
111            _ = 0;
112            continue;
113          }
114          if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
115            _.label = op[1];
116            break;
117          }
118          if (op[0] === 6 && _.label < t[1]) {
119            _.label = t[1];
120            t = op;
121            break;
122          }
123          if (t && _.label < t[2]) {
124            _.label = t[2];
vendor: 4,196 bytes, lines 125-247
125            _.ops.push(op);
126            break;
127          }
128          if (t[2]) _.ops.pop();
129          _.trys.pop();
130          continue;
131      }
132      op = body.call(thisArg, _);
133    } catch (e2) {
134      op = [6, e2];
135      y = 0;
136    } finally {
137      f2 = t = 0;
138    }
139    if (op[0] & 5) throw op[1];
140    return { value: op[0] ? op[1] : void 0, done: true };
141  }
142}
143function __spreadArray(to, from, pack2) {
144  if (arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
145    if (ar || !(i in from)) {
146      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
147      ar[i] = from[i];
148    }
149  }
150  return to.concat(ar || from);
151}
152var Bounds = (
153  /** @class */
154  function() {
155    function Bounds2(left, top, width, height) {
156      this.left = left;
157      this.top = top;
158      this.width = width;
159      this.height = height;
160    }
161    Bounds2.prototype.add = function(x, y, w, h) {
162      return new Bounds2(this.left + x, this.top + y, this.width + w, this.height + h);
163    };
164    Bounds2.fromClientRect = function(context, clientRect) {
165      return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
166    };
167    Bounds2.fromDOMRectList = function(context, domRectList) {
168      var domRect = Array.from(domRectList).find(function(rect) {
169        return rect.width !== 0;
170      });
171      return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY;
172    };
173    Bounds2.EMPTY = new Bounds2(0, 0, 0, 0);
174    return Bounds2;
175  }()
176);
177var parseBounds = function(context, node) {
178  return Bounds.fromClientRect(context, node.getBoundingClientRect());
179};
180var parseDocumentSize = function(document2) {
181  var body = document2.body;
182  var documentElement = document2.documentElement;
183  if (!body || !documentElement) {
184    throw new Error("Unable to get document size");
185  }
186  var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
187  var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
188  return new Bounds(0, 0, width, height);
189};
190var toCodePoints$1 = function(str) {
191  var codePoints = [];
192  var i = 0;
193  var length = str.length;
194  while (i < length) {
195    var value = str.charCodeAt(i++);
196    if (value >= 55296 && value <= 56319 && i < length) {
197      var extra = str.charCodeAt(i++);
198      if ((extra & 64512) === 56320) {
199        codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
200      } else {
201        codePoints.push(value);
202        i--;
203      }
204    } else {
205      codePoints.push(value);
206    }
207  }
208  return codePoints;
209};
210var fromCodePoint$1 = function() {
211  var codePoints = [];
212  for (var _i = 0; _i < arguments.length; _i++) {
213    codePoints[_i] = arguments[_i];
214  }
215  if (String.fromCodePoint) {
216    return String.fromCodePoint.apply(String, codePoints);
217  }
218  var length = codePoints.length;
219  if (!length) {
220    return "";
221  }
222  var codeUnits = [];
223  var index = -1;
224  var result = "";
225  while (++index < length) {
226    var codePoint = codePoints[index];
227    if (codePoint <= 65535) {
228      codeUnits.push(codePoint);
229    } else {
230      codePoint -= 65536;
231      codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
232    }
233    if (index + 1 === length || codeUnits.length > 16384) {
234      result += String.fromCharCode.apply(String, codeUnits);
235      codeUnits.length = 0;
236    }
237  }
238  return result;
239};
240var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
241var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
242for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
243  lookup$2[chars$2.charCodeAt(i$2)] = i$2;
244}
245var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
246var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
247for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
vendor: 5,117 bytes, lines 248-369
248  lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
249}
250var decode$1 = function(base642) {
251  var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
252  if (base642[base642.length - 1] === "=") {
253    bufferLength--;
254    if (base642[base642.length - 2] === "=") {
255      bufferLength--;
256    }
257  }
258  var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
259  var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
260  for (i = 0; i < len; i += 4) {
261    encoded1 = lookup$1$1[base642.charCodeAt(i)];
262    encoded2 = lookup$1$1[base642.charCodeAt(i + 1)];
263    encoded3 = lookup$1$1[base642.charCodeAt(i + 2)];
264    encoded4 = lookup$1$1[base642.charCodeAt(i + 3)];
265    bytes[p++] = encoded1 << 2 | encoded2 >> 4;
266    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
267    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
268  }
269  return buffer;
270};
271var polyUint16Array$1 = function(buffer) {
272  var length = buffer.length;
273  var bytes = [];
274  for (var i = 0; i < length; i += 2) {
275    bytes.push(buffer[i + 1] << 8 | buffer[i]);
276  }
277  return bytes;
278};
279var polyUint32Array$1 = function(buffer) {
280  var length = buffer.length;
281  var bytes = [];
282  for (var i = 0; i < length; i += 4) {
283    bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
284  }
285  return bytes;
286};
287var UTRIE2_SHIFT_2$1 = 5;
288var UTRIE2_SHIFT_1$1 = 6 + 5;
289var UTRIE2_INDEX_SHIFT$1 = 2;
290var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
291var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1;
292var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
293var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
294var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1;
295var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
296var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
297var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6;
298var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
299var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1;
300var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
301var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
302var slice16$1 = function(view, start, end) {
303  if (view.slice) {
304    return view.slice(start, end);
305  }
306  return new Uint16Array(Array.prototype.slice.call(view, start, end));
307};
308var slice32$1 = function(view, start, end) {
309  if (view.slice) {
310    return view.slice(start, end);
311  }
312  return new Uint32Array(Array.prototype.slice.call(view, start, end));
313};
314var createTrieFromBase64$1 = function(base642, _byteLength) {
315  var buffer = decode$1(base642);
316  var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
317  var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
318  var headerLength = 24;
319  var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
320  var data = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
321  return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);
322};
323var Trie$1 = (
324  /** @class */
325  function() {
326    function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
327      this.initialValue = initialValue;
328      this.errorValue = errorValue;
329      this.highStart = highStart;
330      this.highValueIndex = highValueIndex;
331      this.index = index;
332      this.data = data;
333    }
334    Trie2.prototype.get = function(codePoint) {
335      var ix;
336      if (codePoint >= 0) {
337        if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
338          ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
339          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
340          return this.data[ix];
341        }
342        if (codePoint <= 65535) {
343          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)];
344          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
345          return this.data[ix];
346        }
347        if (codePoint < this.highStart) {
348          ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
349          ix = this.index[ix];
350          ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;
351          ix = this.index[ix];
352          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
353          return this.data[ix];
354        }
355        if (codePoint <= 1114111) {
356          return this.data[this.highValueIndex];
357        }
358      }
359      return this.errorValue;
360    };
361    return Trie2;
362  }()
363);
364var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
365var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
366for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
367  lookup$3[chars$3.charCodeAt(i$3)] = i$3;
368}
369var base64$1
vendor: 51,801 bytes, line 369
369 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlA
vendor: 10,875 bytes, lines 369-706
369CUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==";
370var LETTER_NUMBER_MODIFIER = 50;
371var BK = 1;
372var CR$1 = 2;
373var LF$1 = 3;
374var CM = 4;
375var NL = 5;
376var WJ = 7;
377var ZW = 8;
378var GL = 9;
379var SP = 10;
380var ZWJ$1 = 11;
381var B2 = 12;
382var BA = 13;
383var BB = 14;
384var HY = 15;
385var CB = 16;
386var CL = 17;
387var CP = 18;
388var EX = 19;
389var IN = 20;
390var NS = 21;
391var OP = 22;
392var QU = 23;
393var IS = 24;
394var NU = 25;
395var PO = 26;
396var PR = 27;
397var SY = 28;
398var AI = 29;
399var AL = 30;
400var CJ = 31;
401var EB = 32;
402var EM = 33;
403var H2 = 34;
404var H3 = 35;
405var HL = 36;
406var ID = 37;
407var JL = 38;
408var JV = 39;
409var JT = 40;
410var RI$1 = 41;
411var SA = 42;
412var XX = 43;
413var ea_OP = [9001, 65288];
414var BREAK_MANDATORY = "!";
415var BREAK_NOT_ALLOWED$1 = "×";
416var BREAK_ALLOWED$1 = "÷";
417var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
418var ALPHABETICS = [AL, HL];
419var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
420var SPACE$1 = [SP, ZW];
421var PREFIX_POSTFIX = [PR, PO];
422var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
423var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
424var HYPHEN = [HY, BA];
425var codePointsToCharacterClasses = function(codePoints, lineBreak2) {
426  if (lineBreak2 === void 0) {
427    lineBreak2 = "strict";
428  }
429  var types = [];
430  var indices = [];
431  var categories = [];
432  codePoints.forEach(function(codePoint, index) {
433    var classType = UnicodeTrie$1.get(codePoint);
434    if (classType > LETTER_NUMBER_MODIFIER) {
435      categories.push(true);
436      classType -= LETTER_NUMBER_MODIFIER;
437    } else {
438      categories.push(false);
439    }
440    if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) {
441      if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
442        indices.push(index);
443        return types.push(CB);
444      }
445    }
446    if (classType === CM || classType === ZWJ$1) {
447      if (index === 0) {
448        indices.push(index);
449        return types.push(AL);
450      }
451      var prev = types[index - 1];
452      if (LINE_BREAKS.indexOf(prev) === -1) {
453        indices.push(indices[index - 1]);
454        return types.push(prev);
455      }
456      indices.push(index);
457      return types.push(AL);
458    }
459    indices.push(index);
460    if (classType === CJ) {
461      return types.push(lineBreak2 === "strict" ? NS : ID);
462    }
463    if (classType === SA) {
464      return types.push(AL);
465    }
466    if (classType === AI) {
467      return types.push(AL);
468    }
469    if (classType === XX) {
470      if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) {
471        return types.push(ID);
472      } else {
473        return types.push(AL);
474      }
475    }
476    types.push(classType);
477  });
478  return [indices, types, categories];
479};
480var isAdjacentWithSpaceIgnored = function(a2, b, currentIndex, classTypes) {
481  var current = classTypes[currentIndex];
482  if (Array.isArray(a2) ? a2.indexOf(current) !== -1 : a2 === current) {
483    var i = currentIndex;
484    while (i <= classTypes.length) {
485      i++;
486      var next = classTypes[i];
487      if (next === b) {
488        return true;
489      }
490      if (next !== SP) {
491        break;
492      }
493    }
494  }
495  if (current === SP) {
496    var i = currentIndex;
497    while (i > 0) {
498      i--;
499      var prev = classTypes[i];
500      if (Array.isArray(a2) ? a2.indexOf(prev) !== -1 : a2 === prev) {
501        var n = currentIndex;
502        while (n <= classTypes.length) {
503          n++;
504          var next = classTypes[n];
505          if (next === b) {
506            return true;
507          }
508          if (next !== SP) {
509            break;
510          }
511        }
512      }
513      if (prev !== SP) {
514        break;
515      }
516    }
517  }
518  return false;
519};
520var previousNonSpaceClassType = function(currentIndex, classTypes) {
521  var i = currentIndex;
522  while (i >= 0) {
523    var type = classTypes[i];
524    if (type === SP) {
525      i--;
526    } else {
527      return type;
528    }
529  }
530  return 0;
531};
532var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) {
533  if (indicies[index] === 0) {
534    return BREAK_NOT_ALLOWED$1;
535  }
536  var currentIndex = index - 1;
537  if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
538    return BREAK_NOT_ALLOWED$1;
539  }
540  var beforeIndex = currentIndex - 1;
541  var afterIndex = currentIndex + 1;
542  var current = classTypes[currentIndex];
543  var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
544  var next = classTypes[afterIndex];
545  if (current === CR$1 && next === LF$1) {
546    return BREAK_NOT_ALLOWED$1;
547  }
548  if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
549    return BREAK_MANDATORY;
550  }
551  if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
552    return BREAK_NOT_ALLOWED$1;
553  }
554  if (SPACE$1.indexOf(next) !== -1) {
555    return BREAK_NOT_ALLOWED$1;
556  }
557  if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
558    return BREAK_ALLOWED$1;
559  }
560  if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
561    return BREAK_NOT_ALLOWED$1;
562  }
563  if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
564    return BREAK_NOT_ALLOWED$1;
565  }
566  if (current === WJ || next === WJ) {
567    return BREAK_NOT_ALLOWED$1;
568  }
569  if (current === GL) {
570    return BREAK_NOT_ALLOWED$1;
571  }
572  if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
573    return BREAK_NOT_ALLOWED$1;
574  }
575  if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
576    return BREAK_NOT_ALLOWED$1;
577  }
578  if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
579    return BREAK_NOT_ALLOWED$1;
580  }
581  if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
582    return BREAK_NOT_ALLOWED$1;
583  }
584  if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
585    return BREAK_NOT_ALLOWED$1;
586  }
587  if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
588    return BREAK_NOT_ALLOWED$1;
589  }
590  if (current === SP) {
591    return BREAK_ALLOWED$1;
592  }
593  if (current === QU || next === QU) {
594    return BREAK_NOT_ALLOWED$1;
595  }
596  if (next === CB || current === CB) {
597    return BREAK_ALLOWED$1;
598  }
599  if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
600    return BREAK_NOT_ALLOWED$1;
601  }
602  if (before === HL && HYPHEN.indexOf(current) !== -1) {
603    return BREAK_NOT_ALLOWED$1;
604  }
605  if (current === SY && next === HL) {
606    return BREAK_NOT_ALLOWED$1;
607  }
608  if (next === IN) {
609    return BREAK_NOT_ALLOWED$1;
610  }
611  if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
612    return BREAK_NOT_ALLOWED$1;
613  }
614  if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
615    return BREAK_NOT_ALLOWED$1;
616  }
617  if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
618    return BREAK_NOT_ALLOWED$1;
619  }
620  if (
621    // (PR | PO) × ( OP | HY )? NU
622    [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU
623    [OP, HY].indexOf(current) !== -1 && next === NU || // NU ×	(NU | SY | IS)
624    current === NU && [NU, SY, IS].indexOf(next) !== -1
625  ) {
626    return BREAK_NOT_ALLOWED$1;
627  }
628  if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
629    var prevIndex = currentIndex;
630    while (prevIndex >= 0) {
631      var type = classTypes[prevIndex];
632      if (type === NU) {
633        return BREAK_NOT_ALLOWED$1;
634      } else if ([SY, IS].indexOf(type) !== -1) {
635        prevIndex--;
636      } else {
637        break;
638      }
639    }
640  }
641  if ([PR, PO].indexOf(next) !== -1) {
642    var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
643    while (prevIndex >= 0) {
644      var type = classTypes[prevIndex];
645      if (type === NU) {
646        return BREAK_NOT_ALLOWED$1;
647      } else if ([SY, IS].indexOf(type) !== -1) {
648        prevIndex--;
649      } else {
650        break;
651      }
652    }
653  }
654  if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
655    return BREAK_NOT_ALLOWED$1;
656  }
657  if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
658    return BREAK_NOT_ALLOWED$1;
659  }
660  if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
661    return BREAK_NOT_ALLOWED$1;
662  }
663  if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
664    return BREAK_NOT_ALLOWED$1;
665  }
666  if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
667    return BREAK_NOT_ALLOWED$1;
668  }
669  if (current === RI$1 && next === RI$1) {
670    var i = indicies[currentIndex];
671    var count = 1;
672    while (i > 0) {
673      i--;
674      if (classTypes[i] === RI$1) {
675        count++;
676      } else {
677        break;
678      }
679    }
680    if (count % 2 !== 0) {
681      return BREAK_NOT_ALLOWED$1;
682    }
683  }
684  if (current === EB && next === EM) {
685    return BREAK_NOT_ALLOWED$1;
686  }
687  return BREAK_ALLOWED$1;
688};
689var cssFormattedClasses = function(codePoints, options) {
690  if (!options) {
691    options = { lineBreak: "normal", wordBreak: "normal" };
692  }
693  var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
694  if (options.wordBreak === "break-all" || options.wordBreak === "break-word") {
695    classTypes = classTypes.map(function(type) {
696      return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
697    });
698  }
699  var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i) {
700    return letterNumber && codePoints[i] >= 19968 && codePoints[i] <= 40959;
701  }) : void 0;
702  return [indicies, classTypes, forbiddenBreakpoints];
703};
704var Break = (
705  /** @class */
706  
706function() {
707    function Break2(codePoints, lineBreak2, start, end) {
708      this.codePoints = codePoints;
709      this.required = lineBreak2 === BREAK_MANDATORY;
710      this.start = start;
711      this.end = end;
712    }
713    Break2.prototype.slice = function() {
714      return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
715    };
716    return Break2;
717  }
vendor: 22,123 bytes, lines 717-1413
717()
718);
719var LineBreaker = function(str, options) {
720  var codePoints = toCodePoints$1(str);
721  var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
722  var length = codePoints.length;
723  var lastEnd = 0;
724  var nextIndex = 0;
725  return {
726    next: function() {
727      if (nextIndex >= length) {
728        return { done: true, value: null };
729      }
730      var lineBreak2 = BREAK_NOT_ALLOWED$1;
731      while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {
732      }
733      if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
734        var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex);
735        lastEnd = nextIndex;
736        return { value, done: false };
737      }
738      return { done: true, value: null };
739    }
740  };
741};
742var FLAG_UNRESTRICTED = 1 << 0;
743var FLAG_ID = 1 << 1;
744var FLAG_INTEGER = 1 << 2;
745var FLAG_NUMBER = 1 << 3;
746var LINE_FEED = 10;
747var SOLIDUS = 47;
748var REVERSE_SOLIDUS = 92;
749var CHARACTER_TABULATION = 9;
750var SPACE = 32;
751var QUOTATION_MARK = 34;
752var EQUALS_SIGN = 61;
753var NUMBER_SIGN = 35;
754var DOLLAR_SIGN = 36;
755var PERCENTAGE_SIGN = 37;
756var APOSTROPHE = 39;
757var LEFT_PARENTHESIS = 40;
758var RIGHT_PARENTHESIS = 41;
759var LOW_LINE = 95;
760var HYPHEN_MINUS = 45;
761var EXCLAMATION_MARK = 33;
762var LESS_THAN_SIGN = 60;
763var GREATER_THAN_SIGN = 62;
764var COMMERCIAL_AT = 64;
765var LEFT_SQUARE_BRACKET = 91;
766var RIGHT_SQUARE_BRACKET = 93;
767var CIRCUMFLEX_ACCENT = 61;
768var LEFT_CURLY_BRACKET = 123;
769var QUESTION_MARK = 63;
770var RIGHT_CURLY_BRACKET = 125;
771var VERTICAL_LINE = 124;
772var TILDE = 126;
773var CONTROL = 128;
774var REPLACEMENT_CHARACTER = 65533;
775var ASTERISK = 42;
776var PLUS_SIGN = 43;
777var COMMA = 44;
778var COLON = 58;
779var SEMICOLON = 59;
780var FULL_STOP = 46;
781var NULL = 0;
782var BACKSPACE = 8;
783var LINE_TABULATION = 11;
784var SHIFT_OUT = 14;
785var INFORMATION_SEPARATOR_ONE = 31;
786var DELETE = 127;
787var EOF = -1;
788var ZERO = 48;
789var a = 97;
790var e = 101;
791var f = 102;
792var u = 117;
793var z = 122;
794var A = 65;
795var E = 69;
796var F = 70;
797var U = 85;
798var Z = 90;
799var isDigit = function(codePoint) {
800  return codePoint >= ZERO && codePoint <= 57;
801};
802var isSurrogateCodePoint = function(codePoint) {
803  return codePoint >= 55296 && codePoint <= 57343;
804};
805var isHex = function(codePoint) {
806  return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;
807};
808var isLowerCaseLetter = function(codePoint) {
809  return codePoint >= a && codePoint <= z;
810};
811var isUpperCaseLetter = function(codePoint) {
812  return codePoint >= A && codePoint <= Z;
813};
814var isLetter = function(codePoint) {
815  return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
816};
817var isNonASCIICodePoint = function(codePoint) {
818  return codePoint >= CONTROL;
819};
820var isWhiteSpace = function(codePoint) {
821  return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
822};
823var isNameStartCodePoint = function(codePoint) {
824  return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
825};
826var isNameCodePoint = function(codePoint) {
827  return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
828};
829var isNonPrintableCodePoint = function(codePoint) {
830  return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;
831};
832var isValidEscape = function(c1, c2) {
833  if (c1 !== REVERSE_SOLIDUS) {
834    return false;
835  }
836  return c2 !== LINE_FEED;
837};
838var isIdentifierStart = function(c1, c2, c3) {
839  if (c1 === HYPHEN_MINUS) {
840    return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
841  } else if (isNameStartCodePoint(c1)) {
842    return true;
843  } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
844    return true;
845  }
846  return false;
847};
848var isNumberStart = function(c1, c2, c3) {
849  if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
850    if (isDigit(c2)) {
851      return true;
852    }
853    return c2 === FULL_STOP && isDigit(c3);
854  }
855  if (c1 === FULL_STOP) {
856    return isDigit(c2);
857  }
858  return isDigit(c1);
859};
860var stringToNumber = function(codePoints) {
861  var c = 0;
862  var sign = 1;
863  if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
864    if (codePoints[c] === HYPHEN_MINUS) {
865      sign = -1;
866    }
867    c++;
868  }
869  var integers = [];
870  while (isDigit(codePoints[c])) {
871    integers.push(codePoints[c++]);
872  }
873  var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
874  if (codePoints[c] === FULL_STOP) {
875    c++;
876  }
877  var fraction = [];
878  while (isDigit(codePoints[c])) {
879    fraction.push(codePoints[c++]);
880  }
881  var fracd = fraction.length;
882  var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
883  if (codePoints[c] === E || codePoints[c] === e) {
884    c++;
885  }
886  var expsign = 1;
887  if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
888    if (codePoints[c] === HYPHEN_MINUS) {
889      expsign = -1;
890    }
891    c++;
892  }
893  var exponent = [];
894  while (isDigit(codePoints[c])) {
895    exponent.push(codePoints[c++]);
896  }
897  var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
898  return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
899};
900var LEFT_PARENTHESIS_TOKEN = {
901  type: 2
902  /* LEFT_PARENTHESIS_TOKEN */
903};
904var RIGHT_PARENTHESIS_TOKEN = {
905  type: 3
906  /* RIGHT_PARENTHESIS_TOKEN */
907};
908var COMMA_TOKEN = {
909  type: 4
910  /* COMMA_TOKEN */
911};
912var SUFFIX_MATCH_TOKEN = {
913  type: 13
914  /* SUFFIX_MATCH_TOKEN */
915};
916var PREFIX_MATCH_TOKEN = {
917  type: 8
918  /* PREFIX_MATCH_TOKEN */
919};
920var COLUMN_TOKEN = {
921  type: 21
922  /* COLUMN_TOKEN */
923};
924var DASH_MATCH_TOKEN = {
925  type: 9
926  /* DASH_MATCH_TOKEN */
927};
928var INCLUDE_MATCH_TOKEN = {
929  type: 10
930  /* INCLUDE_MATCH_TOKEN */
931};
932var LEFT_CURLY_BRACKET_TOKEN = {
933  type: 11
934  /* LEFT_CURLY_BRACKET_TOKEN */
935};
936var RIGHT_CURLY_BRACKET_TOKEN = {
937  type: 12
938  /* RIGHT_CURLY_BRACKET_TOKEN */
939};
940var SUBSTRING_MATCH_TOKEN = {
941  type: 14
942  /* SUBSTRING_MATCH_TOKEN */
943};
944var BAD_URL_TOKEN = {
945  type: 23
946  /* BAD_URL_TOKEN */
947};
948var BAD_STRING_TOKEN = {
949  type: 1
950  /* BAD_STRING_TOKEN */
951};
952var CDO_TOKEN = {
953  type: 25
954  /* CDO_TOKEN */
955};
956var CDC_TOKEN = {
957  type: 24
958  /* CDC_TOKEN */
959};
960var COLON_TOKEN = {
961  type: 26
962  /* COLON_TOKEN */
963};
964var SEMICOLON_TOKEN = {
965  type: 27
966  /* SEMICOLON_TOKEN */
967};
968var LEFT_SQUARE_BRACKET_TOKEN = {
969  type: 28
970  /* LEFT_SQUARE_BRACKET_TOKEN */
971};
972var RIGHT_SQUARE_BRACKET_TOKEN = {
973  type: 29
974  /* RIGHT_SQUARE_BRACKET_TOKEN */
975};
976var WHITESPACE_TOKEN = {
977  type: 31
978  /* WHITESPACE_TOKEN */
979};
980var EOF_TOKEN = {
981  type: 32
982  /* EOF_TOKEN */
983};
984var Tokenizer = (
985  /** @class */
986  function() {
987    function Tokenizer2() {
988      this._value = [];
989    }
990    Tokenizer2.prototype.write = function(chunk) {
991      this._value = this._value.concat(toCodePoints$1(chunk));
992    };
993    Tokenizer2.prototype.read = function() {
994      var tokens = [];
995      var token = this.consumeToken();
996      while (token !== EOF_TOKEN) {
997        tokens.push(token);
998        token = this.consumeToken();
999      }
1000      return tokens;
1001    };
1002    Tokenizer2.prototype.consumeToken = function() {
1003      var codePoint = this.consumeCodePoint();
1004      switch (codePoint) {
1005        case QUOTATION_MARK:
1006          return this.consumeStringToken(QUOTATION_MARK);
1007        case NUMBER_SIGN:
1008          var c1 = this.peekCodePoint(0);
1009          var c2 = this.peekCodePoint(1);
1010          var c3 = this.peekCodePoint(2);
1011          if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
1012            var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
1013            var value = this.consumeName();
1014            return { type: 5, value, flags };
1015          }
1016          break;
1017        case DOLLAR_SIGN:
1018          if (this.peekCodePoint(0) === EQUALS_SIGN) {
1019            this.consumeCodePoint();
1020            return SUFFIX_MATCH_TOKEN;
1021          }
1022          break;
1023        case APOSTROPHE:
1024          return this.consumeStringToken(APOSTROPHE);
1025        case LEFT_PARENTHESIS:
1026          return LEFT_PARENTHESIS_TOKEN;
1027        case RIGHT_PARENTHESIS:
1028          return RIGHT_PARENTHESIS_TOKEN;
1029        case ASTERISK:
1030          if (this.peekCodePoint(0) === EQUALS_SIGN) {
1031            this.consumeCodePoint();
1032            return SUBSTRING_MATCH_TOKEN;
1033          }
1034          break;
1035        case PLUS_SIGN:
1036          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
1037            this.reconsumeCodePoint(codePoint);
1038            return this.consumeNumericToken();
1039          }
1040          break;
1041        case COMMA:
1042          return COMMA_TOKEN;
1043        case HYPHEN_MINUS:
1044          var e1 = codePoint;
1045          var e2 = this.peekCodePoint(0);
1046          var e3 = this.peekCodePoint(1);
1047          if (isNumberStart(e1, e2, e3)) {
1048            this.reconsumeCodePoint(codePoint);
1049            return this.consumeNumericToken();
1050          }
1051          if (isIdentifierStart(e1, e2, e3)) {
1052            this.reconsumeCodePoint(codePoint);
1053            return this.consumeIdentLikeToken();
1054          }
1055          if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
1056            this.consumeCodePoint();
1057            this.consumeCodePoint();
1058            return CDC_TOKEN;
1059          }
1060          break;
1061        case FULL_STOP:
1062          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
1063            this.reconsumeCodePoint(codePoint);
1064            return this.consumeNumericToken();
1065          }
1066          break;
1067        case SOLIDUS:
1068          if (this.peekCodePoint(0) === ASTERISK) {
1069            this.consumeCodePoint();
1070            while (true) {
1071              var c = this.consumeCodePoint();
1072              if (c === ASTERISK) {
1073                c = this.consumeCodePoint();
1074                if (c === SOLIDUS) {
1075                  return this.consumeToken();
1076                }
1077              }
1078              if (c === EOF) {
1079                return this.consumeToken();
1080              }
1081            }
1082          }
1083          break;
1084        case COLON:
1085          return COLON_TOKEN;
1086        case SEMICOLON:
1087          return SEMICOLON_TOKEN;
1088        case LESS_THAN_SIGN:
1089          if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {
1090            this.consumeCodePoint();
1091            this.consumeCodePoint();
1092            return CDO_TOKEN;
1093          }
1094          break;
1095        case COMMERCIAL_AT:
1096          var a1 = this.peekCodePoint(0);
1097          var a2 = this.peekCodePoint(1);
1098          var a3 = this.peekCodePoint(2);
1099          if (isIdentifierStart(a1, a2, a3)) {
1100            var value = this.consumeName();
1101            return { type: 7, value };
1102          }
1103          break;
1104        case LEFT_SQUARE_BRACKET:
1105          return LEFT_SQUARE_BRACKET_TOKEN;
1106        case REVERSE_SOLIDUS:
1107          if (isValidEscape(codePoint, this.peekCodePoint(0))) {
1108            this.reconsumeCodePoint(codePoint);
1109            return this.consumeIdentLikeToken();
1110          }
1111          break;
1112        case RIGHT_SQUARE_BRACKET:
1113          return RIGHT_SQUARE_BRACKET_TOKEN;
1114        case CIRCUMFLEX_ACCENT:
1115          if (this.peekCodePoint(0) === EQUALS_SIGN) {
1116            this.consumeCodePoint();
1117            return PREFIX_MATCH_TOKEN;
1118          }
1119          break;
1120        case LEFT_CURLY_BRACKET:
1121          return LEFT_CURLY_BRACKET_TOKEN;
1122        case RIGHT_CURLY_BRACKET:
1123          return RIGHT_CURLY_BRACKET_TOKEN;
1124        case u:
1125        case U:
1126          var u1 = this.peekCodePoint(0);
1127          var u2 = this.peekCodePoint(1);
1128          if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
1129            this.consumeCodePoint();
1130            this.consumeUnicodeRangeToken();
1131          }
1132          this.reconsumeCodePoint(codePoint);
1133          return this.consumeIdentLikeToken();
1134        case VERTICAL_LINE:
1135          if (this.peekCodePoint(0) === EQUALS_SIGN) {
1136            this.consumeCodePoint();
1137            return DASH_MATCH_TOKEN;
1138          }
1139          if (this.peekCodePoint(0) === VERTICAL_LINE) {
1140            this.consumeCodePoint();
1141            return COLUMN_TOKEN;
1142          }
1143          break;
1144        case TILDE:
1145          if (this.peekCodePoint(0) === EQUALS_SIGN) {
1146            this.consumeCodePoint();
1147            return INCLUDE_MATCH_TOKEN;
1148          }
1149          break;
1150        case EOF:
1151          return EOF_TOKEN;
1152      }
1153      if (isWhiteSpace(codePoint)) {
1154        this.consumeWhiteSpace();
1155        return WHITESPACE_TOKEN;
1156      }
1157      if (isDigit(codePoint)) {
1158        this.reconsumeCodePoint(codePoint);
1159        return this.consumeNumericToken();
1160      }
1161      if (isNameStartCodePoint(codePoint)) {
1162        this.reconsumeCodePoint(codePoint);
1163        return this.consumeIdentLikeToken();
1164      }
1165      return { type: 6, value: fromCodePoint$1(codePoint) };
1166    };
1167    Tokenizer2.prototype.consumeCodePoint = function() {
1168      var value = this._value.shift();
1169      return typeof value === "undefined" ? -1 : value;
1170    };
1171    Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) {
1172      this._value.unshift(codePoint);
1173    };
1174    Tokenizer2.prototype.peekCodePoint = function(delta) {
1175      if (delta >= this._value.length) {
1176        return -1;
1177      }
1178      return this._value[delta];
1179    };
1180    Tokenizer2.prototype.consumeUnicodeRangeToken = function() {
1181      var digits = [];
1182      var codePoint = this.consumeCodePoint();
1183      while (isHex(codePoint) && digits.length < 6) {
1184        digits.push(codePoint);
1185        codePoint = this.consumeCodePoint();
1186      }
1187      var questionMarks = false;
1188      while (codePoint === QUESTION_MARK && digits.length < 6) {
1189        digits.push(codePoint);
1190        codePoint = this.consumeCodePoint();
1191        questionMarks = true;
1192      }
1193      if (questionMarks) {
1194        var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
1195          return digit === QUESTION_MARK ? ZERO : digit;
1196        })), 16);
1197        var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
1198          return digit === QUESTION_MARK ? F : digit;
1199        })), 16);
1200        return { type: 30, start: start_1, end };
1201      }
1202      var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
1203      if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
1204        this.consumeCodePoint();
1205        codePoint = this.consumeCodePoint();
1206        var endDigits = [];
1207        while (isHex(codePoint) && endDigits.length < 6) {
1208          endDigits.push(codePoint);
1209          codePoint = this.consumeCodePoint();
1210        }
1211        var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
1212        return { type: 30, start, end };
1213      } else {
1214        return { type: 30, start, end: start };
1215      }
1216    };
1217    Tokenizer2.prototype.consumeIdentLikeToken = function() {
1218      var value = this.consumeName();
1219      if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
1220        this.consumeCodePoint();
1221        return this.consumeUrlToken();
1222      } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
1223        this.consumeCodePoint();
1224        return { type: 19, value };
1225      }
1226      return { type: 20, value };
1227    };
1228    Tokenizer2.prototype.consumeUrlToken = function() {
1229      var value = [];
1230      this.consumeWhiteSpace();
1231      if (this.peekCodePoint(0) === EOF) {
1232        return { type: 22, value: "" };
1233      }
1234      var next = this.peekCodePoint(0);
1235      if (next === APOSTROPHE || next === QUOTATION_MARK) {
1236        var stringToken = this.consumeStringToken(this.consumeCodePoint());
1237        if (stringToken.type === 0) {
1238          this.consumeWhiteSpace();
1239          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
1240            this.consumeCodePoint();
1241            return { type: 22, value: stringToken.value };
1242          }
1243        }
1244        this.consumeBadUrlRemnants();
1245        return BAD_URL_TOKEN;
1246      }
1247      while (true) {
1248        var codePoint = this.consumeCodePoint();
1249        if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
1250          return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
1251        } else if (isWhiteSpace(codePoint)) {
1252          this.consumeWhiteSpace();
1253          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
1254            this.consumeCodePoint();
1255            return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
1256          }
1257          this.consumeBadUrlRemnants();
1258          return BAD_URL_TOKEN;
1259        } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {
1260          this.consumeBadUrlRemnants();
1261          return BAD_URL_TOKEN;
1262        } else if (codePoint === REVERSE_SOLIDUS) {
1263          if (isValidEscape(codePoint, this.peekCodePoint(0))) {
1264            value.push(this.consumeEscapedCodePoint());
1265          } else {
1266            this.consumeBadUrlRemnants();
1267            return BAD_URL_TOKEN;
1268          }
1269        } else {
1270          value.push(codePoint);
1271        }
1272      }
1273    };
1274    Tokenizer2.prototype.consumeWhiteSpace = function() {
1275      while (isWhiteSpace(this.peekCodePoint(0))) {
1276        this.consumeCodePoint();
1277      }
1278    };
1279    Tokenizer2.prototype.consumeBadUrlRemnants = function() {
1280      while (true) {
1281        var codePoint = this.consumeCodePoint();
1282        if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
1283          return;
1284        }
1285        if (isValidEscape(codePoint, this.peekCodePoint(0))) {
1286          this.consumeEscapedCodePoint();
1287        }
1288      }
1289    };
1290    Tokenizer2.prototype.consumeStringSlice = function(count) {
1291      var SLICE_STACK_SIZE = 5e4;
1292      var value = "";
1293      while (count > 0) {
1294        var amount = Math.min(SLICE_STACK_SIZE, count);
1295        value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
1296        count -= amount;
1297      }
1298      this._value.shift();
1299      return value;
1300    };
1301    Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) {
1302      var value = "";
1303      var i = 0;
1304      do {
1305        var codePoint = this._value[i];
1306        if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) {
1307          value += this.consumeStringSlice(i);
1308          return { type: 0, value };
1309        }
1310        if (codePoint === LINE_FEED) {
1311          this._value.splice(0, i);
1312          return BAD_STRING_TOKEN;
1313        }
1314        if (codePoint === REVERSE_SOLIDUS) {
1315          var next = this._value[i + 1];
1316          if (next !== EOF && next !== void 0) {
1317            if (next === LINE_FEED) {
1318              value += this.consumeStringSlice(i);
1319              i = -1;
1320              this._value.shift();
1321            } else if (isValidEscape(codePoint, next)) {
1322              value += this.consumeStringSlice(i);
1323              value += fromCodePoint$1(this.consumeEscapedCodePoint());
1324              i = -1;
1325            }
1326          }
1327        }
1328        i++;
1329      } while (true);
1330    };
1331    Tokenizer2.prototype.consumeNumber = function() {
1332      var repr = [];
1333      var type = FLAG_INTEGER;
1334      var c1 = this.peekCodePoint(0);
1335      if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
1336        repr.push(this.consumeCodePoint());
1337      }
1338      while (isDigit(this.peekCodePoint(0))) {
1339        repr.push(this.consumeCodePoint());
1340      }
1341      c1 = this.peekCodePoint(0);
1342      var c2 = this.peekCodePoint(1);
1343      if (c1 === FULL_STOP && isDigit(c2)) {
1344        repr.push(this.consumeCodePoint(), this.consumeCodePoint());
1345        type = FLAG_NUMBER;
1346        while (isDigit(this.peekCodePoint(0))) {
1347          repr.push(this.consumeCodePoint());
1348        }
1349      }
1350      c1 = this.peekCodePoint(0);
1351      c2 = this.peekCodePoint(1);
1352      var c3 = this.peekCodePoint(2);
1353      if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {
1354        repr.push(this.consumeCodePoint(), this.consumeCodePoint());
1355        type = FLAG_NUMBER;
1356        while (isDigit(this.peekCodePoint(0))) {
1357          repr.push(this.consumeCodePoint());
1358        }
1359      }
1360      return [stringToNumber(repr), type];
1361    };
1362    Tokenizer2.prototype.consumeNumericToken = function() {
1363      var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
1364      var c1 = this.peekCodePoint(0);
1365      var c2 = this.peekCodePoint(1);
1366      var c3 = this.peekCodePoint(2);
1367      if (isIdentifierStart(c1, c2, c3)) {
1368        var unit = this.consumeName();
1369        return { type: 15, number, flags, unit };
1370      }
1371      if (c1 === PERCENTAGE_SIGN) {
1372        this.consumeCodePoint();
1373        return { type: 16, number, flags };
1374      }
1375      return { type: 17, number, flags };
1376    };
1377    Tokenizer2.prototype.consumeEscapedCodePoint = function() {
1378      var codePoint = this.consumeCodePoint();
1379      if (isHex(codePoint)) {
1380        var hex = fromCodePoint$1(codePoint);
1381        while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
1382          hex += fromCodePoint$1(this.consumeCodePoint());
1383        }
1384        if (isWhiteSpace(this.peekCodePoint(0))) {
1385          this.consumeCodePoint();
1386        }
1387        var hexCodePoint = parseInt(hex, 16);
1388        if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) {
1389          return REPLACEMENT_CHARACTER;
1390        }
1391        return hexCodePoint;
1392      }
1393      if (codePoint === EOF) {
1394        return REPLACEMENT_CHARACTER;
1395      }
1396      return codePoint;
1397    };
1398    Tokenizer2.prototype.consumeName = function() {
1399      var result = "";
1400      while (true) {
1401        var codePoint = this.consumeCodePoint();
1402        if (isNameCodePoint(codePoint)) {
1403          result += fromCodePoint$1(codePoint);
1404        } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
1405          result += fromCodePoint$1(this.consumeEscapedCodePoint());
1406        } else {
1407          this.reconsumeCodePoint(codePoint);
1408          return result;
1409        }
1410      }
1411    };
1412    return Tokenizer2;
1413  }
vendor: 2,905 bytes, lines 1413-1509
1413()
1414);
1415var Parser = (
1416  /** @class */
1417  function() {
1418    function Parser2(tokens) {
1419      this._tokens = tokens;
1420    }
1421    Parser2.create = function(value) {
1422      var tokenizer = new Tokenizer();
1423      tokenizer.write(value);
1424      return new Parser2(tokenizer.read());
1425    };
1426    Parser2.parseValue = function(value) {
1427      return Parser2.create(value).parseComponentValue();
1428    };
1429    Parser2.parseValues = function(value) {
1430      return Parser2.create(value).parseComponentValues();
1431    };
1432    Parser2.prototype.parseComponentValue = function() {
1433      var token = this.consumeToken();
1434      while (token.type === 31) {
1435        token = this.consumeToken();
1436      }
1437      if (token.type === 32) {
1438        throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
1439      }
1440      this.reconsumeToken(token);
1441      var value = this.consumeComponentValue();
1442      do {
1443        token = this.consumeToken();
1444      } while (token.type === 31);
1445      if (token.type === 32) {
1446        return value;
1447      }
1448      throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
1449    };
1450    Parser2.prototype.parseComponentValues = function() {
1451      var values = [];
1452      while (true) {
1453        var value = this.consumeComponentValue();
1454        if (value.type === 32) {
1455          return values;
1456        }
1457        values.push(value);
1458        values.push();
1459      }
1460    };
1461    Parser2.prototype.consumeComponentValue = function() {
1462      var token = this.consumeToken();
1463      switch (token.type) {
1464        case 11:
1465        case 28:
1466        case 2:
1467          return this.consumeSimpleBlock(token.type);
1468        case 19:
1469          return this.consumeFunction(token);
1470      }
1471      return token;
1472    };
1473    Parser2.prototype.consumeSimpleBlock = function(type) {
1474      var block = { type, values: [] };
1475      var token = this.consumeToken();
1476      while (true) {
1477        if (token.type === 32 || isEndingTokenFor(token, type)) {
1478          return block;
1479        }
1480        this.reconsumeToken(token);
1481        block.values.push(this.consumeComponentValue());
1482        token = this.consumeToken();
1483      }
1484    };
1485    Parser2.prototype.consumeFunction = function(functionToken) {
1486      var cssFunction = {
1487        name: functionToken.value,
1488        values: [],
1489        type: 18
1490        /* FUNCTION */
1491      };
1492      while (true) {
1493        var token = this.consumeToken();
1494        if (token.type === 32 || token.type === 3) {
1495          return cssFunction;
1496        }
1497        this.reconsumeToken(token);
1498        cssFunction.values.push(this.consumeComponentValue());
1499      }
1500    };
1501    Parser2.prototype.consumeToken = function() {
1502      var token = this._tokens.shift();
1503      return typeof token === "undefined" ? EOF_TOKEN : token;
1504    };
1505    Parser2.prototype.reconsumeToken = function(token) {
1506      this._tokens.unshift(token);
1507    };
1508    return Parser2;
1509  }
vendor: 52,086 bytes, lines 1509-3560
1509()
1510);
1511var isDimensionToken = function(token) {
1512  return token.type === 15;
1513};
1514var isNumberToken = function(token) {
1515  return token.type === 17;
1516};
1517var isIdentToken = function(token) {
1518  return token.type === 20;
1519};
1520var isStringToken = function(token) {
1521  return token.type === 0;
1522};
1523var isIdentWithValue = function(token, value) {
1524  return isIdentToken(token) && token.value === value;
1525};
1526var nonWhiteSpace = function(token) {
1527  return token.type !== 31;
1528};
1529var nonFunctionArgSeparator = function(token) {
1530  return token.type !== 31 && token.type !== 4;
1531};
1532var parseFunctionArgs = function(tokens) {
1533  var args = [];
1534  var arg = [];
1535  tokens.forEach(function(token) {
1536    if (token.type === 4) {
1537      if (arg.length === 0) {
1538        throw new Error("Error parsing function args, zero tokens for arg");
1539      }
1540      args.push(arg);
1541      arg = [];
1542      return;
1543    }
1544    if (token.type !== 31) {
1545      arg.push(token);
1546    }
1547  });
1548  if (arg.length) {
1549    args.push(arg);
1550  }
1551  return args;
1552};
1553var isEndingTokenFor = function(token, type) {
1554  if (type === 11 && token.type === 12) {
1555    return true;
1556  }
1557  if (type === 28 && token.type === 29) {
1558    return true;
1559  }
1560  return type === 2 && token.type === 3;
1561};
1562var isLength = function(token) {
1563  return token.type === 17 || token.type === 15;
1564};
1565var isLengthPercentage = function(token) {
1566  return token.type === 16 || isLength(token);
1567};
1568var parseLengthPercentageTuple = function(tokens) {
1569  return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
1570};
1571var ZERO_LENGTH = {
1572  type: 17,
1573  number: 0,
1574  flags: FLAG_INTEGER
1575};
1576var FIFTY_PERCENT = {
1577  type: 16,
1578  number: 50,
1579  flags: FLAG_INTEGER
1580};
1581var HUNDRED_PERCENT = {
1582  type: 16,
1583  number: 100,
1584  flags: FLAG_INTEGER
1585};
1586var getAbsoluteValueForTuple = function(tuple, width, height) {
1587  var x = tuple[0], y = tuple[1];
1588  return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== "undefined" ? y : x, height)];
1589};
1590var getAbsoluteValue = function(token, parent) {
1591  if (token.type === 16) {
1592    return token.number / 100 * parent;
1593  }
1594  if (isDimensionToken(token)) {
1595    switch (token.unit) {
1596      case "rem":
1597      case "em":
1598        return 16 * token.number;
1599      // TODO use correct font-size
1600      case "px":
1601      default:
1602        return token.number;
1603    }
1604  }
1605  return token.number;
1606};
1607var DEG = "deg";
1608var GRAD = "grad";
1609var RAD = "rad";
1610var TURN = "turn";
1611var angle = {
1612  name: "angle",
1613  parse: function(_context, value) {
1614    if (value.type === 15) {
1615      switch (value.unit) {
1616        case DEG:
1617          return Math.PI * value.number / 180;
1618        case GRAD:
1619          return Math.PI / 200 * value.number;
1620        case RAD:
1621          return value.number;
1622        case TURN:
1623          return Math.PI * 2 * value.number;
1624      }
1625    }
1626    throw new Error("Unsupported angle type");
1627  }
1628};
1629var isAngle = function(value) {
1630  if (value.type === 15) {
1631    if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
1632      return true;
1633    }
1634  }
1635  return false;
1636};
1637var parseNamedSide = function(tokens) {
1638  var sideOrCorner = tokens.filter(isIdentToken).map(function(ident) {
1639    return ident.value;
1640  }).join(" ");
1641  switch (sideOrCorner) {
1642    case "to bottom right":
1643    case "to right bottom":
1644    case "left top":
1645    case "top left":
1646      return [ZERO_LENGTH, ZERO_LENGTH];
1647    case "to top":
1648    case "bottom":
1649      return deg(0);
1650    case "to bottom left":
1651    case "to left bottom":
1652    case "right top":
1653    case "top right":
1654      return [ZERO_LENGTH, HUNDRED_PERCENT];
1655    case "to right":
1656    case "left":
1657      return deg(90);
1658    case "to top left":
1659    case "to left top":
1660    case "right bottom":
1661    case "bottom right":
1662      return [HUNDRED_PERCENT, HUNDRED_PERCENT];
1663    case "to bottom":
1664    case "top":
1665      return deg(180);
1666    case "to top right":
1667    case "to right top":
1668    case "left bottom":
1669    case "bottom left":
1670      return [HUNDRED_PERCENT, ZERO_LENGTH];
1671    case "to left":
1672    case "right":
1673      return deg(270);
1674  }
1675  return 0;
1676};
1677var deg = function(deg2) {
1678  return Math.PI * deg2 / 180;
1679};
1680var color$1 = {
1681  name: "color",
1682  parse: function(context, value) {
1683    if (value.type === 18) {
1684      var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
1685      if (typeof colorFunction === "undefined") {
1686        throw new Error('Attempting to parse an unsupported color function "' + value.name + '"');
1687      }
1688      return colorFunction(context, value.values);
1689    }
1690    if (value.type === 5) {
1691      if (value.value.length === 3) {
1692        var r = value.value.substring(0, 1);
1693        var g = value.value.substring(1, 2);
1694        var b = value.value.substring(2, 3);
1695        return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);
1696      }
1697      if (value.value.length === 4) {
1698        var r = value.value.substring(0, 1);
1699        var g = value.value.substring(1, 2);
1700        var b = value.value.substring(2, 3);
1701        var a2 = value.value.substring(3, 4);
1702        return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a2 + a2, 16) / 255);
1703      }
1704      if (value.value.length === 6) {
1705        var r = value.value.substring(0, 2);
1706        var g = value.value.substring(2, 4);
1707        var b = value.value.substring(4, 6);
1708        return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);
1709      }
1710      if (value.value.length === 8) {
1711        var r = value.value.substring(0, 2);
1712        var g = value.value.substring(2, 4);
1713        var b = value.value.substring(4, 6);
1714        var a2 = value.value.substring(6, 8);
1715        return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a2, 16) / 255);
1716      }
1717    }
1718    if (value.type === 20) {
1719      var namedColor = COLORS[value.value.toUpperCase()];
1720      if (typeof namedColor !== "undefined") {
1721        return namedColor;
1722      }
1723    }
1724    return COLORS.TRANSPARENT;
1725  }
1726};
1727var isTransparent = function(color2) {
1728  return (255 & color2) === 0;
1729};
1730var asString = function(color2) {
1731  var alpha = 255 & color2;
1732  var blue = 255 & color2 >> 8;
1733  var green = 255 & color2 >> 16;
1734  var red = 255 & color2 >> 24;
1735  return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
1736};
1737var pack = function(r, g, b, a2) {
1738  return (r << 24 | g << 16 | b << 8 | Math.round(a2 * 255) << 0) >>> 0;
1739};
1740var getTokenColorValue = function(token, i) {
1741  if (token.type === 17) {
1742    return token.number;
1743  }
1744  if (token.type === 16) {
1745    var max = i === 3 ? 1 : 255;
1746    return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);
1747  }
1748  return 0;
1749};
1750var rgb = function(_context, args) {
1751  var tokens = args.filter(nonFunctionArgSeparator);
1752  if (tokens.length === 3) {
1753    var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
1754    return pack(r, g, b, 1);
1755  }
1756  if (tokens.length === 4) {
1757    var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a2 = _b[3];
1758    return pack(r, g, b, a2);
1759  }
1760  return 0;
1761};
1762function hue2rgb(t1, t2, hue) {
1763  if (hue < 0) {
1764    hue += 1;
1765  }
1766  if (hue >= 1) {
1767    hue -= 1;
1768  }
1769  if (hue < 1 / 6) {
1770    return (t2 - t1) * hue * 6 + t1;
1771  } else if (hue < 1 / 2) {
1772    return t2;
1773  } else if (hue < 2 / 3) {
1774    return (t2 - t1) * 6 * (2 / 3 - hue) + t1;
1775  } else {
1776    return t1;
1777  }
1778}
1779var hsl = function(context, args) {
1780  var tokens = args.filter(nonFunctionArgSeparator);
1781  var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
1782  var h = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
1783  var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
1784  var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
1785  var a2 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
1786  if (s === 0) {
1787    return pack(l * 255, l * 255, l * 255, 1);
1788  }
1789  var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
1790  var t1 = l * 2 - t2;
1791  var r = hue2rgb(t1, t2, h + 1 / 3);
1792  var g = hue2rgb(t1, t2, h);
1793  var b = hue2rgb(t1, t2, h - 1 / 3);
1794  return pack(r * 255, g * 255, b * 255, a2);
1795};
1796var SUPPORTED_COLOR_FUNCTIONS = {
1797  hsl,
1798  hsla: hsl,
1799  rgb,
1800  rgba: rgb
1801};
1802var parseColor = function(context, value) {
1803  return color$1.parse(context, Parser.create(value).parseComponentValue());
1804};
1805var COLORS = {
1806  ALICEBLUE: 4042850303,
1807  ANTIQUEWHITE: 4209760255,
1808  AQUA: 16777215,
1809  AQUAMARINE: 2147472639,
1810  AZURE: 4043309055,
1811  BEIGE: 4126530815,
1812  BISQUE: 4293182719,
1813  BLACK: 255,
1814  BLANCHEDALMOND: 4293643775,
1815  BLUE: 65535,
1816  BLUEVIOLET: 2318131967,
1817  BROWN: 2771004159,
1818  BURLYWOOD: 3736635391,
1819  CADETBLUE: 1604231423,
1820  CHARTREUSE: 2147418367,
1821  CHOCOLATE: 3530104575,
1822  CORAL: 4286533887,
1823  CORNFLOWERBLUE: 1687547391,
1824  CORNSILK: 4294499583,
1825  CRIMSON: 3692313855,
1826  CYAN: 16777215,
1827  DARKBLUE: 35839,
1828  DARKCYAN: 9145343,
1829  DARKGOLDENROD: 3095837695,
1830  DARKGRAY: 2846468607,
1831  DARKGREEN: 6553855,
1832  DARKGREY: 2846468607,
1833  DARKKHAKI: 3182914559,
1834  DARKMAGENTA: 2332068863,
1835  DARKOLIVEGREEN: 1433087999,
1836  DARKORANGE: 4287365375,
1837  DARKORCHID: 2570243327,
1838  DARKRED: 2332033279,
1839  DARKSALMON: 3918953215,
1840  DARKSEAGREEN: 2411499519,
1841  DARKSLATEBLUE: 1211993087,
1842  DARKSLATEGRAY: 793726975,
1843  DARKSLATEGREY: 793726975,
1844  DARKTURQUOISE: 13554175,
1845  DARKVIOLET: 2483082239,
1846  DEEPPINK: 4279538687,
1847  DEEPSKYBLUE: 12582911,
1848  DIMGRAY: 1768516095,
1849  DIMGREY: 1768516095,
1850  DODGERBLUE: 512819199,
1851  FIREBRICK: 2988581631,
1852  FLORALWHITE: 4294635775,
1853  FORESTGREEN: 579543807,
1854  FUCHSIA: 4278255615,
1855  GAINSBORO: 3705462015,
1856  GHOSTWHITE: 4177068031,
1857  GOLD: 4292280575,
1858  GOLDENROD: 3668254975,
1859  GRAY: 2155905279,
1860  GREEN: 8388863,
1861  GREENYELLOW: 2919182335,
1862  GREY: 2155905279,
1863  HONEYDEW: 4043305215,
1864  HOTPINK: 4285117695,
1865  INDIANRED: 3445382399,
1866  INDIGO: 1258324735,
1867  IVORY: 4294963455,
1868  KHAKI: 4041641215,
1869  LAVENDER: 3873897215,
1870  LAVENDERBLUSH: 4293981695,
1871  LAWNGREEN: 2096890111,
1872  LEMONCHIFFON: 4294626815,
1873  LIGHTBLUE: 2916673279,
1874  LIGHTCORAL: 4034953471,
1875  LIGHTCYAN: 3774873599,
1876  LIGHTGOLDENRODYELLOW: 4210742015,
1877  LIGHTGRAY: 3553874943,
1878  LIGHTGREEN: 2431553791,
1879  LIGHTGREY: 3553874943,
1880  LIGHTPINK: 4290167295,
1881  LIGHTSALMON: 4288707327,
1882  LIGHTSEAGREEN: 548580095,
1883  LIGHTSKYBLUE: 2278488831,
1884  LIGHTSLATEGRAY: 2005441023,
1885  LIGHTSLATEGREY: 2005441023,
1886  LIGHTSTEELBLUE: 2965692159,
1887  LIGHTYELLOW: 4294959359,
1888  LIME: 16711935,
1889  LIMEGREEN: 852308735,
1890  LINEN: 4210091775,
1891  MAGENTA: 4278255615,
1892  MAROON: 2147483903,
1893  MEDIUMAQUAMARINE: 1724754687,
1894  MEDIUMBLUE: 52735,
1895  MEDIUMORCHID: 3126187007,
1896  MEDIUMPURPLE: 2473647103,
1897  MEDIUMSEAGREEN: 1018393087,
1898  MEDIUMSLATEBLUE: 2070474495,
1899  MEDIUMSPRINGGREEN: 16423679,
1900  MEDIUMTURQUOISE: 1221709055,
1901  MEDIUMVIOLETRED: 3340076543,
1902  MIDNIGHTBLUE: 421097727,
1903  MINTCREAM: 4127193855,
1904  MISTYROSE: 4293190143,
1905  MOCCASIN: 4293178879,
1906  NAVAJOWHITE: 4292783615,
1907  NAVY: 33023,
1908  OLDLACE: 4260751103,
1909  OLIVE: 2155872511,
1910  OLIVEDRAB: 1804477439,
1911  ORANGE: 4289003775,
1912  ORANGERED: 4282712319,
1913  ORCHID: 3664828159,
1914  PALEGOLDENROD: 4008225535,
1915  PALEGREEN: 2566625535,
1916  PALETURQUOISE: 2951671551,
1917  PALEVIOLETRED: 3681588223,
1918  PAPAYAWHIP: 4293907967,
1919  PEACHPUFF: 4292524543,
1920  PERU: 3448061951,
1921  PINK: 4290825215,
1922  PLUM: 3718307327,
1923  POWDERBLUE: 2967529215,
1924  PURPLE: 2147516671,
1925  REBECCAPURPLE: 1714657791,
1926  RED: 4278190335,
1927  ROSYBROWN: 3163525119,
1928  ROYALBLUE: 1097458175,
1929  SADDLEBROWN: 2336560127,
1930  SALMON: 4202722047,
1931  SANDYBROWN: 4104413439,
1932  SEAGREEN: 780883967,
1933  SEASHELL: 4294307583,
1934  SIENNA: 2689740287,
1935  SILVER: 3233857791,
1936  SKYBLUE: 2278484991,
1937  SLATEBLUE: 1784335871,
1938  SLATEGRAY: 1887473919,
1939  SLATEGREY: 1887473919,
1940  SNOW: 4294638335,
1941  SPRINGGREEN: 16744447,
1942  STEELBLUE: 1182971135,
1943  TAN: 3535047935,
1944  TEAL: 8421631,
1945  THISTLE: 3636451583,
1946  TOMATO: 4284696575,
1947  TRANSPARENT: 0,
1948  TURQUOISE: 1088475391,
1949  VIOLET: 4001558271,
1950  WHEAT: 4125012991,
1951  WHITE: 4294967295,
1952  WHITESMOKE: 4126537215,
1953  YELLOW: 4294902015,
1954  YELLOWGREEN: 2597139199
1955};
1956var backgroundClip = {
1957  name: "background-clip",
1958  initialValue: "border-box",
1959  prefix: false,
1960  type: 1,
1961  parse: function(_context, tokens) {
1962    return tokens.map(function(token) {
1963      if (isIdentToken(token)) {
1964        switch (token.value) {
1965          case "padding-box":
1966            return 1;
1967          case "content-box":
1968            return 2;
1969        }
1970      }
1971      return 0;
1972    });
1973  }
1974};
1975var backgroundColor = {
1976  name: "background-color",
1977  initialValue: "transparent",
1978  prefix: false,
1979  type: 3,
1980  format: "color"
1981};
1982var parseColorStop = function(context, args) {
1983  var color2 = color$1.parse(context, args[0]);
1984  var stop = args[1];
1985  return stop && isLengthPercentage(stop) ? { color: color2, stop } : { color: color2, stop: null };
1986};
1987var processColorStops = function(stops, lineLength) {
1988  var first = stops[0];
1989  var last = stops[stops.length - 1];
1990  if (first.stop === null) {
1991    first.stop = ZERO_LENGTH;
1992  }
1993  if (last.stop === null) {
1994    last.stop = HUNDRED_PERCENT;
1995  }
1996  var processStops = [];
1997  var previous = 0;
1998  for (var i = 0; i < stops.length; i++) {
1999    var stop_1 = stops[i].stop;
2000    if (stop_1 !== null) {
2001      var absoluteValue = getAbsoluteValue(stop_1, lineLength);
2002      if (absoluteValue > previous) {
2003        processStops.push(absoluteValue);
2004      } else {
2005        processStops.push(previous);
2006      }
2007      previous = absoluteValue;
2008    } else {
2009      processStops.push(null);
2010    }
2011  }
2012  var gapBegin = null;
2013  for (var i = 0; i < processStops.length; i++) {
2014    var stop_2 = processStops[i];
2015    if (stop_2 === null) {
2016      if (gapBegin === null) {
2017        gapBegin = i;
2018      }
2019    } else if (gapBegin !== null) {
2020      var gapLength = i - gapBegin;
2021      var beforeGap = processStops[gapBegin - 1];
2022      var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
2023      for (var g = 1; g <= gapLength; g++) {
2024        processStops[gapBegin + g - 1] = gapValue * g;
2025      }
2026      gapBegin = null;
2027    }
2028  }
2029  return stops.map(function(_a, i2) {
2030    var color2 = _a.color;
2031    return { color: color2, stop: Math.max(Math.min(1, processStops[i2] / lineLength), 0) };
2032  });
2033};
2034var getAngleFromCorner = function(corner, width, height) {
2035  var centerX = width / 2;
2036  var centerY = height / 2;
2037  var x = getAbsoluteValue(corner[0], width) - centerX;
2038  var y = centerY - getAbsoluteValue(corner[1], height);
2039  return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);
2040};
2041var calculateGradientDirection = function(angle2, width, height) {
2042  var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height);
2043  var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
2044  var halfWidth = width / 2;
2045  var halfHeight = height / 2;
2046  var halfLineLength = lineLength / 2;
2047  var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
2048  var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
2049  return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
2050};
2051var distance = function(a2, b) {
2052  return Math.sqrt(a2 * a2 + b * b);
2053};
2054var findCorner = function(width, height, x, y, closest) {
2055  var corners = [
2056    [0, 0],
2057    [0, height],
2058    [width, 0],
2059    [width, height]
2060  ];
2061  return corners.reduce(function(stat, corner) {
2062    var cx = corner[0], cy = corner[1];
2063    var d = distance(x - cx, y - cy);
2064    if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
2065      return {
2066        optimumCorner: corner,
2067        optimumDistance: d
2068      };
2069    }
2070    return stat;
2071  }, {
2072    optimumDistance: closest ? Infinity : -Infinity,
2073    optimumCorner: null
2074  }).optimumCorner;
2075};
2076var calculateRadius = function(gradient, x, y, width, height) {
2077  var rx = 0;
2078  var ry = 0;
2079  switch (gradient.size) {
2080    case 0:
2081      if (gradient.shape === 0) {
2082        rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
2083      } else if (gradient.shape === 1) {
2084        rx = Math.min(Math.abs(x), Math.abs(x - width));
2085        ry = Math.min(Math.abs(y), Math.abs(y - height));
2086      }
2087      break;
2088    case 2:
2089      if (gradient.shape === 0) {
2090        rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
2091      } else if (gradient.shape === 1) {
2092        var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
2093        var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
2094        rx = distance(cx - x, (cy - y) / c);
2095        ry = c * rx;
2096      }
2097      break;
2098    case 1:
2099      if (gradient.shape === 0) {
2100        rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
2101      } else if (gradient.shape === 1) {
2102        rx = Math.max(Math.abs(x), Math.abs(x - width));
2103        ry = Math.max(Math.abs(y), Math.abs(y - height));
2104      }
2105      break;
2106    case 3:
2107      if (gradient.shape === 0) {
2108        rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
2109      } else if (gradient.shape === 1) {
2110        var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
2111        var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
2112        rx = distance(cx - x, (cy - y) / c);
2113        ry = c * rx;
2114      }
2115      break;
2116  }
2117  if (Array.isArray(gradient.size)) {
2118    rx = getAbsoluteValue(gradient.size[0], width);
2119    ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
2120  }
2121  return [rx, ry];
2122};
2123var linearGradient = function(context, tokens) {
2124  var angle$1 = deg(180);
2125  var stops = [];
2126  parseFunctionArgs(tokens).forEach(function(arg, i) {
2127    if (i === 0) {
2128      var firstToken = arg[0];
2129      if (firstToken.type === 20 && firstToken.value === "to") {
2130        angle$1 = parseNamedSide(arg);
2131        return;
2132      } else if (isAngle(firstToken)) {
2133        angle$1 = angle.parse(context, firstToken);
2134        return;
2135      }
2136    }
2137    var colorStop = parseColorStop(context, arg);
2138    stops.push(colorStop);
2139  });
2140  return {
2141    angle: angle$1,
2142    stops,
2143    type: 1
2144    /* LINEAR_GRADIENT */
2145  };
2146};
2147var prefixLinearGradient = function(context, tokens) {
2148  var angle$1 = deg(180);
2149  var stops = [];
2150  parseFunctionArgs(tokens).forEach(function(arg, i) {
2151    if (i === 0) {
2152      var firstToken = arg[0];
2153      if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) {
2154        angle$1 = parseNamedSide(arg);
2155        return;
2156      } else if (isAngle(firstToken)) {
2157        angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
2158        return;
2159      }
2160    }
2161    var colorStop = parseColorStop(context, arg);
2162    stops.push(colorStop);
2163  });
2164  return {
2165    angle: angle$1,
2166    stops,
2167    type: 1
2168    /* LINEAR_GRADIENT */
2169  };
2170};
2171var webkitGradient = function(context, tokens) {
2172  var angle2 = deg(180);
2173  var stops = [];
2174  var type = 1;
2175  var shape = 0;
2176  var size = 3;
2177  var position2 = [];
2178  parseFunctionArgs(tokens).forEach(function(arg, i) {
2179    var firstToken = arg[0];
2180    if (i === 0) {
2181      if (isIdentToken(firstToken) && firstToken.value === "linear") {
2182        type = 1;
2183        return;
2184      } else if (isIdentToken(firstToken) && firstToken.value === "radial") {
2185        type = 2;
2186        return;
2187      }
2188    }
2189    if (firstToken.type === 18) {
2190      if (firstToken.name === "from") {
2191        var color2 = color$1.parse(context, firstToken.values[0]);
2192        stops.push({ stop: ZERO_LENGTH, color: color2 });
2193      } else if (firstToken.name === "to") {
2194        var color2 = color$1.parse(context, firstToken.values[0]);
2195        stops.push({ stop: HUNDRED_PERCENT, color: color2 });
2196      } else if (firstToken.name === "color-stop") {
2197        var values = firstToken.values.filter(nonFunctionArgSeparator);
2198        if (values.length === 2) {
2199          var color2 = color$1.parse(context, values[1]);
2200          var stop_1 = values[0];
2201          if (isNumberToken(stop_1)) {
2202            stops.push({
2203              stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags },
2204              color: color2
2205            });
2206          }
2207        }
2208      }
2209    }
2210  });
2211  return type === 1 ? {
2212    angle: (angle2 + deg(180)) % deg(360),
2213    stops,
2214    type
2215  } : { size, shape, stops, position: position2, type };
2216};
2217var CLOSEST_SIDE = "closest-side";
2218var FARTHEST_SIDE = "farthest-side";
2219var CLOSEST_CORNER = "closest-corner";
2220var FARTHEST_CORNER = "farthest-corner";
2221var CIRCLE = "circle";
2222var ELLIPSE = "ellipse";
2223var COVER = "cover";
2224var CONTAIN = "contain";
2225var radialGradient = function(context, tokens) {
2226  var shape = 0;
2227  var size = 3;
2228  var stops = [];
2229  var position2 = [];
2230  parseFunctionArgs(tokens).forEach(function(arg, i) {
2231    var isColorStop = true;
2232    if (i === 0) {
2233      var isAtPosition_1 = false;
2234      isColorStop = arg.reduce(function(acc, token) {
2235        if (isAtPosition_1) {
2236          if (isIdentToken(token)) {
2237            switch (token.value) {
2238              case "center":
2239                position2.push(FIFTY_PERCENT);
2240                return acc;
2241              case "top":
2242              case "left":
2243                position2.push(ZERO_LENGTH);
2244                return acc;
2245              case "right":
2246              case "bottom":
2247                position2.push(HUNDRED_PERCENT);
2248                return acc;
2249            }
2250          } else if (isLengthPercentage(token) || isLength(token)) {
2251            position2.push(token);
2252          }
2253        } else if (isIdentToken(token)) {
2254          switch (token.value) {
2255            case CIRCLE:
2256              shape = 0;
2257              return false;
2258            case ELLIPSE:
2259              shape = 1;
2260              return false;
2261            case "at":
2262              isAtPosition_1 = true;
2263              return false;
2264            case CLOSEST_SIDE:
2265              size = 0;
2266              return false;
2267            case COVER:
2268            case FARTHEST_SIDE:
2269              size = 1;
2270              return false;
2271            case CONTAIN:
2272            case CLOSEST_CORNER:
2273              size = 2;
2274              return false;
2275            case FARTHEST_CORNER:
2276              size = 3;
2277              return false;
2278          }
2279        } else if (isLength(token) || isLengthPercentage(token)) {
2280          if (!Array.isArray(size)) {
2281            size = [];
2282          }
2283          size.push(token);
2284          return false;
2285        }
2286        return acc;
2287      }, isColorStop);
2288    }
2289    if (isColorStop) {
2290      var colorStop = parseColorStop(context, arg);
2291      stops.push(colorStop);
2292    }
2293  });
2294  return {
2295    size,
2296    shape,
2297    stops,
2298    position: position2,
2299    type: 2
2300    /* RADIAL_GRADIENT */
2301  };
2302};
2303var prefixRadialGradient = function(context, tokens) {
2304  var shape = 0;
2305  var size = 3;
2306  var stops = [];
2307  var position2 = [];
2308  parseFunctionArgs(tokens).forEach(function(arg, i) {
2309    var isColorStop = true;
2310    if (i === 0) {
2311      isColorStop = arg.reduce(function(acc, token) {
2312        if (isIdentToken(token)) {
2313          switch (token.value) {
2314            case "center":
2315              position2.push(FIFTY_PERCENT);
2316              return false;
2317            case "top":
2318            case "left":
2319              position2.push(ZERO_LENGTH);
2320              return false;
2321            case "right":
2322            case "bottom":
2323              position2.push(HUNDRED_PERCENT);
2324              return false;
2325          }
2326        } else if (isLengthPercentage(token) || isLength(token)) {
2327          position2.push(token);
2328          return false;
2329        }
2330        return acc;
2331      }, isColorStop);
2332    } else if (i === 1) {
2333      isColorStop = arg.reduce(function(acc, token) {
2334        if (isIdentToken(token)) {
2335          switch (token.value) {
2336            case CIRCLE:
2337              shape = 0;
2338              return false;
2339            case ELLIPSE:
2340              shape = 1;
2341              return false;
2342            case CONTAIN:
2343            case CLOSEST_SIDE:
2344              size = 0;
2345              return false;
2346            case FARTHEST_SIDE:
2347              size = 1;
2348              return false;
2349            case CLOSEST_CORNER:
2350              size = 2;
2351              return false;
2352            case COVER:
2353            case FARTHEST_CORNER:
2354              size = 3;
2355              return false;
2356          }
2357        } else if (isLength(token) || isLengthPercentage(token)) {
2358          if (!Array.isArray(size)) {
2359            size = [];
2360          }
2361          size.push(token);
2362          return false;
2363        }
2364        return acc;
2365      }, isColorStop);
2366    }
2367    if (isColorStop) {
2368      var colorStop = parseColorStop(context, arg);
2369      stops.push(colorStop);
2370    }
2371  });
2372  return {
2373    size,
2374    shape,
2375    stops,
2376    position: position2,
2377    type: 2
2378    /* RADIAL_GRADIENT */
2379  };
2380};
2381var isLinearGradient = function(background) {
2382  return background.type === 1;
2383};
2384var isRadialGradient = function(background) {
2385  return background.type === 2;
2386};
2387var image = {
2388  name: "image",
2389  parse: function(context, value) {
2390    if (value.type === 22) {
2391      var image_1 = {
2392        url: value.value,
2393        type: 0
2394        /* URL */
2395      };
2396      context.cache.addImage(value.value);
2397      return image_1;
2398    }
2399    if (value.type === 18) {
2400      var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
2401      if (typeof imageFunction === "undefined") {
2402        throw new Error('Attempting to parse an unsupported image function "' + value.name + '"');
2403      }
2404      return imageFunction(context, value.values);
2405    }
2406    throw new Error("Unsupported image type " + value.type);
2407  }
2408};
2409function isSupportedImage(value) {
2410  return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);
2411}
2412var SUPPORTED_IMAGE_FUNCTIONS = {
2413  "linear-gradient": linearGradient,
2414  "-moz-linear-gradient": prefixLinearGradient,
2415  "-ms-linear-gradient": prefixLinearGradient,
2416  "-o-linear-gradient": prefixLinearGradient,
2417  "-webkit-linear-gradient": prefixLinearGradient,
2418  "radial-gradient": radialGradient,
2419  "-moz-radial-gradient": prefixRadialGradient,
2420  "-ms-radial-gradient": prefixRadialGradient,
2421  "-o-radial-gradient": prefixRadialGradient,
2422  "-webkit-radial-gradient": prefixRadialGradient,
2423  "-webkit-gradient": webkitGradient
2424};
2425var backgroundImage = {
2426  name: "background-image",
2427  initialValue: "none",
2428  type: 1,
2429  prefix: false,
2430  parse: function(context, tokens) {
2431    if (tokens.length === 0) {
2432      return [];
2433    }
2434    var first = tokens[0];
2435    if (first.type === 20 && first.value === "none") {
2436      return [];
2437    }
2438    return tokens.filter(function(value) {
2439      return nonFunctionArgSeparator(value) && isSupportedImage(value);
2440    }).map(function(value) {
2441      return image.parse(context, value);
2442    });
2443  }
2444};
2445var backgroundOrigin = {
2446  name: "background-origin",
2447  initialValue: "border-box",
2448  prefix: false,
2449  type: 1,
2450  parse: function(_context, tokens) {
2451    return tokens.map(function(token) {
2452      if (isIdentToken(token)) {
2453        switch (token.value) {
2454          case "padding-box":
2455            return 1;
2456          case "content-box":
2457            return 2;
2458        }
2459      }
2460      return 0;
2461    });
2462  }
2463};
2464var backgroundPosition = {
2465  name: "background-position",
2466  initialValue: "0% 0%",
2467  type: 1,
2468  prefix: false,
2469  parse: function(_context, tokens) {
2470    return parseFunctionArgs(tokens).map(function(values) {
2471      return values.filter(isLengthPercentage);
2472    }).map(parseLengthPercentageTuple);
2473  }
2474};
2475var backgroundRepeat = {
2476  name: "background-repeat",
2477  initialValue: "repeat",
2478  prefix: false,
2479  type: 1,
2480  parse: function(_context, tokens) {
2481    return parseFunctionArgs(tokens).map(function(values) {
2482      return values.filter(isIdentToken).map(function(token) {
2483        return token.value;
2484      }).join(" ");
2485    }).map(parseBackgroundRepeat);
2486  }
2487};
2488var parseBackgroundRepeat = function(value) {
2489  switch (value) {
2490    case "no-repeat":
2491      return 1;
2492    case "repeat-x":
2493    case "repeat no-repeat":
2494      return 2;
2495    case "repeat-y":
2496    case "no-repeat repeat":
2497      return 3;
2498    case "repeat":
2499    default:
2500      return 0;
2501  }
2502};
2503var BACKGROUND_SIZE;
2504(function(BACKGROUND_SIZE2) {
2505  BACKGROUND_SIZE2["AUTO"] = "auto";
2506  BACKGROUND_SIZE2["CONTAIN"] = "contain";
2507  BACKGROUND_SIZE2["COVER"] = "cover";
2508})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
2509var backgroundSize = {
2510  name: "background-size",
2511  initialValue: "0",
2512  prefix: false,
2513  type: 1,
2514  parse: function(_context, tokens) {
2515    return parseFunctionArgs(tokens).map(function(values) {
2516      return values.filter(isBackgroundSizeInfoToken);
2517    });
2518  }
2519};
2520var isBackgroundSizeInfoToken = function(value) {
2521  return isIdentToken(value) || isLengthPercentage(value);
2522};
2523var borderColorForSide = function(side) {
2524  return {
2525    name: "border-" + side + "-color",
2526    initialValue: "transparent",
2527    prefix: false,
2528    type: 3,
2529    format: "color"
2530  };
2531};
2532var borderTopColor = borderColorForSide("top");
2533var borderRightColor = borderColorForSide("right");
2534var borderBottomColor = borderColorForSide("bottom");
2535var borderLeftColor = borderColorForSide("left");
2536var borderRadiusForSide = function(side) {
2537  return {
2538    name: "border-radius-" + side,
2539    initialValue: "0 0",
2540    prefix: false,
2541    type: 1,
2542    parse: function(_context, tokens) {
2543      return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
2544    }
2545  };
2546};
2547var borderTopLeftRadius = borderRadiusForSide("top-left");
2548var borderTopRightRadius = borderRadiusForSide("top-right");
2549var borderBottomRightRadius = borderRadiusForSide("bottom-right");
2550var borderBottomLeftRadius = borderRadiusForSide("bottom-left");
2551var borderStyleForSide = function(side) {
2552  return {
2553    name: "border-" + side + "-style",
2554    initialValue: "solid",
2555    prefix: false,
2556    type: 2,
2557    parse: function(_context, style) {
2558      switch (style) {
2559        case "none":
2560          return 0;
2561        case "dashed":
2562          return 2;
2563        case "dotted":
2564          return 3;
2565        case "double":
2566          return 4;
2567      }
2568      return 1;
2569    }
2570  };
2571};
2572var borderTopStyle = borderStyleForSide("top");
2573var borderRightStyle = borderStyleForSide("right");
2574var borderBottomStyle = borderStyleForSide("bottom");
2575var borderLeftStyle = borderStyleForSide("left");
2576var borderWidthForSide = function(side) {
2577  return {
2578    name: "border-" + side + "-width",
2579    initialValue: "0",
2580    type: 0,
2581    prefix: false,
2582    parse: function(_context, token) {
2583      if (isDimensionToken(token)) {
2584        return token.number;
2585      }
2586      return 0;
2587    }
2588  };
2589};
2590var borderTopWidth = borderWidthForSide("top");
2591var borderRightWidth = borderWidthForSide("right");
2592var borderBottomWidth = borderWidthForSide("bottom");
2593var borderLeftWidth = borderWidthForSide("left");
2594var color = {
2595  name: "color",
2596  initialValue: "transparent",
2597  prefix: false,
2598  type: 3,
2599  format: "color"
2600};
2601var direction = {
2602  name: "direction",
2603  initialValue: "ltr",
2604  prefix: false,
2605  type: 2,
2606  parse: function(_context, direction2) {
2607    switch (direction2) {
2608      case "rtl":
2609        return 1;
2610      case "ltr":
2611      default:
2612        return 0;
2613    }
2614  }
2615};
2616var display = {
2617  name: "display",
2618  initialValue: "inline-block",
2619  prefix: false,
2620  type: 1,
2621  parse: function(_context, tokens) {
2622    return tokens.filter(isIdentToken).reduce(
2623      function(bit, token) {
2624        return bit | parseDisplayValue(token.value);
2625      },
2626      0
2627      /* NONE */
2628    );
2629  }
2630};
2631var parseDisplayValue = function(display2) {
2632  switch (display2) {
2633    case "block":
2634    case "-webkit-box":
2635      return 2;
2636    case "inline":
2637      return 4;
2638    case "run-in":
2639      return 8;
2640    case "flow":
2641      return 16;
2642    case "flow-root":
2643      return 32;
2644    case "table":
2645      return 64;
2646    case "flex":
2647    case "-webkit-flex":
2648      return 128;
2649    case "grid":
2650    case "-ms-grid":
2651      return 256;
2652    case "ruby":
2653      return 512;
2654    case "subgrid":
2655      return 1024;
2656    case "list-item":
2657      return 2048;
2658    case "table-row-group":
2659      return 4096;
2660    case "table-header-group":
2661      return 8192;
2662    case "table-footer-group":
2663      return 16384;
2664    case "table-row":
2665      return 32768;
2666    case "table-cell":
2667      return 65536;
2668    case "table-column-group":
2669      return 131072;
2670    case "table-column":
2671      return 262144;
2672    case "table-caption":
2673      return 524288;
2674    case "ruby-base":
2675      return 1048576;
2676    case "ruby-text":
2677      return 2097152;
2678    case "ruby-base-container":
2679      return 4194304;
2680    case "ruby-text-container":
2681      return 8388608;
2682    case "contents":
2683      return 16777216;
2684    case "inline-block":
2685      return 33554432;
2686    case "inline-list-item":
2687      return 67108864;
2688    case "inline-table":
2689      return 134217728;
2690    case "inline-flex":
2691      return 268435456;
2692    case "inline-grid":
2693      return 536870912;
2694  }
2695  return 0;
2696};
2697var float = {
2698  name: "float",
2699  initialValue: "none",
2700  prefix: false,
2701  type: 2,
2702  parse: function(_context, float2) {
2703    switch (float2) {
2704      case "left":
2705        return 1;
2706      case "right":
2707        return 2;
2708      case "inline-start":
2709        return 3;
2710      case "inline-end":
2711        return 4;
2712    }
2713    return 0;
2714  }
2715};
2716var letterSpacing = {
2717  name: "letter-spacing",
2718  initialValue: "0",
2719  prefix: false,
2720  type: 0,
2721  parse: function(_context, token) {
2722    if (token.type === 20 && token.value === "normal") {
2723      return 0;
2724    }
2725    if (token.type === 17) {
2726      return token.number;
2727    }
2728    if (token.type === 15) {
2729      return token.number;
2730    }
2731    return 0;
2732  }
2733};
2734var LINE_BREAK;
2735(function(LINE_BREAK2) {
2736  LINE_BREAK2["NORMAL"] = "normal";
2737  LINE_BREAK2["STRICT"] = "strict";
2738})(LINE_BREAK || (LINE_BREAK = {}));
2739var lineBreak = {
2740  name: "line-break",
2741  initialValue: "normal",
2742  prefix: false,
2743  type: 2,
2744  parse: function(_context, lineBreak2) {
2745    switch (lineBreak2) {
2746      case "strict":
2747        return LINE_BREAK.STRICT;
2748      case "normal":
2749      default:
2750        return LINE_BREAK.NORMAL;
2751    }
2752  }
2753};
2754var lineHeight = {
2755  name: "line-height",
2756  initialValue: "normal",
2757  prefix: false,
2758  type: 4
2759  /* TOKEN_VALUE */
2760};
2761var computeLineHeight = function(token, fontSize2) {
2762  if (isIdentToken(token) && token.value === "normal") {
2763    return 1.2 * fontSize2;
2764  } else if (token.type === 17) {
2765    return fontSize2 * token.number;
2766  } else if (isLengthPercentage(token)) {
2767    return getAbsoluteValue(token, fontSize2);
2768  }
2769  return fontSize2;
2770};
2771var listStyleImage = {
2772  name: "list-style-image",
2773  initialValue: "none",
2774  type: 0,
2775  prefix: false,
2776  parse: function(context, token) {
2777    if (token.type === 20 && token.value === "none") {
2778      return null;
2779    }
2780    return image.parse(context, token);
2781  }
2782};
2783var listStylePosition = {
2784  name: "list-style-position",
2785  initialValue: "outside",
2786  prefix: false,
2787  type: 2,
2788  parse: function(_context, position2) {
2789    switch (position2) {
2790      case "inside":
2791        return 0;
2792      case "outside":
2793      default:
2794        return 1;
2795    }
2796  }
2797};
2798var listStyleType = {
2799  name: "list-style-type",
2800  initialValue: "none",
2801  prefix: false,
2802  type: 2,
2803  parse: function(_context, type) {
2804    switch (type) {
2805      case "disc":
2806        return 0;
2807      case "circle":
2808        return 1;
2809      case "square":
2810        return 2;
2811      case "decimal":
2812        return 3;
2813      case "cjk-decimal":
2814        return 4;
2815      case "decimal-leading-zero":
2816        return 5;
2817      case "lower-roman":
2818        return 6;
2819      case "upper-roman":
2820        return 7;
2821      case "lower-greek":
2822        return 8;
2823      case "lower-alpha":
2824        return 9;
2825      case "upper-alpha":
2826        return 10;
2827      case "arabic-indic":
2828        return 11;
2829      case "armenian":
2830        return 12;
2831      case "bengali":
2832        return 13;
2833      case "cambodian":
2834        return 14;
2835      case "cjk-earthly-branch":
2836        return 15;
2837      case "cjk-heavenly-stem":
2838        return 16;
2839      case "cjk-ideographic":
2840        return 17;
2841      case "devanagari":
2842        return 18;
2843      case "ethiopic-numeric":
2844        return 19;
2845      case "georgian":
2846        return 20;
2847      case "gujarati":
2848        return 21;
2849      case "gurmukhi":
2850        return 22;
2851      case "hebrew":
2852        return 22;
2853      case "hiragana":
2854        return 23;
2855      case "hiragana-iroha":
2856        return 24;
2857      case "japanese-formal":
2858        return 25;
2859      case "japanese-informal":
2860        return 26;
2861      case "kannada":
2862        return 27;
2863      case "katakana":
2864        return 28;
2865      case "katakana-iroha":
2866        return 29;
2867      case "khmer":
2868        return 30;
2869      case "korean-hangul-formal":
2870        return 31;
2871      case "korean-hanja-formal":
2872        return 32;
2873      case "korean-hanja-informal":
2874        return 33;
2875      case "lao":
2876        return 34;
2877      case "lower-armenian":
2878        return 35;
2879      case "malayalam":
2880        return 36;
2881      case "mongolian":
2882        return 37;
2883      case "myanmar":
2884        return 38;
2885      case "oriya":
2886        return 39;
2887      case "persian":
2888        return 40;
2889      case "simp-chinese-formal":
2890        return 41;
2891      case "simp-chinese-informal":
2892        return 42;
2893      case "tamil":
2894        return 43;
2895      case "telugu":
2896        return 44;
2897      case "thai":
2898        return 45;
2899      case "tibetan":
2900        return 46;
2901      case "trad-chinese-formal":
2902        return 47;
2903      case "trad-chinese-informal":
2904        return 48;
2905      case "upper-armenian":
2906        return 49;
2907      case "disclosure-open":
2908        return 50;
2909      case "disclosure-closed":
2910        return 51;
2911      case "none":
2912      default:
2913        return -1;
2914    }
2915  }
2916};
2917var marginForSide = function(side) {
2918  return {
2919    name: "margin-" + side,
2920    initialValue: "0",
2921    prefix: false,
2922    type: 4
2923    /* TOKEN_VALUE */
2924  };
2925};
2926var marginTop = marginForSide("top");
2927var marginRight = marginForSide("right");
2928var marginBottom = marginForSide("bottom");
2929var marginLeft = marginForSide("left");
2930var overflow = {
2931  name: "overflow",
2932  initialValue: "visible",
2933  prefix: false,
2934  type: 1,
2935  parse: function(_context, tokens) {
2936    return tokens.filter(isIdentToken).map(function(overflow2) {
2937      switch (overflow2.value) {
2938        case "hidden":
2939          return 1;
2940        case "scroll":
2941          return 2;
2942        case "clip":
2943          return 3;
2944        case "auto":
2945          return 4;
2946        case "visible":
2947        default:
2948          return 0;
2949      }
2950    });
2951  }
2952};
2953var overflowWrap = {
2954  name: "overflow-wrap",
2955  initialValue: "normal",
2956  prefix: false,
2957  type: 2,
2958  parse: function(_context, overflow2) {
2959    switch (overflow2) {
2960      case "break-word":
2961        return "break-word";
2962      case "normal":
2963      default:
2964        return "normal";
2965    }
2966  }
2967};
2968var paddingForSide = function(side) {
2969  return {
2970    name: "padding-" + side,
2971    initialValue: "0",
2972    prefix: false,
2973    type: 3,
2974    format: "length-percentage"
2975  };
2976};
2977var paddingTop = paddingForSide("top");
2978var paddingRight = paddingForSide("right");
2979var paddingBottom = paddingForSide("bottom");
2980var paddingLeft = paddingForSide("left");
2981var textAlign = {
2982  name: "text-align",
2983  initialValue: "left",
2984  prefix: false,
2985  type: 2,
2986  parse: function(_context, textAlign2) {
2987    switch (textAlign2) {
2988      case "right":
2989        return 2;
2990      case "center":
2991      case "justify":
2992        return 1;
2993      case "left":
2994      default:
2995        return 0;
2996    }
2997  }
2998};
2999var position = {
3000  name: "position",
3001  initialValue: "static",
3002  prefix: false,
3003  type: 2,
3004  parse: function(_context, position2) {
3005    switch (position2) {
3006      case "relative":
3007        return 1;
3008      case "absolute":
3009        return 2;
3010      case "fixed":
3011        return 3;
3012      case "sticky":
3013        return 4;
3014    }
3015    return 0;
3016  }
3017};
3018var textShadow = {
3019  name: "text-shadow",
3020  initialValue: "none",
3021  type: 1,
3022  prefix: false,
3023  parse: function(context, tokens) {
3024    if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
3025      return [];
3026    }
3027    return parseFunctionArgs(tokens).map(function(values) {
3028      var shadow = {
3029        color: COLORS.TRANSPARENT,
3030        offsetX: ZERO_LENGTH,
3031        offsetY: ZERO_LENGTH,
3032        blur: ZERO_LENGTH
3033      };
3034      var c = 0;
3035      for (var i = 0; i < values.length; i++) {
3036        var token = values[i];
3037        if (isLength(token)) {
3038          if (c === 0) {
3039            shadow.offsetX = token;
3040          } else if (c === 1) {
3041            shadow.offsetY = token;
3042          } else {
3043            shadow.blur = token;
3044          }
3045          c++;
3046        } else {
3047          shadow.color = color$1.parse(context, token);
3048        }
3049      }
3050      return shadow;
3051    });
3052  }
3053};
3054var textTransform = {
3055  name: "text-transform",
3056  initialValue: "none",
3057  prefix: false,
3058  type: 2,
3059  parse: function(_context, textTransform2) {
3060    switch (textTransform2) {
3061      case "uppercase":
3062        return 2;
3063      case "lowercase":
3064        return 1;
3065      case "capitalize":
3066        return 3;
3067    }
3068    return 0;
3069  }
3070};
3071var transform$1 = {
3072  name: "transform",
3073  initialValue: "none",
3074  prefix: true,
3075  type: 0,
3076  parse: function(_context, token) {
3077    if (token.type === 20 && token.value === "none") {
3078      return null;
3079    }
3080    if (token.type === 18) {
3081      var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
3082      if (typeof transformFunction === "undefined") {
3083        throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"');
3084      }
3085      return transformFunction(token.values);
3086    }
3087    return null;
3088  }
3089};
3090var matrix = function(args) {
3091  var values = args.filter(function(arg) {
3092    return arg.type === 17;
3093  }).map(function(arg) {
3094    return arg.number;
3095  });
3096  return values.length === 6 ? values : null;
3097};
3098var matrix3d = function(args) {
3099  var values = args.filter(function(arg) {
3100    return arg.type === 17;
3101  }).map(function(arg) {
3102    return arg.number;
3103  });
3104  var a1 = values[0], b1 = values[1];
3105  values[2];
3106  values[3];
3107  var a2 = values[4], b2 = values[5];
3108  values[6];
3109  values[7];
3110  values[8];
3111  values[9];
3112  values[10];
3113  values[11];
3114  var a4 = values[12], b4 = values[13];
3115  values[14];
3116  values[15];
3117  return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
3118};
3119var SUPPORTED_TRANSFORM_FUNCTIONS = {
3120  matrix,
3121  matrix3d
3122};
3123var DEFAULT_VALUE = {
3124  type: 16,
3125  number: 50,
3126  flags: FLAG_INTEGER
3127};
3128var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
3129var transformOrigin = {
3130  name: "transform-origin",
3131  initialValue: "50% 50%",
3132  prefix: true,
3133  type: 1,
3134  parse: function(_context, tokens) {
3135    var origins = tokens.filter(isLengthPercentage);
3136    if (origins.length !== 2) {
3137      return DEFAULT;
3138    }
3139    return [origins[0], origins[1]];
3140  }
3141};
3142var visibility = {
3143  name: "visible",
3144  initialValue: "none",
3145  prefix: false,
3146  type: 2,
3147  parse: function(_context, visibility2) {
3148    switch (visibility2) {
3149      case "hidden":
3150        return 1;
3151      case "collapse":
3152        return 2;
3153      case "visible":
3154      default:
3155        return 0;
3156    }
3157  }
3158};
3159var WORD_BREAK;
3160(function(WORD_BREAK2) {
3161  WORD_BREAK2["NORMAL"] = "normal";
3162  WORD_BREAK2["BREAK_ALL"] = "break-all";
3163  WORD_BREAK2["KEEP_ALL"] = "keep-all";
3164})(WORD_BREAK || (WORD_BREAK = {}));
3165var wordBreak = {
3166  name: "word-break",
3167  initialValue: "normal",
3168  prefix: false,
3169  type: 2,
3170  parse: function(_context, wordBreak2) {
3171    switch (wordBreak2) {
3172      case "break-all":
3173        return WORD_BREAK.BREAK_ALL;
3174      case "keep-all":
3175        return WORD_BREAK.KEEP_ALL;
3176      case "normal":
3177      default:
3178        return WORD_BREAK.NORMAL;
3179    }
3180  }
3181};
3182var zIndex = {
3183  name: "z-index",
3184  initialValue: "auto",
3185  prefix: false,
3186  type: 0,
3187  parse: function(_context, token) {
3188    if (token.type === 20) {
3189      return { auto: true, order: 0 };
3190    }
3191    if (isNumberToken(token)) {
3192      return { auto: false, order: token.number };
3193    }
3194    throw new Error("Invalid z-index number parsed");
3195  }
3196};
3197var time = {
3198  name: "time",
3199  parse: function(_context, value) {
3200    if (value.type === 15) {
3201      switch (value.unit.toLowerCase()) {
3202        case "s":
3203          return 1e3 * value.number;
3204        case "ms":
3205          return value.number;
3206      }
3207    }
3208    throw new Error("Unsupported time type");
3209  }
3210};
3211var opacity = {
3212  name: "opacity",
3213  initialValue: "1",
3214  type: 0,
3215  prefix: false,
3216  parse: function(_context, token) {
3217    if (isNumberToken(token)) {
3218      return token.number;
3219    }
3220    return 1;
3221  }
3222};
3223var textDecorationColor = {
3224  name: "text-decoration-color",
3225  initialValue: "transparent",
3226  prefix: false,
3227  type: 3,
3228  format: "color"
3229};
3230var textDecorationLine = {
3231  name: "text-decoration-line",
3232  initialValue: "none",
3233  prefix: false,
3234  type: 1,
3235  parse: function(_context, tokens) {
3236    return tokens.filter(isIdentToken).map(function(token) {
3237      switch (token.value) {
3238        case "underline":
3239          return 1;
3240        case "overline":
3241          return 2;
3242        case "line-through":
3243          return 3;
3244        case "none":
3245          return 4;
3246      }
3247      return 0;
3248    }).filter(function(line) {
3249      return line !== 0;
3250    });
3251  }
3252};
3253var fontFamily = {
3254  name: "font-family",
3255  initialValue: "",
3256  prefix: false,
3257  type: 1,
3258  parse: function(_context, tokens) {
3259    var accumulator = [];
3260    var results = [];
3261    tokens.forEach(function(token) {
3262      switch (token.type) {
3263        case 20:
3264        case 0:
3265          accumulator.push(token.value);
3266          break;
3267        case 17:
3268          accumulator.push(token.number.toString());
3269          break;
3270        case 4:
3271          results.push(accumulator.join(" "));
3272          accumulator.length = 0;
3273          break;
3274      }
3275    });
3276    if (accumulator.length) {
3277      results.push(accumulator.join(" "));
3278    }
3279    return results.map(function(result) {
3280      return result.indexOf(" ") === -1 ? result : "'" + result + "'";
3281    });
3282  }
3283};
3284var fontSize = {
3285  name: "font-size",
3286  initialValue: "0",
3287  prefix: false,
3288  type: 3,
3289  format: "length"
3290};
3291var fontWeight = {
3292  name: "font-weight",
3293  initialValue: "normal",
3294  type: 0,
3295  prefix: false,
3296  parse: function(_context, token) {
3297    if (isNumberToken(token)) {
3298      return token.number;
3299    }
3300    if (isIdentToken(token)) {
3301      switch (token.value) {
3302        case "bold":
3303          return 700;
3304        case "normal":
3305        default:
3306          return 400;
3307      }
3308    }
3309    return 400;
3310  }
3311};
3312var fontVariant = {
3313  name: "font-variant",
3314  initialValue: "none",
3315  type: 1,
3316  prefix: false,
3317  parse: function(_context, tokens) {
3318    return tokens.filter(isIdentToken).map(function(token) {
3319      return token.value;
3320    });
3321  }
3322};
3323var fontStyle = {
3324  name: "font-style",
3325  initialValue: "normal",
3326  prefix: false,
3327  type: 2,
3328  parse: function(_context, overflow2) {
3329    switch (overflow2) {
3330      case "oblique":
3331        return "oblique";
3332      case "italic":
3333        return "italic";
3334      case "normal":
3335      default:
3336        return "normal";
3337    }
3338  }
3339};
3340var contains = function(bit, value) {
3341  return (bit & value) !== 0;
3342};
3343var content = {
3344  name: "content",
3345  initialValue: "none",
3346  type: 1,
3347  prefix: false,
3348  parse: function(_context, tokens) {
3349    if (tokens.length === 0) {
3350      return [];
3351    }
3352    var first = tokens[0];
3353    if (first.type === 20 && first.value === "none") {
3354      return [];
3355    }
3356    return tokens;
3357  }
3358};
3359var counterIncrement = {
3360  name: "counter-increment",
3361  initialValue: "none",
3362  prefix: true,
3363  type: 1,
3364  parse: function(_context, tokens) {
3365    if (tokens.length === 0) {
3366      return null;
3367    }
3368    var first = tokens[0];
3369    if (first.type === 20 && first.value === "none") {
3370      return null;
3371    }
3372    var increments = [];
3373    var filtered = tokens.filter(nonWhiteSpace);
3374    for (var i = 0; i < filtered.length; i++) {
3375      var counter = filtered[i];
3376      var next = filtered[i + 1];
3377      if (counter.type === 20) {
3378        var increment = next && isNumberToken(next) ? next.number : 1;
3379        increments.push({ counter: counter.value, increment });
3380      }
3381    }
3382    return increments;
3383  }
3384};
3385var counterReset = {
3386  name: "counter-reset",
3387  initialValue: "none",
3388  prefix: true,
3389  type: 1,
3390  parse: function(_context, tokens) {
3391    if (tokens.length === 0) {
3392      return [];
3393    }
3394    var resets = [];
3395    var filtered = tokens.filter(nonWhiteSpace);
3396    for (var i = 0; i < filtered.length; i++) {
3397      var counter = filtered[i];
3398      var next = filtered[i + 1];
3399      if (isIdentToken(counter) && counter.value !== "none") {
3400        var reset = next && isNumberToken(next) ? next.number : 0;
3401        resets.push({ counter: counter.value, reset });
3402      }
3403    }
3404    return resets;
3405  }
3406};
3407var duration = {
3408  name: "duration",
3409  initialValue: "0s",
3410  prefix: false,
3411  type: 1,
3412  parse: function(context, tokens) {
3413    return tokens.filter(isDimensionToken).map(function(token) {
3414      return time.parse(context, token);
3415    });
3416  }
3417};
3418var quotes = {
3419  name: "quotes",
3420  initialValue: "none",
3421  prefix: true,
3422  type: 1,
3423  parse: function(_context, tokens) {
3424    if (tokens.length === 0) {
3425      return null;
3426    }
3427    var first = tokens[0];
3428    if (first.type === 20 && first.value === "none") {
3429      return null;
3430    }
3431    var quotes2 = [];
3432    var filtered = tokens.filter(isStringToken);
3433    if (filtered.length % 2 !== 0) {
3434      return null;
3435    }
3436    for (var i = 0; i < filtered.length; i += 2) {
3437      var open_1 = filtered[i].value;
3438      var close_1 = filtered[i + 1].value;
3439      quotes2.push({ open: open_1, close: close_1 });
3440    }
3441    return quotes2;
3442  }
3443};
3444var getQuote = function(quotes2, depth, open) {
3445  if (!quotes2) {
3446    return "";
3447  }
3448  var quote = quotes2[Math.min(depth, quotes2.length - 1)];
3449  if (!quote) {
3450    return "";
3451  }
3452  return open ? quote.open : quote.close;
3453};
3454var boxShadow = {
3455  name: "box-shadow",
3456  initialValue: "none",
3457  type: 1,
3458  prefix: false,
3459  parse: function(context, tokens) {
3460    if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
3461      return [];
3462    }
3463    return parseFunctionArgs(tokens).map(function(values) {
3464      var shadow = {
3465        color: 255,
3466        offsetX: ZERO_LENGTH,
3467        offsetY: ZERO_LENGTH,
3468        blur: ZERO_LENGTH,
3469        spread: ZERO_LENGTH,
3470        inset: false
3471      };
3472      var c = 0;
3473      for (var i = 0; i < values.length; i++) {
3474        var token = values[i];
3475        if (isIdentWithValue(token, "inset")) {
3476          shadow.inset = true;
3477        } else if (isLength(token)) {
3478          if (c === 0) {
3479            shadow.offsetX = token;
3480          } else if (c === 1) {
3481            shadow.offsetY = token;
3482          } else if (c === 2) {
3483            shadow.blur = token;
3484          } else {
3485            shadow.spread = token;
3486          }
3487          c++;
3488        } else {
3489          shadow.color = color$1.parse(context, token);
3490        }
3491      }
3492      return shadow;
3493    });
3494  }
3495};
3496var paintOrder = {
3497  name: "paint-order",
3498  initialValue: "normal",
3499  prefix: false,
3500  type: 1,
3501  parse: function(_context, tokens) {
3502    var DEFAULT_VALUE2 = [
3503      0,
3504      1,
3505      2
3506      /* MARKERS */
3507    ];
3508    var layers = [];
3509    tokens.filter(isIdentToken).forEach(function(token) {
3510      switch (token.value) {
3511        case "stroke":
3512          layers.push(
3513            1
3514            /* STROKE */
3515          );
3516          break;
3517        case "fill":
3518          layers.push(
3519            0
3520            /* FILL */
3521          );
3522          break;
3523        case "markers":
3524          layers.push(
3525            2
3526            /* MARKERS */
3527          );
3528          break;
3529      }
3530    });
3531    DEFAULT_VALUE2.forEach(function(value) {
3532      if (layers.indexOf(value) === -1) {
3533        layers.push(value);
3534      }
3535    });
3536    return layers;
3537  }
3538};
3539var webkitTextStrokeColor = {
3540  name: "-webkit-text-stroke-color",
3541  initialValue: "currentcolor",
3542  prefix: false,
3543  type: 3,
3544  format: "color"
3545};
3546var webkitTextStrokeWidth = {
3547  name: "-webkit-text-stroke-width",
3548  initialValue: "0",
3549  type: 0,
3550  prefix: false,
3551  parse: function(_context, token) {
3552    if (isDimensionToken(token)) {
3553      return token.number;
3554    }
3555    return 0;
3556  }
3557};
3558var CSSParsedDeclaration = (
3559  /** @class */
3560  
vendor: 10,839 bytes, lines 3560-3792
3560function() {
3561    function CSSParsedDeclaration2(context, declaration) {
3562      var _a, _b;
3563      this.animationDuration = parse(context, duration, declaration.animationDuration);
3564      this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
3565      this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
3566      this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
3567      this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
3568      this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
3569      this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
3570      this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
3571      this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
3572      this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
3573      this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
3574      this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
3575      this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
3576      this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
3577      this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
3578      this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
3579      this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
3580      this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
3581      this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
3582      this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
3583      this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
3584      this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
3585      this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
3586      this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
3587      this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
3588      this.color = parse(context, color, declaration.color);
3589      this.direction = parse(context, direction, declaration.direction);
3590      this.display = parse(context, display, declaration.display);
3591      this.float = parse(context, float, declaration.cssFloat);
3592      this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
3593      this.fontSize = parse(context, fontSize, declaration.fontSize);
3594      this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
3595      this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
3596      this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
3597      this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
3598      this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
3599      this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
3600      this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
3601      this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
3602      this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
3603      this.marginTop = parse(context, marginTop, declaration.marginTop);
3604      this.marginRight = parse(context, marginRight, declaration.marginRight);
3605      this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
3606      this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
3607      this.opacity = parse(context, opacity, declaration.opacity);
3608      var overflowTuple = parse(context, overflow, declaration.overflow);
3609      this.overflowX = overflowTuple[0];
3610      this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
3611      this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
3612      this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
3613      this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
3614      this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
3615      this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
3616      this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
3617      this.position = parse(context, position, declaration.position);
3618      this.textAlign = parse(context, textAlign, declaration.textAlign);
3619      this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
3620      this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
3621      this.textShadow = parse(context, textShadow, declaration.textShadow);
3622      this.textTransform = parse(context, textTransform, declaration.textTransform);
3623      this.transform = parse(context, transform$1, declaration.transform);
3624      this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
3625      this.visibility = parse(context, visibility, declaration.visibility);
3626      this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
3627      this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
3628      this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
3629      this.zIndex = parse(context, zIndex, declaration.zIndex);
3630    }
3631    CSSParsedDeclaration2.prototype.isVisible = function() {
3632      return this.display > 0 && this.opacity > 0 && this.visibility === 0;
3633    };
3634    CSSParsedDeclaration2.prototype.isTransparent = function() {
3635      return isTransparent(this.backgroundColor);
3636    };
3637    CSSParsedDeclaration2.prototype.isTransformed = function() {
3638      return this.transform !== null;
3639    };
3640    CSSParsedDeclaration2.prototype.isPositioned = function() {
3641      return this.position !== 0;
3642    };
3643    CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() {
3644      return this.isPositioned() && !this.zIndex.auto;
3645    };
3646    CSSParsedDeclaration2.prototype.isFloating = function() {
3647      return this.float !== 0;
3648    };
3649    CSSParsedDeclaration2.prototype.isInlineLevel = function() {
3650      return contains(
3651        this.display,
3652        4
3653        /* INLINE */
3654      ) || contains(
3655        this.display,
3656        33554432
3657        /* INLINE_BLOCK */
3658      ) || contains(
3659        this.display,
3660        268435456
3661        /* INLINE_FLEX */
3662      ) || contains(
3663        this.display,
3664        536870912
3665        /* INLINE_GRID */
3666      ) || contains(
3667        this.display,
3668        67108864
3669        /* INLINE_LIST_ITEM */
3670      ) || contains(
3671        this.display,
3672        134217728
3673        /* INLINE_TABLE */
3674      );
3675    };
3676    return CSSParsedDeclaration2;
3677  }()
3678);
3679var CSSParsedPseudoDeclaration = (
3680  /** @class */
3681  /* @__PURE__ */ function() {
3682    function CSSParsedPseudoDeclaration2(context, declaration) {
3683      this.content = parse(context, content, declaration.content);
3684      this.quotes = parse(context, quotes, declaration.quotes);
3685    }
3686    return CSSParsedPseudoDeclaration2;
3687  }()
3688);
3689var CSSParsedCounterDeclaration = (
3690  /** @class */
3691  /* @__PURE__ */ function() {
3692    function CSSParsedCounterDeclaration2(context, declaration) {
3693      this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
3694      this.counterReset = parse(context, counterReset, declaration.counterReset);
3695    }
3696    return CSSParsedCounterDeclaration2;
3697  }()
3698);
3699var parse = function(context, descriptor, style) {
3700  var tokenizer = new Tokenizer();
3701  var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue;
3702  tokenizer.write(value);
3703  var parser = new Parser(tokenizer.read());
3704  switch (descriptor.type) {
3705    case 2:
3706      var token = parser.parseComponentValue();
3707      return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
3708    case 0:
3709      return descriptor.parse(context, parser.parseComponentValue());
3710    case 1:
3711      return descriptor.parse(context, parser.parseComponentValues());
3712    case 4:
3713      return parser.parseComponentValue();
3714    case 3:
3715      switch (descriptor.format) {
3716        case "angle":
3717          return angle.parse(context, parser.parseComponentValue());
3718        case "color":
3719          return color$1.parse(context, parser.parseComponentValue());
3720        case "image":
3721          return image.parse(context, parser.parseComponentValue());
3722        case "length":
3723          var length_1 = parser.parseComponentValue();
3724          return isLength(length_1) ? length_1 : ZERO_LENGTH;
3725        case "length-percentage":
3726          var value_1 = parser.parseComponentValue();
3727          return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
3728        case "time":
3729          return time.parse(context, parser.parseComponentValue());
3730      }
3731      break;
3732  }
3733};
3734var elementDebuggerAttribute = "data-html2canvas-debug";
3735var getElementDebugType = function(element) {
3736  var attribute = element.getAttribute(elementDebuggerAttribute);
3737  switch (attribute) {
3738    case "all":
3739      return 1;
3740    case "clone":
3741      return 2;
3742    case "parse":
3743      return 3;
3744    case "render":
3745      return 4;
3746    default:
3747      return 0;
3748  }
3749};
3750var isDebugging = function(element, type) {
3751  var elementType = getElementDebugType(element);
3752  return elementType === 1 || type === elementType;
3753};
3754var ElementContainer = (
3755  /** @class */
3756  /* @__PURE__ */ function() {
3757    function ElementContainer2(context, element) {
3758      this.context = context;
3759      this.textNodes = [];
3760      this.elements = [];
3761      this.flags = 0;
3762      if (isDebugging(
3763        element,
3764        3
3765        /* PARSE */
3766      )) {
3767        debugger;
3768      }
3769      this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
3770      if (isHTMLElementNode(element)) {
3771        if (this.styles.animationDuration.some(function(duration2) {
3772          return duration2 > 0;
3773        })) {
3774          element.style.animationDuration = "0s";
3775        }
3776        if (this.styles.transform !== null) {
3777          element.style.transform = "none";
3778        }
3779      }
3780      this.bounds = parseBounds(this.context, element);
3781      if (isDebugging(
3782        element,
3783        4
3784        /* RENDER */
3785      )) {
3786        this.flags |= 16;
3787      }
3788    }
3789    return ElementContainer2;
3790  }()
3791);
3792var base64
vendor: 18,221 bytes, line 3792
3792 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAAB
vendor: 11,413 bytes, lines 3792-3873
3792QAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=";
3793var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
3794var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
3795for (var i$1 = 0; i$1 < chars$1.length; i$1++) {
3796  lookup$1[chars$1.charCodeAt(i$1)] = i$1;
3797}
3798var decode = function(base642) {
3799  var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
3800  if (base642[base642.length - 1] === "=") {
3801    bufferLength--;
3802    if (base642[base642.length - 2] === "=") {
3803      bufferLength--;
3804    }
3805  }
3806  var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
3807  var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
3808  for (i = 0; i < len; i += 4) {
3809    encoded1 = lookup$1[base642.charCodeAt(i)];
3810    encoded2 = lookup$1[base642.charCodeAt(i + 1)];
3811    encoded3 = lookup$1[base642.charCodeAt(i + 2)];
3812    encoded4 = lookup$1[base642.charCodeAt(i + 3)];
3813    bytes[p++] = encoded1 << 2 | encoded2 >> 4;
3814    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
3815    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
3816  }
3817  return buffer;
3818};
3819var polyUint16Array = function(buffer) {
3820  var length = buffer.length;
3821  var bytes = [];
3822  for (var i = 0; i < length; i += 2) {
3823    bytes.push(buffer[i + 1] << 8 | buffer[i]);
3824  }
3825  return bytes;
3826};
3827var polyUint32Array = function(buffer) {
3828  var length = buffer.length;
3829  var bytes = [];
3830  for (var i = 0; i < length; i += 4) {
3831    bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
3832  }
3833  return bytes;
3834};
3835var UTRIE2_SHIFT_2 = 5;
3836var UTRIE2_SHIFT_1 = 6 + 5;
3837var UTRIE2_INDEX_SHIFT = 2;
3838var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
3839var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2;
3840var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
3841var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
3842var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2;
3843var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
3844var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
3845var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
3846var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
3847var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1;
3848var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
3849var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
3850var slice16 = function(view, start, end) {
3851  if (view.slice) {
3852    return view.slice(start, end);
3853  }
3854  return new Uint16Array(Array.prototype.slice.call(view, start, end));
3855};
3856var slice32 = function(view, start, end) {
3857  if (view.slice) {
3858    return view.slice(start, end);
3859  }
3860  return new Uint32Array(Array.prototype.slice.call(view, start, end));
3861};
3862var createTrieFromBase64 = function(base642, _byteLength) {
3863  var buffer = decode(base642);
3864  var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
3865  var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
3866  var headerLength = 24;
3867  var index = slice16(view16, headerLength / 2, view32[4] / 2);
3868  var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
3869  return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
3870};
3871var Trie = (
3872  /** @class */
3873  
vendor: 1,453 bytes, lines 3873-3910
3873function() {
3874    function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
3875      this.initialValue = initialValue;
3876      this.errorValue = errorValue;
3877      this.highStart = highStart;
3878      this.highValueIndex = highValueIndex;
3879      this.index = index;
3880      this.data = data;
3881    }
3882    Trie2.prototype.get = function(codePoint) {
3883      var ix;
3884      if (codePoint >= 0) {
3885        if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
3886          ix = this.index[codePoint >> UTRIE2_SHIFT_2];
3887          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3888          return this.data[ix];
3889        }
3890        if (codePoint <= 65535) {
3891          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)];
3892          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3893          return this.data[ix];
3894        }
3895        if (codePoint < this.highStart) {
3896          ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
3897          ix = this.index[ix];
3898          ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
3899          ix = this.index[ix];
3900          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3901          return this.data[ix];
3902        }
3903        if (codePoint <= 1114111) {
3904          return this.data[this.highValueIndex];
3905        }
3906      }
3907      return this.errorValue;
3908    };
3909    return Trie2;
3910  }
vendor: 10,674 bytes, lines 3910-4251
3910()
3911);
3912var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
3913var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
3914for (var i = 0; i < chars.length; i++) {
3915  lookup[chars.charCodeAt(i)] = i;
3916}
3917var Prepend = 1;
3918var CR = 2;
3919var LF = 3;
3920var Control = 4;
3921var Extend = 5;
3922var SpacingMark = 7;
3923var L = 8;
3924var V = 9;
3925var T = 10;
3926var LV = 11;
3927var LVT = 12;
3928var ZWJ = 13;
3929var Extended_Pictographic = 14;
3930var RI = 15;
3931var toCodePoints = function(str) {
3932  var codePoints = [];
3933  var i = 0;
3934  var length = str.length;
3935  while (i < length) {
3936    var value = str.charCodeAt(i++);
3937    if (value >= 55296 && value <= 56319 && i < length) {
3938      var extra = str.charCodeAt(i++);
3939      if ((extra & 64512) === 56320) {
3940        codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
3941      } else {
3942        codePoints.push(value);
3943        i--;
3944      }
3945    } else {
3946      codePoints.push(value);
3947    }
3948  }
3949  return codePoints;
3950};
3951var fromCodePoint = function() {
3952  var codePoints = [];
3953  for (var _i = 0; _i < arguments.length; _i++) {
3954    codePoints[_i] = arguments[_i];
3955  }
3956  if (String.fromCodePoint) {
3957    return String.fromCodePoint.apply(String, codePoints);
3958  }
3959  var length = codePoints.length;
3960  if (!length) {
3961    return "";
3962  }
3963  var codeUnits = [];
3964  var index = -1;
3965  var result = "";
3966  while (++index < length) {
3967    var codePoint = codePoints[index];
3968    if (codePoint <= 65535) {
3969      codeUnits.push(codePoint);
3970    } else {
3971      codePoint -= 65536;
3972      codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
3973    }
3974    if (index + 1 === length || codeUnits.length > 16384) {
3975      result += String.fromCharCode.apply(String, codeUnits);
3976      codeUnits.length = 0;
3977    }
3978  }
3979  return result;
3980};
3981var UnicodeTrie = createTrieFromBase64(base64);
3982var BREAK_NOT_ALLOWED = "×";
3983var BREAK_ALLOWED = "÷";
3984var codePointToClass = function(codePoint) {
3985  return UnicodeTrie.get(codePoint);
3986};
3987var _graphemeBreakAtIndex = function(_codePoints, classTypes, index) {
3988  var prevIndex = index - 2;
3989  var prev = classTypes[prevIndex];
3990  var current = classTypes[index - 1];
3991  var next = classTypes[index];
3992  if (current === CR && next === LF) {
3993    return BREAK_NOT_ALLOWED;
3994  }
3995  if (current === CR || current === LF || current === Control) {
3996    return BREAK_ALLOWED;
3997  }
3998  if (next === CR || next === LF || next === Control) {
3999    return BREAK_ALLOWED;
4000  }
4001  if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
4002    return BREAK_NOT_ALLOWED;
4003  }
4004  if ((current === LV || current === V) && (next === V || next === T)) {
4005    return BREAK_NOT_ALLOWED;
4006  }
4007  if ((current === LVT || current === T) && next === T) {
4008    return BREAK_NOT_ALLOWED;
4009  }
4010  if (next === ZWJ || next === Extend) {
4011    return BREAK_NOT_ALLOWED;
4012  }
4013  if (next === SpacingMark) {
4014    return BREAK_NOT_ALLOWED;
4015  }
4016  if (current === Prepend) {
4017    return BREAK_NOT_ALLOWED;
4018  }
4019  if (current === ZWJ && next === Extended_Pictographic) {
4020    while (prev === Extend) {
4021      prev = classTypes[--prevIndex];
4022    }
4023    if (prev === Extended_Pictographic) {
4024      return BREAK_NOT_ALLOWED;
4025    }
4026  }
4027  if (current === RI && next === RI) {
4028    var countRI = 0;
4029    while (prev === RI) {
4030      countRI++;
4031      prev = classTypes[--prevIndex];
4032    }
4033    if (countRI % 2 === 0) {
4034      return BREAK_NOT_ALLOWED;
4035    }
4036  }
4037  return BREAK_ALLOWED;
4038};
4039var GraphemeBreaker = function(str) {
4040  var codePoints = toCodePoints(str);
4041  var length = codePoints.length;
4042  var index = 0;
4043  var lastEnd = 0;
4044  var classTypes = codePoints.map(codePointToClass);
4045  return {
4046    next: function() {
4047      if (index >= length) {
4048        return { done: true, value: null };
4049      }
4050      var graphemeBreak = BREAK_NOT_ALLOWED;
4051      while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {
4052      }
4053      if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
4054        var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
4055        lastEnd = index;
4056        return { value, done: false };
4057      }
4058      return { done: true, value: null };
4059    }
4060  };
4061};
4062var splitGraphemes = function(str) {
4063  var breaker = GraphemeBreaker(str);
4064  var graphemes = [];
4065  var bk;
4066  while (!(bk = breaker.next()).done) {
4067    if (bk.value) {
4068      graphemes.push(bk.value.slice());
4069    }
4070  }
4071  return graphemes;
4072};
4073var testRangeBounds = function(document2) {
4074  var TEST_HEIGHT = 123;
4075  if (document2.createRange) {
4076    var range = document2.createRange();
4077    if (range.getBoundingClientRect) {
4078      var testElement = document2.createElement("boundtest");
4079      testElement.style.height = TEST_HEIGHT + "px";
4080      testElement.style.display = "block";
4081      document2.body.appendChild(testElement);
4082      range.selectNode(testElement);
4083      var rangeBounds = range.getBoundingClientRect();
4084      var rangeHeight = Math.round(rangeBounds.height);
4085      document2.body.removeChild(testElement);
4086      if (rangeHeight === TEST_HEIGHT) {
4087        return true;
4088      }
4089    }
4090  }
4091  return false;
4092};
4093var testIOSLineBreak = function(document2) {
4094  var testElement = document2.createElement("boundtest");
4095  testElement.style.width = "50px";
4096  testElement.style.display = "block";
4097  testElement.style.fontSize = "12px";
4098  testElement.style.letterSpacing = "0px";
4099  testElement.style.wordSpacing = "0px";
4100  document2.body.appendChild(testElement);
4101  var range = document2.createRange();
4102  testElement.innerHTML = typeof "".repeat === "function" ? "&#128104;".repeat(10) : "";
4103  var node = testElement.firstChild;
4104  var textList = toCodePoints$1(node.data).map(function(i) {
4105    return fromCodePoint$1(i);
4106  });
4107  var offset = 0;
4108  var prev = {};
4109  var supports = textList.every(function(text, i) {
4110    range.setStart(node, offset);
4111    range.setEnd(node, offset + text.length);
4112    var rect = range.getBoundingClientRect();
4113    offset += text.length;
4114    var boundAhead = rect.x > prev.x || rect.y > prev.y;
4115    prev = rect;
4116    if (i === 0) {
4117      return true;
4118    }
4119    return boundAhead;
4120  });
4121  document2.body.removeChild(testElement);
4122  return supports;
4123};
4124var testCORS = function() {
4125  return typeof new Image().crossOrigin !== "undefined";
4126};
4127var testResponseType = function() {
4128  return typeof new XMLHttpRequest().responseType === "string";
4129};
4130var testSVG = function(document2) {
4131  var img = new Image();
4132  var canvas = document2.createElement("canvas");
4133  var ctx = canvas.getContext("2d");
4134  if (!ctx) {
4135    return false;
4136  }
4137  img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
4138  try {
4139    ctx.drawImage(img, 0, 0);
4140    canvas.toDataURL();
4141  } catch (e2) {
4142    return false;
4143  }
4144  return true;
4145};
4146var isGreenPixel = function(data) {
4147  return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
4148};
4149var testForeignObject = function(document2) {
4150  var canvas = document2.createElement("canvas");
4151  var size = 100;
4152  canvas.width = size;
4153  canvas.height = size;
4154  var ctx = canvas.getContext("2d");
4155  if (!ctx) {
4156    return Promise.reject(false);
4157  }
4158  ctx.fillStyle = "rgb(0, 255, 0)";
4159  ctx.fillRect(0, 0, size, size);
4160  var img = new Image();
4161  var greenImageSrc = canvas.toDataURL();
4162  img.src = greenImageSrc;
4163  var svg = createForeignObjectSVG(size, size, 0, 0, img);
4164  ctx.fillStyle = "red";
4165  ctx.fillRect(0, 0, size, size);
4166  return loadSerializedSVG$1(svg).then(function(img2) {
4167    ctx.drawImage(img2, 0, 0);
4168    var data = ctx.getImageData(0, 0, size, size).data;
4169    ctx.fillStyle = "red";
4170    ctx.fillRect(0, 0, size, size);
4171    var node = document2.createElement("div");
4172    node.style.backgroundImage = "url(" + greenImageSrc + ")";
4173    node.style.height = size + "px";
4174    return isGreenPixel(data) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);
4175  }).then(function(img2) {
4176    ctx.drawImage(img2, 0, 0);
4177    return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
4178  }).catch(function() {
4179    return false;
4180  });
4181};
4182var createForeignObjectSVG = function(width, height, x, y, node) {
4183  var xmlns = "http://www.w3.org/2000/svg";
4184  var svg = document.createElementNS(xmlns, "svg");
4185  var foreignObject = document.createElementNS(xmlns, "foreignObject");
4186  svg.setAttributeNS(null, "width", width.toString());
4187  svg.setAttributeNS(null, "height", height.toString());
4188  foreignObject.setAttributeNS(null, "width", "100%");
4189  foreignObject.setAttributeNS(null, "height", "100%");
4190  foreignObject.setAttributeNS(null, "x", x.toString());
4191  foreignObject.setAttributeNS(null, "y", y.toString());
4192  foreignObject.setAttributeNS(null, "externalResourcesRequired", "true");
4193  svg.appendChild(foreignObject);
4194  foreignObject.appendChild(node);
4195  return svg;
4196};
4197var loadSerializedSVG$1 = function(svg) {
4198  return new Promise(function(resolve, reject) {
4199    var img = new Image();
4200    img.onload = function() {
4201      return resolve(img);
4202    };
4203    img.onerror = reject;
4204    img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
4205  });
4206};
4207var FEATURES = {
4208  get SUPPORT_RANGE_BOUNDS() {
4209    var value = testRangeBounds(document);
4210    Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value });
4211    return value;
4212  },
4213  get SUPPORT_WORD_BREAKING() {
4214    var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
4215    Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value });
4216    return value;
4217  },
4218  get SUPPORT_SVG_DRAWING() {
4219    var value = testSVG(document);
4220    Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value });
4221    return value;
4222  },
4223  get SUPPORT_FOREIGNOBJECT_DRAWING() {
4224    var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false);
4225    Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value });
4226    return value;
4227  },
4228  get SUPPORT_CORS_IMAGES() {
4229    var value = testCORS();
4230    Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value });
4231    return value;
4232  },
4233  get SUPPORT_RESPONSE_TYPE() {
4234    var value = testResponseType();
4235    Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value });
4236    return value;
4237  },
4238  get SUPPORT_CORS_XHR() {
4239    var value = "withCredentials" in new XMLHttpRequest();
4240    Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value });
4241    return value;
4242  },
4243  get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
4244    var value = !!(typeof Intl !== "undefined" && Intl.Segmenter);
4245    Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value });
4246    return value;
4247  }
4248};
4249var TextBounds = (
4250  /** @class */
4251  /* @__PURE__ */ 
vendor: 21,359 bytes, lines 4251-5049
4251function() {
4252    function TextBounds2(text, bounds) {
4253      this.text = text;
4254      this.bounds = bounds;
4255    }
4256    return TextBounds2;
4257  }()
4258);
4259var parseTextBounds = function(context, value, styles, node) {
4260  var textList = breakText(value, styles);
4261  var textBounds = [];
4262  var offset = 0;
4263  textList.forEach(function(text) {
4264    if (styles.textDecorationLine.length || text.trim().length > 0) {
4265      if (FEATURES.SUPPORT_RANGE_BOUNDS) {
4266        var clientRects = createRange(node, offset, text.length).getClientRects();
4267        if (clientRects.length > 1) {
4268          var subSegments = segmentGraphemes(text);
4269          var subOffset_1 = 0;
4270          subSegments.forEach(function(subSegment) {
4271            textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));
4272            subOffset_1 += subSegment.length;
4273          });
4274        } else {
4275          textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
4276        }
4277      } else {
4278        var replacementNode = node.splitText(text.length);
4279        textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
4280        node = replacementNode;
4281      }
4282    } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
4283      node = node.splitText(text.length);
4284    }
4285    offset += text.length;
4286  });
4287  return textBounds;
4288};
4289var getWrapperBounds = function(context, node) {
4290  var ownerDocument = node.ownerDocument;
4291  if (ownerDocument) {
4292    var wrapper = ownerDocument.createElement("html2canvaswrapper");
4293    wrapper.appendChild(node.cloneNode(true));
4294    var parentNode = node.parentNode;
4295    if (parentNode) {
4296      parentNode.replaceChild(wrapper, node);
4297      var bounds = parseBounds(context, wrapper);
4298      if (wrapper.firstChild) {
4299        parentNode.replaceChild(wrapper.firstChild, wrapper);
4300      }
4301      return bounds;
4302    }
4303  }
4304  return Bounds.EMPTY;
4305};
4306var createRange = function(node, offset, length) {
4307  var ownerDocument = node.ownerDocument;
4308  if (!ownerDocument) {
4309    throw new Error("Node has no owner document");
4310  }
4311  var range = ownerDocument.createRange();
4312  range.setStart(node, offset);
4313  range.setEnd(node, offset + length);
4314  return range;
4315};
4316var segmentGraphemes = function(value) {
4317  if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
4318    var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
4319    return Array.from(segmenter.segment(value)).map(function(segment) {
4320      return segment.segment;
4321    });
4322  }
4323  return splitGraphemes(value);
4324};
4325var segmentWords = function(value, styles) {
4326  if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
4327    var segmenter = new Intl.Segmenter(void 0, {
4328      granularity: "word"
4329    });
4330    return Array.from(segmenter.segment(value)).map(function(segment) {
4331      return segment.segment;
4332    });
4333  }
4334  return breakWords(value, styles);
4335};
4336var breakText = function(value, styles) {
4337  return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
4338};
4339var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241];
4340var breakWords = function(str, styles) {
4341  var breaker = LineBreaker(str, {
4342    lineBreak: styles.lineBreak,
4343    wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak
4344  });
4345  var words = [];
4346  var bk;
4347  var _loop_1 = function() {
4348    if (bk.value) {
4349      var value = bk.value.slice();
4350      var codePoints = toCodePoints$1(value);
4351      var word_1 = "";
4352      codePoints.forEach(function(codePoint) {
4353        if (wordSeparators.indexOf(codePoint) === -1) {
4354          word_1 += fromCodePoint$1(codePoint);
4355        } else {
4356          if (word_1.length) {
4357            words.push(word_1);
4358          }
4359          words.push(fromCodePoint$1(codePoint));
4360          word_1 = "";
4361        }
4362      });
4363      if (word_1.length) {
4364        words.push(word_1);
4365      }
4366    }
4367  };
4368  while (!(bk = breaker.next()).done) {
4369    _loop_1();
4370  }
4371  return words;
4372};
4373var TextContainer = (
4374  /** @class */
4375  /* @__PURE__ */ function() {
4376    function TextContainer2(context, node, styles) {
4377      this.text = transform(node.data, styles.textTransform);
4378      this.textBounds = parseTextBounds(context, this.text, styles, node);
4379    }
4380    return TextContainer2;
4381  }()
4382);
4383var transform = function(text, transform2) {
4384  switch (transform2) {
4385    case 1:
4386      return text.toLowerCase();
4387    case 3:
4388      return text.replace(CAPITALIZE, capitalize);
4389    case 2:
4390      return text.toUpperCase();
4391    default:
4392      return text;
4393  }
4394};
4395var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
4396var capitalize = function(m, p1, p2) {
4397  if (m.length > 0) {
4398    return p1 + p2.toUpperCase();
4399  }
4400  return m;
4401};
4402var ImageElementContainer = (
4403  /** @class */
4404  function(_super) {
4405    __extends(ImageElementContainer2, _super);
4406    function ImageElementContainer2(context, img) {
4407      var _this = _super.call(this, context, img) || this;
4408      _this.src = img.currentSrc || img.src;
4409      _this.intrinsicWidth = img.naturalWidth;
4410      _this.intrinsicHeight = img.naturalHeight;
4411      _this.context.cache.addImage(_this.src);
4412      return _this;
4413    }
4414    return ImageElementContainer2;
4415  }(ElementContainer)
4416);
4417var CanvasElementContainer = (
4418  /** @class */
4419  function(_super) {
4420    __extends(CanvasElementContainer2, _super);
4421    function CanvasElementContainer2(context, canvas) {
4422      var _this = _super.call(this, context, canvas) || this;
4423      _this.canvas = canvas;
4424      _this.intrinsicWidth = canvas.width;
4425      _this.intrinsicHeight = canvas.height;
4426      return _this;
4427    }
4428    return CanvasElementContainer2;
4429  }(ElementContainer)
4430);
4431var SVGElementContainer = (
4432  /** @class */
4433  function(_super) {
4434    __extends(SVGElementContainer2, _super);
4435    function SVGElementContainer2(context, img) {
4436      var _this = _super.call(this, context, img) || this;
4437      var s = new XMLSerializer();
4438      var bounds = parseBounds(context, img);
4439      img.setAttribute("width", bounds.width + "px");
4440      img.setAttribute("height", bounds.height + "px");
4441      _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
4442      _this.intrinsicWidth = img.width.baseVal.value;
4443      _this.intrinsicHeight = img.height.baseVal.value;
4444      _this.context.cache.addImage(_this.svg);
4445      return _this;
4446    }
4447    return SVGElementContainer2;
4448  }(ElementContainer)
4449);
4450var LIElementContainer = (
4451  /** @class */
4452  function(_super) {
4453    __extends(LIElementContainer2, _super);
4454    function LIElementContainer2(context, element) {
4455      var _this = _super.call(this, context, element) || this;
4456      _this.value = element.value;
4457      return _this;
4458    }
4459    return LIElementContainer2;
4460  }(ElementContainer)
4461);
4462var OLElementContainer = (
4463  /** @class */
4464  function(_super) {
4465    __extends(OLElementContainer2, _super);
4466    function OLElementContainer2(context, element) {
4467      var _this = _super.call(this, context, element) || this;
4468      _this.start = element.start;
4469      _this.reversed = typeof element.reversed === "boolean" && element.reversed === true;
4470      return _this;
4471    }
4472    return OLElementContainer2;
4473  }(ElementContainer)
4474);
4475var CHECKBOX_BORDER_RADIUS = [
4476  {
4477    type: 15,
4478    flags: 0,
4479    unit: "px",
4480    number: 3
4481  }
4482];
4483var RADIO_BORDER_RADIUS = [
4484  {
4485    type: 16,
4486    flags: 0,
4487    number: 50
4488  }
4489];
4490var reformatInputBounds = function(bounds) {
4491  if (bounds.width > bounds.height) {
4492    return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
4493  } else if (bounds.width < bounds.height) {
4494    return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
4495  }
4496  return bounds;
4497};
4498var getInputValue = function(node) {
4499  var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("•") : node.value;
4500  return value.length === 0 ? node.placeholder || "" : value;
4501};
4502var CHECKBOX = "checkbox";
4503var RADIO = "radio";
4504var PASSWORD = "password";
4505var INPUT_COLOR = 707406591;
4506var InputElementContainer = (
4507  /** @class */
4508  function(_super) {
4509    __extends(InputElementContainer2, _super);
4510    function InputElementContainer2(context, input) {
4511      var _this = _super.call(this, context, input) || this;
4512      _this.type = input.type.toLowerCase();
4513      _this.checked = input.checked;
4514      _this.value = getInputValue(input);
4515      if (_this.type === CHECKBOX || _this.type === RADIO) {
4516        _this.styles.backgroundColor = 3739148031;
4517        _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575;
4518        _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
4519        _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1;
4520        _this.styles.backgroundClip = [
4521          0
4522          /* BORDER_BOX */
4523        ];
4524        _this.styles.backgroundOrigin = [
4525          0
4526          /* BORDER_BOX */
4527        ];
4528        _this.bounds = reformatInputBounds(_this.bounds);
4529      }
4530      switch (_this.type) {
4531        case CHECKBOX:
4532          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
4533          break;
4534        case RADIO:
4535          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
4536          break;
4537      }
4538      return _this;
4539    }
4540    return InputElementContainer2;
4541  }(ElementContainer)
4542);
4543var SelectElementContainer = (
4544  /** @class */
4545  function(_super) {
4546    __extends(SelectElementContainer2, _super);
4547    function SelectElementContainer2(context, element) {
4548      var _this = _super.call(this, context, element) || this;
4549      var option = element.options[element.selectedIndex || 0];
4550      _this.value = option ? option.text || "" : "";
4551      return _this;
4552    }
4553    return SelectElementContainer2;
4554  }(ElementContainer)
4555);
4556var TextareaElementContainer = (
4557  /** @class */
4558  function(_super) {
4559    __extends(TextareaElementContainer2, _super);
4560    function TextareaElementContainer2(context, element) {
4561      var _this = _super.call(this, context, element) || this;
4562      _this.value = element.value;
4563      return _this;
4564    }
4565    return TextareaElementContainer2;
4566  }(ElementContainer)
4567);
4568var IFrameElementContainer = (
4569  /** @class */
4570  function(_super) {
4571    __extends(IFrameElementContainer2, _super);
4572    function IFrameElementContainer2(context, iframe) {
4573      var _this = _super.call(this, context, iframe) || this;
4574      _this.src = iframe.src;
4575      _this.width = parseInt(iframe.width, 10) || 0;
4576      _this.height = parseInt(iframe.height, 10) || 0;
4577      _this.backgroundColor = _this.styles.backgroundColor;
4578      try {
4579        if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {
4580          _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
4581          var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;
4582          var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;
4583          _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;
4584        }
4585      } catch (e2) {
4586      }
4587      return _this;
4588    }
4589    return IFrameElementContainer2;
4590  }(ElementContainer)
4591);
4592var LIST_OWNERS = ["OL", "UL", "MENU"];
4593var parseNodeTree = function(context, node, parent, root) {
4594  for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
4595    nextNode = childNode.nextSibling;
4596    if (isTextNode(childNode) && childNode.data.trim().length > 0) {
4597      parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
4598    } else if (isElementNode(childNode)) {
4599      if (isSlotElement(childNode) && childNode.assignedNodes) {
4600        childNode.assignedNodes().forEach(function(childNode2) {
4601          return parseNodeTree(context, childNode2, parent, root);
4602        });
4603      } else {
4604        var container = createContainer(context, childNode);
4605        if (container.styles.isVisible()) {
4606          if (createsRealStackingContext(childNode, container, root)) {
4607            container.flags |= 4;
4608          } else if (createsStackingContext(container.styles)) {
4609            container.flags |= 2;
4610          }
4611          if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
4612            container.flags |= 8;
4613          }
4614          parent.elements.push(container);
4615          childNode.slot;
4616          if (childNode.shadowRoot) {
4617            parseNodeTree(context, childNode.shadowRoot, container, root);
4618          } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
4619            parseNodeTree(context, childNode, container, root);
4620          }
4621        }
4622      }
4623    }
4624  }
4625};
4626var createContainer = function(context, element) {
4627  if (isImageElement(element)) {
4628    return new ImageElementContainer(context, element);
4629  }
4630  if (isCanvasElement(element)) {
4631    return new CanvasElementContainer(context, element);
4632  }
4633  if (isSVGElement(element)) {
4634    return new SVGElementContainer(context, element);
4635  }
4636  if (isLIElement(element)) {
4637    return new LIElementContainer(context, element);
4638  }
4639  if (isOLElement(element)) {
4640    return new OLElementContainer(context, element);
4641  }
4642  if (isInputElement(element)) {
4643    return new InputElementContainer(context, element);
4644  }
4645  if (isSelectElement(element)) {
4646    return new SelectElementContainer(context, element);
4647  }
4648  if (isTextareaElement(element)) {
4649    return new TextareaElementContainer(context, element);
4650  }
4651  if (isIFrameElement(element)) {
4652    return new IFrameElementContainer(context, element);
4653  }
4654  return new ElementContainer(context, element);
4655};
4656var parseTree = function(context, element) {
4657  var container = createContainer(context, element);
4658  container.flags |= 4;
4659  parseNodeTree(context, element, container, container);
4660  return container;
4661};
4662var createsRealStackingContext = function(node, container, root) {
4663  return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();
4664};
4665var createsStackingContext = function(styles) {
4666  return styles.isPositioned() || styles.isFloating();
4667};
4668var isTextNode = function(node) {
4669  return node.nodeType === Node.TEXT_NODE;
4670};
4671var isElementNode = function(node) {
4672  return node.nodeType === Node.ELEMENT_NODE;
4673};
4674var isHTMLElementNode = function(node) {
4675  return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node);
4676};
4677var isSVGElementNode = function(element) {
4678  return typeof element.className === "object";
4679};
4680var isLIElement = function(node) {
4681  return node.tagName === "LI";
4682};
4683var isOLElement = function(node) {
4684  return node.tagName === "OL";
4685};
4686var isInputElement = function(node) {
4687  return node.tagName === "INPUT";
4688};
4689var isHTMLElement = function(node) {
4690  return node.tagName === "HTML";
4691};
4692var isSVGElement = function(node) {
4693  return node.tagName === "svg";
4694};
4695var isBodyElement = function(node) {
4696  return node.tagName === "BODY";
4697};
4698var isCanvasElement = function(node) {
4699  return node.tagName === "CANVAS";
4700};
4701var isVideoElement = function(node) {
4702  return node.tagName === "VIDEO";
4703};
4704var isImageElement = function(node) {
4705  return node.tagName === "IMG";
4706};
4707var isIFrameElement = function(node) {
4708  return node.tagName === "IFRAME";
4709};
4710var isStyleElement = function(node) {
4711  return node.tagName === "STYLE";
4712};
4713var isScriptElement = function(node) {
4714  return node.tagName === "SCRIPT";
4715};
4716var isTextareaElement = function(node) {
4717  return node.tagName === "TEXTAREA";
4718};
4719var isSelectElement = function(node) {
4720  return node.tagName === "SELECT";
4721};
4722var isSlotElement = function(node) {
4723  return node.tagName === "SLOT";
4724};
4725var isCustomElement = function(node) {
4726  return node.tagName.indexOf("-") > 0;
4727};
4728var CounterState = (
4729  /** @class */
4730  function() {
4731    function CounterState2() {
4732      this.counters = {};
4733    }
4734    CounterState2.prototype.getCounterValue = function(name) {
4735      var counter = this.counters[name];
4736      if (counter && counter.length) {
4737        return counter[counter.length - 1];
4738      }
4739      return 1;
4740    };
4741    CounterState2.prototype.getCounterValues = function(name) {
4742      var counter = this.counters[name];
4743      return counter ? counter : [];
4744    };
4745    CounterState2.prototype.pop = function(counters) {
4746      var _this = this;
4747      counters.forEach(function(counter) {
4748        return _this.counters[counter].pop();
4749      });
4750    };
4751    CounterState2.prototype.parse = function(style) {
4752      var _this = this;
4753      var counterIncrement2 = style.counterIncrement;
4754      var counterReset2 = style.counterReset;
4755      var canReset = true;
4756      if (counterIncrement2 !== null) {
4757        counterIncrement2.forEach(function(entry) {
4758          var counter = _this.counters[entry.counter];
4759          if (counter && entry.increment !== 0) {
4760            canReset = false;
4761            if (!counter.length) {
4762              counter.push(1);
4763            }
4764            counter[Math.max(0, counter.length - 1)] += entry.increment;
4765          }
4766        });
4767      }
4768      var counterNames = [];
4769      if (canReset) {
4770        counterReset2.forEach(function(entry) {
4771          var counter = _this.counters[entry.counter];
4772          counterNames.push(entry.counter);
4773          if (!counter) {
4774            counter = _this.counters[entry.counter] = [];
4775          }
4776          counter.push(entry.reset);
4777        });
4778      }
4779      return counterNames;
4780    };
4781    return CounterState2;
4782  }()
4783);
4784var ROMAN_UPPER = {
4785  integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
4786  values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
4787};
4788var ARMENIAN = {
4789  integers: [
4790    9e3,
4791    8e3,
4792    7e3,
4793    6e3,
4794    5e3,
4795    4e3,
4796    3e3,
4797    2e3,
4798    1e3,
4799    900,
4800    800,
4801    700,
4802    600,
4803    500,
4804    400,
4805    300,
4806    200,
4807    100,
4808    90,
4809    80,
4810    70,
4811    60,
4812    50,
4813    40,
4814    30,
4815    20,
4816    10,
4817    9,
4818    8,
4819    7,
4820    6,
4821    5,
4822    4,
4823    3,
4824    2,
4825    1
4826  ],
4827  values: [
4828    "Ք",
4829    "Փ",
4830    "Ւ",
4831    "Ց",
4832    "Ր",
4833    "Տ",
4834    "Վ",
4835    "Ս",
4836    "Ռ",
4837    "Ջ",
4838    "Պ",
4839    "Չ",
4840    "Ո",
4841    "Շ",
4842    "Ն",
4843    "Յ",
4844    "Մ",
4845    "Ճ",
4846    "Ղ",
4847    "Ձ",
4848    "Հ",
4849    "Ô¿",
4850    "Ô¾",
4851    "Ô½",
4852    "Ô¼",
4853    "Ô»",
4854    "Ôº",
4855    "Ô¹",
4856    "Ô¸",
4857    "Ô·",
4858    "Ô¶",
4859    "Ôµ",
4860    "Ô´",
4861    "Ô³",
4862    "Ô²",
4863    "Ô±"
4864  ]
4865};
4866var HEBREW = {
4867  integers: [
4868    1e4,
4869    9e3,
4870    8e3,
4871    7e3,
4872    6e3,
4873    5e3,
4874    4e3,
4875    3e3,
4876    2e3,
4877    1e3,
4878    400,
4879    300,
4880    200,
4881    100,
4882    90,
4883    80,
4884    70,
4885    60,
4886    50,
4887    40,
4888    30,
4889    20,
4890    19,
4891    18,
4892    17,
4893    16,
4894    15,
4895    10,
4896    9,
4897    8,
4898    7,
4899    6,
4900    5,
4901    4,
4902    3,
4903    2,
4904    1
4905  ],
4906  values: [
4907    "י׳",
4908    "ט׳",
4909    "ח׳",
4910    "ז׳",
4911    "ו׳",
4912    "ה׳",
4913    "ד׳",
4914    "ג׳",
4915    "ב׳",
4916    "א׳",
4917    "ת",
4918    "ש",
4919    "ר",
4920    "×§",
4921    "צ",
4922    "פ",
4923    "×¢",
4924    "ס",
4925    "× ",
4926    "מ",
4927    "ל",
4928    "כ",
4929    "יט",
4930    "יח",
4931    "יז",
4932    "טז",
4933    "טו",
4934    "י",
4935    "ט",
4936    "ח",
4937    "ז",
4938    "ו",
4939    "ה",
4940    "ד",
4941    "ג",
4942    "ב",
4943    "א"
4944  ]
4945};
4946var GEORGIAN = {
4947  integers: [
4948    1e4,
4949    9e3,
4950    8e3,
4951    7e3,
4952    6e3,
4953    5e3,
4954    4e3,
4955    3e3,
4956    2e3,
4957    1e3,
4958    900,
4959    800,
4960    700,
4961    600,
4962    500,
4963    400,
4964    300,
4965    200,
4966    100,
4967    90,
4968    80,
4969    70,
4970    60,
4971    50,
4972    40,
4973    30,
4974    20,
4975    10,
4976    9,
4977    8,
4978    7,
4979    6,
4980    5,
4981    4,
4982    3,
4983    2,
4984    1
4985  ],
4986  values: [
4987    "ჵ",
4988    "ჰ",
4989    "ჯ",
4990    "ჴ",
4991    "ხ",
4992    "ჭ",
4993    "წ",
4994    "ძ",
4995    "ც",
4996    "ჩ",
4997    "შ",
4998    "ყ",
4999    "ღ",
5000    "ქ",
5001    "ფ",
5002    "ჳ",
5003    "ტ",
5004    "ს",
5005    "რ",
5006    "ჟ",
5007    "პ",
5008    "ო",
5009    "ჲ",
5010    "ნ",
5011    "მ",
5012    "ლ",
5013    "კ",
5014    "ი",
5015    "თ",
5016    "ჱ",
5017    "ზ",
5018    "ვ",
5019    "ე",
5020    "დ",
5021    "გ",
5022    "ბ",
5023    "ა"
5024  ]
5025};
5026var createAdditiveCounter = function(value, min, max, symbols, fallback, suffix) {
5027  if (value < min || value > max) {
5028    return createCounterText(value, fallback, suffix.length > 0);
5029  }
5030  return symbols.integers.reduce(function(string, integer, index) {
5031    while (value >= integer) {
5032      value -= integer;
5033      string += symbols.values[index];
5034    }
5035    return string;
5036  }, "") + suffix;
5037};
5038var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric, resolver) {
5039  var string = "";
5040  do {
5041    if (!isNumeric) {
5042      value--;
5043    }
5044    string = resolver(value) + string;
5045    value /= codePointRangeLength;
5046  } while (value * codePointRangeLength >= codePointRangeLength);
5047  return string;
5048};
5049var createCounterStyleFromRange = function(value, codePointRangeStart, co
vendor: 8,253 bytes, lines 5049-5202
5049dePointRangeEnd, isNumeric, suffix) {
5050  var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
5051  return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function(codePoint) {
5052    return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
5053  }) + suffix);
5054};
5055var createCounterStyleFromSymbols = function(value, symbols, suffix) {
5056  if (suffix === void 0) {
5057    suffix = ". ";
5058  }
5059  var codePointRangeLength = symbols.length;
5060  return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) {
5061    return symbols[Math.floor(codePoint % codePointRangeLength)];
5062  }) + suffix;
5063};
5064var CJK_ZEROS = 1 << 0;
5065var CJK_TEN_COEFFICIENTS = 1 << 1;
5066var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
5067var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
5068var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) {
5069  if (value < -9999 || value > 9999) {
5070    return createCounterText(value, 4, suffix.length > 0);
5071  }
5072  var tmp = Math.abs(value);
5073  var string = suffix;
5074  if (tmp === 0) {
5075    return numbers[0] + string;
5076  }
5077  for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
5078    var coefficient = tmp % 10;
5079    if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== "") {
5080      string = numbers[coefficient] + string;
5081    } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {
5082      string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string;
5083    } else if (coefficient === 1 && digit > 0) {
5084      string = multipliers[digit - 1] + string;
5085    }
5086    tmp = Math.floor(tmp / 10);
5087  }
5088  return (value < 0 ? negativeSign : "") + string;
5089};
5090var CHINESE_INFORMAL_MULTIPLIERS = "十百千萬";
5091var CHINESE_FORMAL_MULTIPLIERS = "拾佰仟萬";
5092var JAPANESE_NEGATIVE = "マイナス";
5093var KOREAN_NEGATIVE = "마이너스";
5094var createCounterText = function(value, type, appendSuffix) {
5095  var defaultSuffix = appendSuffix ? ". " : "";
5096  var cjkSuffix = appendSuffix ? "、" : "";
5097  var koreanSuffix = appendSuffix ? ", " : "";
5098  var spaceSuffix = appendSuffix ? " " : "";
5099  switch (type) {
5100    case 0:
5101      return "•" + spaceSuffix;
5102    case 1:
5103      return "◦" + spaceSuffix;
5104    case 2:
5105      return "◾" + spaceSuffix;
5106    case 5:
5107      var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
5108      return string.length < 4 ? "0" + string : string;
5109    case 4:
5110      return createCounterStyleFromSymbols(value, "〇一二三四五六七八九", cjkSuffix);
5111    case 6:
5112      return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase();
5113    case 7:
5114      return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix);
5115    case 8:
5116      return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
5117    case 9:
5118      return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
5119    case 10:
5120      return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
5121    case 11:
5122      return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
5123    case 12:
5124    case 49:
5125      return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix);
5126    case 35:
5127      return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase();
5128    case 13:
5129      return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
5130    case 14:
5131    case 30:
5132      return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
5133    case 15:
5134      return createCounterStyleFromSymbols(value, "子丑寅卯辰巳午未申酉戌亥", cjkSuffix);
5135    case 16:
5136      return createCounterStyleFromSymbols(value, "甲乙丙丁戊己庚辛壬癸", cjkSuffix);
5137    case 17:
5138    case 48:
5139      return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5140    case 47:
5141      return createCJKCounter(value, "零壹貳參肆伍陸柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5142    case 42:
5143      return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5144    case 41:
5145      return createCJKCounter(value, "零壹贰叁肆伍陆柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5146    case 26:
5147      return createCJKCounter(value, "〇一二三四五六七八九", "十百千万", JAPANESE_NEGATIVE, cjkSuffix, 0);
5148    case 25:
5149      return createCJKCounter(value, "零壱弐参四伍六七八九", "拾百千万", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5150    case 31:
5151      return createCJKCounter(value, "영일이삼사오육칠팔구", "십백천만", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5152    case 33:
5153      return createCJKCounter(value, "零一二三四五六七八九", "十百千萬", KOREAN_NEGATIVE, koreanSuffix, 0);
5154    case 32:
5155      return createCJKCounter(value, "零壹貳參四五六七八九", "拾百千", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5156    case 18:
5157      return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix);
5158    case 20:
5159      return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix);
5160    case 21:
5161      return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix);
5162    case 22:
5163      return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix);
5164    case 22:
5165      return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix);
5166    case 23:
5167      return createCounterStyleFromSymbols(value, "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");
5168    case 24:
5169      return createCounterStyleFromSymbols(value, "いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");
5170    case 27:
5171      return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix);
5172    case 28:
5173      return createCounterStyleFromSymbols(value, "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン", cjkSuffix);
5174    case 29:
5175      return createCounterStyleFromSymbols(value, "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス", cjkSuffix);
5176    case 34:
5177      return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix);
5178    case 37:
5179      return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix);
5180    case 38:
5181      return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix);
5182    case 39:
5183      return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix);
5184    case 40:
5185      return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix);
5186    case 43:
5187      return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix);
5188    case 44:
5189      return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix);
5190    case 45:
5191      return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix);
5192    case 46:
5193      return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix);
5194    case 3:
5195    default:
5196      return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
5197  }
5198};
5199var IGNORE_ATTRIBUTE = "data-html2canvas-ignore";
5200var DocumentCloner = (
5201  /** @class */
5202  
vendor: 14,927 bytes, lines 5202-5540
5202function() {
5203    function DocumentCloner2(context, element, options) {
5204      this.context = context;
5205      this.options = options;
5206      this.scrolledElements = [];
5207      this.referenceElement = element;
5208      this.counters = new CounterState();
5209      this.quoteDepth = 0;
5210      if (!element.ownerDocument) {
5211        throw new Error("Cloned element does not have an owner document");
5212      }
5213      this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
5214    }
5215    DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) {
5216      var _this = this;
5217      var iframe = createIFrameContainer(ownerDocument, windowSize);
5218      if (!iframe.contentWindow) {
5219        return Promise.reject("Unable to find iframe window");
5220      }
5221      var scrollX = ownerDocument.defaultView.pageXOffset;
5222      var scrollY = ownerDocument.defaultView.pageYOffset;
5223      var cloneWindow = iframe.contentWindow;
5224      var documentClone = cloneWindow.document;
5225      var iframeLoad = iframeLoader(iframe).then(function() {
5226        return __awaiter(_this, void 0, void 0, function() {
5227          var onclone, referenceElement;
5228          return __generator(this, function(_a) {
5229            switch (_a.label) {
5230              case 0:
5231                this.scrolledElements.forEach(restoreNodeScroll);
5232                if (cloneWindow) {
5233                  cloneWindow.scrollTo(windowSize.left, windowSize.top);
5234                  if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
5235                    this.context.logger.warn("Unable to restore scroll position for cloned document");
5236                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
5237                  }
5238                }
5239                onclone = this.options.onclone;
5240                referenceElement = this.clonedReferenceElement;
5241                if (typeof referenceElement === "undefined") {
5242                  return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
5243                }
5244                if (!(documentClone.fonts && documentClone.fonts.ready)) return [3, 2];
5245                return [4, documentClone.fonts.ready];
5246              case 1:
5247                _a.sent();
5248                _a.label = 2;
5249              case 2:
5250                if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4];
5251                return [4, imagesReady(documentClone)];
5252              case 3:
5253                _a.sent();
5254                _a.label = 4;
5255              case 4:
5256                if (typeof onclone === "function") {
5257                  return [2, Promise.resolve().then(function() {
5258                    return onclone(documentClone, referenceElement);
5259                  }).then(function() {
5260                    return iframe;
5261                  })];
5262                }
5263                return [2, iframe];
5264            }
5265          });
5266        });
5267      });
5268      documentClone.open();
5269      documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
5270      restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
5271      documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
5272      documentClone.close();
5273      return iframeLoad;
5274    };
5275    DocumentCloner2.prototype.createElementClone = function(node) {
5276      if (isDebugging(
5277        node,
5278        2
5279        /* CLONE */
5280      )) {
5281        debugger;
5282      }
5283      if (isCanvasElement(node)) {
5284        return this.createCanvasClone(node);
5285      }
5286      if (isVideoElement(node)) {
5287        return this.createVideoClone(node);
5288      }
5289      if (isStyleElement(node)) {
5290        return this.createStyleClone(node);
5291      }
5292      var clone = node.cloneNode(false);
5293      if (isImageElement(clone)) {
5294        if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
5295          clone.src = node.currentSrc;
5296          clone.srcset = "";
5297        }
5298        if (clone.loading === "lazy") {
5299          clone.loading = "eager";
5300        }
5301      }
5302      if (isCustomElement(clone)) {
5303        return this.createCustomElementClone(clone);
5304      }
5305      return clone;
5306    };
5307    DocumentCloner2.prototype.createCustomElementClone = function(node) {
5308      var clone = document.createElement("html2canvascustomelement");
5309      copyCSSStyles(node.style, clone);
5310      return clone;
5311    };
5312    DocumentCloner2.prototype.createStyleClone = function(node) {
5313      try {
5314        var sheet = node.sheet;
5315        if (sheet && sheet.cssRules) {
5316          var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) {
5317            if (rule && typeof rule.cssText === "string") {
5318              return css2 + rule.cssText;
5319            }
5320            return css2;
5321          }, "");
5322          var style = node.cloneNode(false);
5323          style.textContent = css;
5324          return style;
5325        }
5326      } catch (e2) {
5327        this.context.logger.error("Unable to access cssRules property", e2);
5328        if (e2.name !== "SecurityError") {
5329          throw e2;
5330        }
5331      }
5332      return node.cloneNode(false);
5333    };
5334    DocumentCloner2.prototype.createCanvasClone = function(canvas) {
5335      var _a;
5336      if (this.options.inlineImages && canvas.ownerDocument) {
5337        var img = canvas.ownerDocument.createElement("img");
5338        try {
5339          img.src = canvas.toDataURL();
5340          return img;
5341        } catch (e2) {
5342          this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
5343        }
5344      }
5345      var clonedCanvas = canvas.cloneNode(false);
5346      try {
5347        clonedCanvas.width = canvas.width;
5348        clonedCanvas.height = canvas.height;
5349        var ctx = canvas.getContext("2d");
5350        var clonedCtx = clonedCanvas.getContext("2d");
5351        if (clonedCtx) {
5352          if (!this.options.allowTaint && ctx) {
5353            clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
5354          } else {
5355            var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl");
5356            if (gl) {
5357              var attribs = gl.getContextAttributes();
5358              if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
5359                this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas);
5360              }
5361            }
5362            clonedCtx.drawImage(canvas, 0, 0);
5363          }
5364        }
5365        return clonedCanvas;
5366      } catch (e2) {
5367        this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
5368      }
5369      return clonedCanvas;
5370    };
5371    DocumentCloner2.prototype.createVideoClone = function(video) {
5372      var canvas = video.ownerDocument.createElement("canvas");
5373      canvas.width = video.offsetWidth;
5374      canvas.height = video.offsetHeight;
5375      var ctx = canvas.getContext("2d");
5376      try {
5377        if (ctx) {
5378          ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
5379          if (!this.options.allowTaint) {
5380            ctx.getImageData(0, 0, canvas.width, canvas.height);
5381          }
5382        }
5383        return canvas;
5384      } catch (e2) {
5385        this.context.logger.info("Unable to clone video as it is tainted", video);
5386      }
5387      var blankCanvas = video.ownerDocument.createElement("canvas");
5388      blankCanvas.width = video.offsetWidth;
5389      blankCanvas.height = video.offsetHeight;
5390      return blankCanvas;
5391    };
5392    DocumentCloner2.prototype.appendChildNode = function(clone, child, copyStyles) {
5393      if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
5394        if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
5395          clone.appendChild(this.cloneNode(child, copyStyles));
5396        }
5397      }
5398    };
5399    DocumentCloner2.prototype.cloneChildNodes = function(node, clone, copyStyles) {
5400      var _this = this;
5401      for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
5402        if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
5403          var assignedNodes = child.assignedNodes();
5404          if (assignedNodes.length) {
5405            assignedNodes.forEach(function(assignedNode) {
5406              return _this.appendChildNode(clone, assignedNode, copyStyles);
5407            });
5408          }
5409        } else {
5410          this.appendChildNode(clone, child, copyStyles);
5411        }
5412      }
5413    };
5414    DocumentCloner2.prototype.cloneNode = function(node, copyStyles) {
5415      if (isTextNode(node)) {
5416        return document.createTextNode(node.data);
5417      }
5418      if (!node.ownerDocument) {
5419        return node.cloneNode(false);
5420      }
5421      var window2 = node.ownerDocument.defaultView;
5422      if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
5423        var clone = this.createElementClone(node);
5424        clone.style.transitionProperty = "none";
5425        var style = window2.getComputedStyle(node);
5426        var styleBefore = window2.getComputedStyle(node, ":before");
5427        var styleAfter = window2.getComputedStyle(node, ":after");
5428        if (this.referenceElement === node && isHTMLElementNode(clone)) {
5429          this.clonedReferenceElement = clone;
5430        }
5431        if (isBodyElement(clone)) {
5432          createPseudoHideStyles(clone);
5433        }
5434        var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
5435        var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
5436        if (isCustomElement(node)) {
5437          copyStyles = true;
5438        }
5439        if (!isVideoElement(node)) {
5440          this.cloneChildNodes(node, clone, copyStyles);
5441        }
5442        if (before) {
5443          clone.insertBefore(before, clone.firstChild);
5444        }
5445        var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
5446        if (after) {
5447          clone.appendChild(after);
5448        }
5449        this.counters.pop(counters);
5450        if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {
5451          copyCSSStyles(style, clone);
5452        }
5453        if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
5454          this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
5455        }
5456        if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone) || isSelectElement(clone))) {
5457          clone.value = node.value;
5458        }
5459        return clone;
5460      }
5461      return node.cloneNode(false);
5462    };
5463    DocumentCloner2.prototype.resolvePseudoContent = function(node, clone, style, pseudoElt) {
5464      var _this = this;
5465      if (!style) {
5466        return;
5467      }
5468      var value = style.content;
5469      var document2 = clone.ownerDocument;
5470      if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
5471        return;
5472      }
5473      this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
5474      var declaration = new CSSParsedPseudoDeclaration(this.context, style);
5475      var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement");
5476      copyCSSStyles(style, anonymousReplacedElement);
5477      declaration.content.forEach(function(token) {
5478        if (token.type === 0) {
5479          anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
5480        } else if (token.type === 22) {
5481          var img = document2.createElement("img");
5482          img.src = token.value;
5483          img.style.opacity = "1";
5484          anonymousReplacedElement.appendChild(img);
5485        } else if (token.type === 18) {
5486          if (token.name === "attr") {
5487            var attr = token.values.filter(isIdentToken);
5488            if (attr.length) {
5489              anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || ""));
5490            }
5491          } else if (token.name === "counter") {
5492            var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
5493            if (counter && isIdentToken(counter)) {
5494              var counterState = _this.counters.getCounterValue(counter.value);
5495              var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
5496              anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false)));
5497            }
5498          } else if (token.name === "counters") {
5499            var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
5500            if (counter && isIdentToken(counter)) {
5501              var counterStates = _this.counters.getCounterValues(counter.value);
5502              var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
5503              var separator = delim && delim.type === 0 ? delim.value : "";
5504              var text = counterStates.map(function(value2) {
5505                return createCounterText(value2, counterType_1, false);
5506              }).join(separator);
5507              anonymousReplacedElement.appendChild(document2.createTextNode(text));
5508            }
5509          } else ;
5510        } else if (token.type === 20) {
5511          switch (token.value) {
5512            case "open-quote":
5513              anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
5514              break;
5515            case "close-quote":
5516              anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
5517              break;
5518            default:
5519              anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
5520          }
5521        }
5522      });
5523      anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
5524      var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
5525      if (isSVGElementNode(clone)) {
5526        clone.className.baseValue += newClassName;
5527      } else {
5528        clone.className += newClassName;
5529      }
5530      return anonymousReplacedElement;
5531    };
5532    DocumentCloner2.destroy = function(container) {
5533      if (container.parentNode) {
5534        container.parentNode.removeChild(container);
5535        return true;
5536      }
5537      return false;
5538    };
5539    return DocumentCloner2;
5540  }
vendor: 11,592 bytes, lines 5540-5877
5540()
5541);
5542var PseudoElementType;
5543(function(PseudoElementType2) {
5544  PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE";
5545  PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER";
5546})(PseudoElementType || (PseudoElementType = {}));
5547var createIFrameContainer = function(ownerDocument, bounds) {
5548  var cloneIframeContainer = ownerDocument.createElement("iframe");
5549  cloneIframeContainer.className = "html2canvas-container";
5550  cloneIframeContainer.style.visibility = "hidden";
5551  cloneIframeContainer.style.position = "fixed";
5552  cloneIframeContainer.style.left = "-10000px";
5553  cloneIframeContainer.style.top = "0px";
5554  cloneIframeContainer.style.border = "0";
5555  cloneIframeContainer.width = bounds.width.toString();
5556  cloneIframeContainer.height = bounds.height.toString();
5557  cloneIframeContainer.scrolling = "no";
5558  cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true");
5559  ownerDocument.body.appendChild(cloneIframeContainer);
5560  return cloneIframeContainer;
5561};
5562var imageReady = function(img) {
5563  return new Promise(function(resolve) {
5564    if (img.complete) {
5565      resolve();
5566      return;
5567    }
5568    if (!img.src) {
5569      resolve();
5570      return;
5571    }
5572    img.onload = resolve;
5573    img.onerror = resolve;
5574  });
5575};
5576var imagesReady = function(document2) {
5577  return Promise.all([].slice.call(document2.images, 0).map(imageReady));
5578};
5579var iframeLoader = function(iframe) {
5580  return new Promise(function(resolve, reject) {
5581    var cloneWindow = iframe.contentWindow;
5582    if (!cloneWindow) {
5583      return reject("No window assigned for iframe");
5584    }
5585    var documentClone = cloneWindow.document;
5586    cloneWindow.onload = iframe.onload = function() {
5587      cloneWindow.onload = iframe.onload = null;
5588      var interval = setInterval(function() {
5589        if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") {
5590          clearInterval(interval);
5591          resolve(iframe);
5592        }
5593      }, 50);
5594    };
5595  });
5596};
5597var ignoredStyleProperties = [
5598  "all",
5599  "d",
5600  "content"
5601  // Safari shows pseudoelements if content is set
5602];
5603var copyCSSStyles = function(style, target) {
5604  for (var i = style.length - 1; i >= 0; i--) {
5605    var property = style.item(i);
5606    if (ignoredStyleProperties.indexOf(property) === -1) {
5607      target.style.setProperty(property, style.getPropertyValue(property));
5608    }
5609  }
5610  return target;
5611};
5612var serializeDoctype = function(doctype) {
5613  var str = "";
5614  if (doctype) {
5615    str += "<!DOCTYPE ";
5616    if (doctype.name) {
5617      str += doctype.name;
5618    }
5619    if (doctype.internalSubset) {
5620      str += doctype.internalSubset;
5621    }
5622    if (doctype.publicId) {
5623      str += '"' + doctype.publicId + '"';
5624    }
5625    if (doctype.systemId) {
5626      str += '"' + doctype.systemId + '"';
5627    }
5628    str += ">";
5629  }
5630  return str;
5631};
5632var restoreOwnerScroll = function(ownerDocument, x, y) {
5633  if (ownerDocument && ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
5634    ownerDocument.defaultView.scrollTo(x, y);
5635  }
5636};
5637var restoreNodeScroll = function(_a) {
5638  var element = _a[0], x = _a[1], y = _a[2];
5639  element.scrollLeft = x;
5640  element.scrollTop = y;
5641};
5642var PSEUDO_BEFORE = ":before";
5643var PSEUDO_AFTER = ":after";
5644var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before";
5645var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after";
5646var PSEUDO_HIDE_ELEMENT_STYLE = '{\n    content: "" !important;\n    display: none !important;\n}';
5647var createPseudoHideStyles = function(body) {
5648  createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n         ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
5649};
5650var createStyles = function(body, styles) {
5651  var document2 = body.ownerDocument;
5652  if (document2) {
5653    var style = document2.createElement("style");
5654    style.textContent = styles;
5655    body.appendChild(style);
5656  }
5657};
5658var CacheStorage = (
5659  /** @class */
5660  function() {
5661    function CacheStorage2() {
5662    }
5663    CacheStorage2.getOrigin = function(url) {
5664      var link = CacheStorage2._link;
5665      if (!link) {
5666        return "about:blank";
5667      }
5668      link.href = url;
5669      link.href = link.href;
5670      return link.protocol + link.hostname + link.port;
5671    };
5672    CacheStorage2.isSameOrigin = function(src) {
5673      return CacheStorage2.getOrigin(src) === CacheStorage2._origin;
5674    };
5675    CacheStorage2.setContext = function(window2) {
5676      CacheStorage2._link = window2.document.createElement("a");
5677      CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href);
5678    };
5679    CacheStorage2._origin = "about:blank";
5680    return CacheStorage2;
5681  }()
5682);
5683var Cache = (
5684  /** @class */
5685  function() {
5686    function Cache2(context, _options) {
5687      this.context = context;
5688      this._options = _options;
5689      this._cache = {};
5690    }
5691    Cache2.prototype.addImage = function(src) {
5692      var result = Promise.resolve();
5693      if (this.has(src)) {
5694        return result;
5695      }
5696      if (isBlobImage(src) || isRenderable(src)) {
5697        (this._cache[src] = this.loadImage(src)).catch(function() {
5698        });
5699        return result;
5700      }
5701      return result;
5702    };
5703    Cache2.prototype.match = function(src) {
5704      return this._cache[src];
5705    };
5706    Cache2.prototype.loadImage = function(key) {
5707      return __awaiter(this, void 0, void 0, function() {
5708        var isSameOrigin, useCORS, useProxy, src;
5709        var _this = this;
5710        return __generator(this, function(_a) {
5711          switch (_a.label) {
5712            case 0:
5713              isSameOrigin = CacheStorage.isSameOrigin(key);
5714              useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
5715              useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS;
5716              if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {
5717                return [
5718                  2
5719                  /*return*/
5720                ];
5721              }
5722              src = key;
5723              if (!useProxy) return [3, 2];
5724              return [4, this.proxy(src)];
5725            case 1:
5726              src = _a.sent();
5727              _a.label = 2;
5728            case 2:
5729              this.context.logger.debug("Added image " + key.substring(0, 256));
5730              return [4, new Promise(function(resolve, reject) {
5731                var img = new Image();
5732                img.onload = function() {
5733                  return resolve(img);
5734                };
5735                img.onerror = reject;
5736                if (isInlineBase64Image(src) || useCORS) {
5737                  img.crossOrigin = "anonymous";
5738                }
5739                img.src = src;
5740                if (img.complete === true) {
5741                  setTimeout(function() {
5742                    return resolve(img);
5743                  }, 500);
5744                }
5745                if (_this._options.imageTimeout > 0) {
5746                  setTimeout(function() {
5747                    return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image");
5748                  }, _this._options.imageTimeout);
5749                }
5750              })];
5751            case 3:
5752              return [2, _a.sent()];
5753          }
5754        });
5755      });
5756    };
5757    Cache2.prototype.has = function(key) {
5758      return typeof this._cache[key] !== "undefined";
5759    };
5760    Cache2.prototype.keys = function() {
5761      return Promise.resolve(Object.keys(this._cache));
5762    };
5763    Cache2.prototype.proxy = function(src) {
5764      var _this = this;
5765      var proxy = this._options.proxy;
5766      if (!proxy) {
5767        throw new Error("No proxy defined");
5768      }
5769      var key = src.substring(0, 256);
5770      return new Promise(function(resolve, reject) {
5771        var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text";
5772        var xhr = new XMLHttpRequest();
5773        xhr.onload = function() {
5774          if (xhr.status === 200) {
5775            if (responseType === "text") {
5776              resolve(xhr.response);
5777            } else {
5778              var reader_1 = new FileReader();
5779              reader_1.addEventListener("load", function() {
5780                return resolve(reader_1.result);
5781              }, false);
5782              reader_1.addEventListener("error", function(e2) {
5783                return reject(e2);
5784              }, false);
5785              reader_1.readAsDataURL(xhr.response);
5786            }
5787          } else {
5788            reject("Failed to proxy resource " + key + " with status code " + xhr.status);
5789          }
5790        };
5791        xhr.onerror = reject;
5792        var queryString = proxy.indexOf("?") > -1 ? "&" : "?";
5793        xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
5794        if (responseType !== "text" && xhr instanceof XMLHttpRequest) {
5795          xhr.responseType = responseType;
5796        }
5797        if (_this._options.imageTimeout) {
5798          var timeout_1 = _this._options.imageTimeout;
5799          xhr.timeout = timeout_1;
5800          xhr.ontimeout = function() {
5801            return reject("Timed out (" + timeout_1 + "ms) proxying " + key);
5802          };
5803        }
5804        xhr.send();
5805      });
5806    };
5807    return Cache2;
5808  }()
5809);
5810var INLINE_SVG = /^data:image\/svg\+xml/i;
5811var INLINE_BASE64 = /^data:image\/.*;base64,/i;
5812var INLINE_IMG = /^data:image\/.*/i;
5813var isRenderable = function(src) {
5814  return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);
5815};
5816var isInlineImage = function(src) {
5817  return INLINE_IMG.test(src);
5818};
5819var isInlineBase64Image = function(src) {
5820  return INLINE_BASE64.test(src);
5821};
5822var isBlobImage = function(src) {
5823  return src.substr(0, 4) === "blob";
5824};
5825var isSVG = function(src) {
5826  return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src);
5827};
5828var Vector = (
5829  /** @class */
5830  function() {
5831    function Vector2(x, y) {
5832      this.type = 0;
5833      this.x = x;
5834      this.y = y;
5835    }
5836    Vector2.prototype.add = function(deltaX, deltaY) {
5837      return new Vector2(this.x + deltaX, this.y + deltaY);
5838    };
5839    return Vector2;
5840  }()
5841);
5842var lerp = function(a2, b, t) {
5843  return new Vector(a2.x + (b.x - a2.x) * t, a2.y + (b.y - a2.y) * t);
5844};
5845var BezierCurve = (
5846  /** @class */
5847  function() {
5848    function BezierCurve2(start, startControl, endControl, end) {
5849      this.type = 1;
5850      this.start = start;
5851      this.startControl = startControl;
5852      this.endControl = endControl;
5853      this.end = end;
5854    }
5855    BezierCurve2.prototype.subdivide = function(t, firstHalf) {
5856      var ab = lerp(this.start, this.startControl, t);
5857      var bc = lerp(this.startControl, this.endControl, t);
5858      var cd = lerp(this.endControl, this.end, t);
5859      var abbc = lerp(ab, bc, t);
5860      var bccd = lerp(bc, cd, t);
5861      var dest = lerp(abbc, bccd, t);
5862      return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end);
5863    };
5864    BezierCurve2.prototype.add = function(deltaX, deltaY) {
5865      return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
5866    };
5867    BezierCurve2.prototype.reverse = function() {
5868      return new BezierCurve2(this.end, this.endControl, this.startControl, this.start);
5869    };
5870    return BezierCurve2;
5871  }()
5872);
5873var isBezierCurve = function(path) {
5874  return path.type === 1;
5875};
5876var BoundCurves = (
5877  /** @class */
vendor: 11,464 bytes, lines 5878-5987
5878  /* @__PURE__ */ function() {
5879    function BoundCurves2(element) {
5880      var styles = element.styles;
5881      var bounds = element.bounds;
5882      var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
5883      var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
5884      var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
5885      var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
5886      var factors = [];
5887      factors.push((tlh + trh) / bounds.width);
5888      factors.push((blh + brh) / bounds.width);
5889      factors.push((tlv + blv) / bounds.height);
5890      factors.push((trv + brv) / bounds.height);
5891      var maxFactor = Math.max.apply(Math, factors);
5892      if (maxFactor > 1) {
5893        tlh /= maxFactor;
5894        tlv /= maxFactor;
5895        trh /= maxFactor;
5896        trv /= maxFactor;
5897        brh /= maxFactor;
5898        brv /= maxFactor;
5899        blh /= maxFactor;
5900        blv /= maxFactor;
5901      }
5902      var topWidth = bounds.width - trh;
5903      var rightHeight = bounds.height - brv;
5904      var bottomWidth = bounds.width - brh;
5905      var leftHeight = bounds.height - blv;
5906      var borderTopWidth2 = styles.borderTopWidth;
5907      var borderRightWidth2 = styles.borderRightWidth;
5908      var borderBottomWidth2 = styles.borderBottomWidth;
5909      var borderLeftWidth2 = styles.borderLeftWidth;
5910      var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width);
5911      var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width);
5912      var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
5913      var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
5914      this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3);
5915      this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3);
5916      this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
5917      this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
5918      this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
5919      this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
5920      this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
5921      this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
5922      this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2);
5923      this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2);
5924      this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
5925      this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
5926      this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);
5927      this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top);
5928      this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
5929      this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height);
5930      this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2);
5931      this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2);
5932      this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2);
5933      this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2);
5934      this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2);
5935      this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2);
5936      this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
5937      this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
5938    }
5939    return BoundCurves2;
5940  }()
5941);
5942var CORNER;
5943(function(CORNER2) {
5944  CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT";
5945  CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT";
5946  CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
5947  CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
5948})(CORNER || (CORNER = {}));
5949var getCurvePoints = function(x, y, r1, r2, position2) {
5950  var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
5951  var ox = r1 * kappa;
5952  var oy = r2 * kappa;
5953  var xm = x + r1;
5954  var ym = y + r2;
5955  switch (position2) {
5956    case CORNER.TOP_LEFT:
5957      return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));
5958    case CORNER.TOP_RIGHT:
5959      return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));
5960    case CORNER.BOTTOM_RIGHT:
5961      return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));
5962    case CORNER.BOTTOM_LEFT:
5963    default:
5964      return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));
5965  }
5966};
5967var calculateBorderBoxPath = function(curves) {
5968  return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
5969};
5970var calculateContentBoxPath = function(curves) {
5971  return [
5972    curves.topLeftContentBox,
5973    curves.topRightContentBox,
5974    curves.bottomRightContentBox,
5975    curves.bottomLeftContentBox
5976  ];
5977};
5978var calculatePaddingBoxPath = function(curves) {
5979  return [
5980    curves.topLeftPaddingBox,
5981    curves.topRightPaddingBox,
5982    curves.bottomRightPaddingBox,
5983    curves.bottomLeftPaddingBox
5984  ];
5985};
5986var TransformEffect = (
5987  /** @class */
vendor: 4,740 bytes, lines 5988-6149
5988  /* @__PURE__ */ function() {
5989    function TransformEffect2(offsetX, offsetY, matrix2) {
5990      this.offsetX = offsetX;
5991      this.offsetY = offsetY;
5992      this.matrix = matrix2;
5993      this.type = 0;
5994      this.target = 2 | 4;
5995    }
5996    return TransformEffect2;
5997  }()
5998);
5999var ClipEffect = (
6000  /** @class */
6001  /* @__PURE__ */ function() {
6002    function ClipEffect2(path, target) {
6003      this.path = path;
6004      this.target = target;
6005      this.type = 1;
6006    }
6007    return ClipEffect2;
6008  }()
6009);
6010var OpacityEffect = (
6011  /** @class */
6012  /* @__PURE__ */ function() {
6013    function OpacityEffect2(opacity2) {
6014      this.opacity = opacity2;
6015      this.type = 2;
6016      this.target = 2 | 4;
6017    }
6018    return OpacityEffect2;
6019  }()
6020);
6021var isTransformEffect = function(effect) {
6022  return effect.type === 0;
6023};
6024var isClipEffect = function(effect) {
6025  return effect.type === 1;
6026};
6027var isOpacityEffect = function(effect) {
6028  return effect.type === 2;
6029};
6030var equalPath = function(a2, b) {
6031  if (a2.length === b.length) {
6032    return a2.some(function(v, i) {
6033      return v === b[i];
6034    });
6035  }
6036  return false;
6037};
6038var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) {
6039  return path.map(function(point, index) {
6040    switch (index) {
6041      case 0:
6042        return point.add(deltaX, deltaY);
6043      case 1:
6044        return point.add(deltaX + deltaW, deltaY);
6045      case 2:
6046        return point.add(deltaX + deltaW, deltaY + deltaH);
6047      case 3:
6048        return point.add(deltaX, deltaY + deltaH);
6049    }
6050    return point;
6051  });
6052};
6053var StackingContext = (
6054  /** @class */
6055  /* @__PURE__ */ function() {
6056    function StackingContext2(container) {
6057      this.element = container;
6058      this.inlineLevel = [];
6059      this.nonInlineLevel = [];
6060      this.negativeZIndex = [];
6061      this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
6062      this.positiveZIndex = [];
6063      this.nonPositionedFloats = [];
6064      this.nonPositionedInlineLevel = [];
6065    }
6066    return StackingContext2;
6067  }()
6068);
6069var ElementPaint = (
6070  /** @class */
6071  function() {
6072    function ElementPaint2(container, parent) {
6073      this.container = container;
6074      this.parent = parent;
6075      this.effects = [];
6076      this.curves = new BoundCurves(this.container);
6077      if (this.container.styles.opacity < 1) {
6078        this.effects.push(new OpacityEffect(this.container.styles.opacity));
6079      }
6080      if (this.container.styles.transform !== null) {
6081        var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
6082        var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
6083        var matrix2 = this.container.styles.transform;
6084        this.effects.push(new TransformEffect(offsetX, offsetY, matrix2));
6085      }
6086      if (this.container.styles.overflowX !== 0) {
6087        var borderBox = calculateBorderBoxPath(this.curves);
6088        var paddingBox2 = calculatePaddingBoxPath(this.curves);
6089        if (equalPath(borderBox, paddingBox2)) {
6090          this.effects.push(new ClipEffect(
6091            borderBox,
6092            2 | 4
6093            /* CONTENT */
6094          ));
6095        } else {
6096          this.effects.push(new ClipEffect(
6097            borderBox,
6098            2
6099            /* BACKGROUND_BORDERS */
6100          ));
6101          this.effects.push(new ClipEffect(
6102            paddingBox2,
6103            4
6104            /* CONTENT */
6105          ));
6106        }
6107      }
6108    }
6109    ElementPaint2.prototype.getEffects = function(target) {
6110      var inFlow = [
6111        2,
6112        3
6113        /* FIXED */
6114      ].indexOf(this.container.styles.position) === -1;
6115      var parent = this.parent;
6116      var effects = this.effects.slice(0);
6117      while (parent) {
6118        var croplessEffects = parent.effects.filter(function(effect) {
6119          return !isClipEffect(effect);
6120        });
6121        if (inFlow || parent.container.styles.position !== 0 || !parent.parent) {
6122          effects.unshift.apply(effects, croplessEffects);
6123          inFlow = [
6124            2,
6125            3
6126            /* FIXED */
6127          ].indexOf(parent.container.styles.position) === -1;
6128          if (parent.container.styles.overflowX !== 0) {
6129            var borderBox = calculateBorderBoxPath(parent.curves);
6130            var paddingBox2 = calculatePaddingBoxPath(parent.curves);
6131            if (!equalPath(borderBox, paddingBox2)) {
6132              effects.unshift(new ClipEffect(
6133                paddingBox2,
6134                2 | 4
6135                /* CONTENT */
6136              ));
6137            }
6138          }
6139        } else {
6140          effects.unshift.apply(effects, croplessEffects);
6141        }
6142        parent = parent.parent;
6143      }
6144      return effects.filter(function(effect) {
6145        return contains(effect.target, target);
6146      });
6147    };
6148    return ElementPaint2;
6149  }
vendor: 16,241 bytes, lines 6149-6506
6149()
6150);
6151var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) {
6152  parent.container.elements.forEach(function(child) {
6153    var treatAsRealStackingContext = contains(
6154      child.flags,
6155      4
6156      /* CREATES_REAL_STACKING_CONTEXT */
6157    );
6158    var createsStackingContext2 = contains(
6159      child.flags,
6160      2
6161      /* CREATES_STACKING_CONTEXT */
6162    );
6163    var paintContainer = new ElementPaint(child, parent);
6164    if (contains(
6165      child.styles.display,
6166      2048
6167      /* LIST_ITEM */
6168    )) {
6169      listItems.push(paintContainer);
6170    }
6171    var listOwnerItems = contains(
6172      child.flags,
6173      8
6174      /* IS_LIST_OWNER */
6175    ) ? [] : listItems;
6176    if (treatAsRealStackingContext || createsStackingContext2) {
6177      var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
6178      var stack = new StackingContext(paintContainer);
6179      if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
6180        var order_1 = child.styles.zIndex.order;
6181        if (order_1 < 0) {
6182          var index_1 = 0;
6183          parentStack.negativeZIndex.some(function(current, i) {
6184            if (order_1 > current.element.container.styles.zIndex.order) {
6185              index_1 = i;
6186              return false;
6187            } else if (index_1 > 0) {
6188              return true;
6189            }
6190            return false;
6191          });
6192          parentStack.negativeZIndex.splice(index_1, 0, stack);
6193        } else if (order_1 > 0) {
6194          var index_2 = 0;
6195          parentStack.positiveZIndex.some(function(current, i) {
6196            if (order_1 >= current.element.container.styles.zIndex.order) {
6197              index_2 = i + 1;
6198              return false;
6199            } else if (index_2 > 0) {
6200              return true;
6201            }
6202            return false;
6203          });
6204          parentStack.positiveZIndex.splice(index_2, 0, stack);
6205        } else {
6206          parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
6207        }
6208      } else {
6209        if (child.styles.isFloating()) {
6210          parentStack.nonPositionedFloats.push(stack);
6211        } else {
6212          parentStack.nonPositionedInlineLevel.push(stack);
6213        }
6214      }
6215      parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
6216    } else {
6217      if (child.styles.isInlineLevel()) {
6218        stackingContext.inlineLevel.push(paintContainer);
6219      } else {
6220        stackingContext.nonInlineLevel.push(paintContainer);
6221      }
6222      parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
6223    }
6224    if (contains(
6225      child.flags,
6226      8
6227      /* IS_LIST_OWNER */
6228    )) {
6229      processListItems(child, listOwnerItems);
6230    }
6231  });
6232};
6233var processListItems = function(owner, elements) {
6234  var numbering = owner instanceof OLElementContainer ? owner.start : 1;
6235  var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
6236  for (var i = 0; i < elements.length; i++) {
6237    var item = elements[i];
6238    if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) {
6239      numbering = item.container.value;
6240    }
6241    item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
6242    numbering += reversed ? -1 : 1;
6243  }
6244};
6245var parseStackingContexts = function(container) {
6246  var paintContainer = new ElementPaint(container, null);
6247  var root = new StackingContext(paintContainer);
6248  var listItems = [];
6249  parseStackTree(paintContainer, root, root, listItems);
6250  processListItems(paintContainer.container, listItems);
6251  return root;
6252};
6253var parsePathForBorder = function(curves, borderSide) {
6254  switch (borderSide) {
6255    case 0:
6256      return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
6257    case 1:
6258      return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
6259    case 2:
6260      return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
6261    case 3:
6262    default:
6263      return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
6264  }
6265};
6266var parsePathForBorderDoubleOuter = function(curves, borderSide) {
6267  switch (borderSide) {
6268    case 0:
6269      return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
6270    case 1:
6271      return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
6272    case 2:
6273      return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
6274    case 3:
6275    default:
6276      return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
6277  }
6278};
6279var parsePathForBorderDoubleInner = function(curves, borderSide) {
6280  switch (borderSide) {
6281    case 0:
6282      return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
6283    case 1:
6284      return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
6285    case 2:
6286      return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
6287    case 3:
6288    default:
6289      return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
6290  }
6291};
6292var parsePathForBorderStroke = function(curves, borderSide) {
6293  switch (borderSide) {
6294    case 0:
6295      return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
6296    case 1:
6297      return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
6298    case 2:
6299      return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
6300    case 3:
6301    default:
6302      return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
6303  }
6304};
6305var createStrokePathFromCurves = function(outer1, outer2) {
6306  var path = [];
6307  if (isBezierCurve(outer1)) {
6308    path.push(outer1.subdivide(0.5, false));
6309  } else {
6310    path.push(outer1);
6311  }
6312  if (isBezierCurve(outer2)) {
6313    path.push(outer2.subdivide(0.5, true));
6314  } else {
6315    path.push(outer2);
6316  }
6317  return path;
6318};
6319var createPathFromCurves = function(outer1, inner1, outer2, inner2) {
6320  var path = [];
6321  if (isBezierCurve(outer1)) {
6322    path.push(outer1.subdivide(0.5, false));
6323  } else {
6324    path.push(outer1);
6325  }
6326  if (isBezierCurve(outer2)) {
6327    path.push(outer2.subdivide(0.5, true));
6328  } else {
6329    path.push(outer2);
6330  }
6331  if (isBezierCurve(inner2)) {
6332    path.push(inner2.subdivide(0.5, true).reverse());
6333  } else {
6334    path.push(inner2);
6335  }
6336  if (isBezierCurve(inner1)) {
6337    path.push(inner1.subdivide(0.5, false).reverse());
6338  } else {
6339    path.push(inner1);
6340  }
6341  return path;
6342};
6343var paddingBox = function(element) {
6344  var bounds = element.bounds;
6345  var styles = element.styles;
6346  return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
6347};
6348var contentBox = function(element) {
6349  var styles = element.styles;
6350  var bounds = element.bounds;
6351  var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width);
6352  var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width);
6353  var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width);
6354  var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width);
6355  return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2));
6356};
6357var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) {
6358  if (backgroundOrigin2 === 0) {
6359    return element.bounds;
6360  }
6361  if (backgroundOrigin2 === 2) {
6362    return contentBox(element);
6363  }
6364  return paddingBox(element);
6365};
6366var calculateBackgroundPaintingArea = function(backgroundClip2, element) {
6367  if (backgroundClip2 === 0) {
6368    return element.bounds;
6369  }
6370  if (backgroundClip2 === 2) {
6371    return contentBox(element);
6372  }
6373  return paddingBox(element);
6374};
6375var calculateBackgroundRendering = function(container, index, intrinsicSize) {
6376  var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
6377  var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
6378  var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
6379  var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
6380  var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
6381  var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
6382  var offsetX = Math.round(backgroundPositioningArea.left + position2[0]);
6383  var offsetY = Math.round(backgroundPositioningArea.top + position2[1]);
6384  return [path, offsetX, offsetY, sizeWidth, sizeHeight];
6385};
6386var isAuto = function(token) {
6387  return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;
6388};
6389var hasIntrinsicValue = function(value) {
6390  return typeof value === "number";
6391};
6392var calculateBackgroundSize = function(size, _a, bounds) {
6393  var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
6394  var first = size[0], second = size[1];
6395  if (!first) {
6396    return [0, 0];
6397  }
6398  if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
6399    return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
6400  }
6401  var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
6402  if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
6403    if (hasIntrinsicValue(intrinsicProportion)) {
6404      var targetRatio = bounds.width / bounds.height;
6405      return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];
6406    }
6407    return [bounds.width, bounds.height];
6408  }
6409  var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
6410  var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
6411  var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
6412  if (isAuto(first) && (!second || isAuto(second))) {
6413    if (hasIntrinsicWidth && hasIntrinsicHeight) {
6414      return [intrinsicWidth, intrinsicHeight];
6415    }
6416    if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
6417      return [bounds.width, bounds.height];
6418    }
6419    if (hasIntrinsicDimensions && hasIntrinsicProportion) {
6420      var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;
6421      var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;
6422      return [width_1, height_1];
6423    }
6424    var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
6425    var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
6426    return [width_2, height_2];
6427  }
6428  if (hasIntrinsicProportion) {
6429    var width_3 = 0;
6430    var height_3 = 0;
6431    if (isLengthPercentage(first)) {
6432      width_3 = getAbsoluteValue(first, bounds.width);
6433    } else if (isLengthPercentage(second)) {
6434      height_3 = getAbsoluteValue(second, bounds.height);
6435    }
6436    if (isAuto(first)) {
6437      width_3 = height_3 * intrinsicProportion;
6438    } else if (!second || isAuto(second)) {
6439      height_3 = width_3 / intrinsicProportion;
6440    }
6441    return [width_3, height_3];
6442  }
6443  var width = null;
6444  var height = null;
6445  if (isLengthPercentage(first)) {
6446    width = getAbsoluteValue(first, bounds.width);
6447  } else if (second && isLengthPercentage(second)) {
6448    height = getAbsoluteValue(second, bounds.height);
6449  }
6450  if (width !== null && (!second || isAuto(second))) {
6451    height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;
6452  }
6453  if (height !== null && isAuto(first)) {
6454    width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;
6455  }
6456  if (width !== null && height !== null) {
6457    return [width, height];
6458  }
6459  throw new Error("Unable to calculate background-size for element");
6460};
6461var getBackgroundValueForIndex = function(values, index) {
6462  var value = values[index];
6463  if (typeof value === "undefined") {
6464    return values[0];
6465  }
6466  return value;
6467};
6468var calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
6469  var x = _a[0], y = _a[1];
6470  var width = _b[0], height = _b[1];
6471  switch (repeat) {
6472    case 2:
6473      return [
6474        new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
6475        new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
6476        new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
6477        new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
6478      ];
6479    case 3:
6480      return [
6481        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
6482        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
6483        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
6484        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
6485      ];
6486    case 1:
6487      return [
6488        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
6489        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
6490        new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
6491        new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
6492      ];
6493    default:
6494      return [
6495        new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
6496        new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
6497        new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
6498        new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
6499      ];
6500  }
6501};
6502var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
6503var SAMPLE_TEXT = "Hidden Text";
6504var FontMetrics = (
6505  /** @class */
6506  
vendor: 1,889 bytes, lines 6506-6556
6506function() {
6507    function FontMetrics2(document2) {
6508      this._data = {};
6509      this._document = document2;
6510    }
6511    FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) {
6512      var container = this._document.createElement("div");
6513      var img = this._document.createElement("img");
6514      var span = this._document.createElement("span");
6515      var body = this._document.body;
6516      container.style.visibility = "hidden";
6517      container.style.fontFamily = fontFamily2;
6518      container.style.fontSize = fontSize2;
6519      container.style.margin = "0";
6520      container.style.padding = "0";
6521      container.style.whiteSpace = "nowrap";
6522      body.appendChild(container);
6523      img.src = SMALL_IMAGE;
6524      img.width = 1;
6525      img.height = 1;
6526      img.style.margin = "0";
6527      img.style.padding = "0";
6528      img.style.verticalAlign = "baseline";
6529      span.style.fontFamily = fontFamily2;
6530      span.style.fontSize = fontSize2;
6531      span.style.margin = "0";
6532      span.style.padding = "0";
6533      span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
6534      container.appendChild(span);
6535      container.appendChild(img);
6536      var baseline = img.offsetTop - span.offsetTop + 2;
6537      container.removeChild(span);
6538      container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
6539      container.style.lineHeight = "normal";
6540      img.style.verticalAlign = "super";
6541      var middle = img.offsetTop - container.offsetTop + 2;
6542      body.removeChild(container);
6543      return { baseline, middle };
6544    };
6545    FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) {
6546      var key = fontFamily2 + " " + fontSize2;
6547      if (typeof this._data[key] === "undefined") {
6548        this._data[key] = this.parseMetrics(fontFamily2, fontSize2);
6549      }
6550      return this._data[key];
6551    };
6552    return FontMetrics2;
6553  }()
6554);
6555var Renderer = (
6556  /** @class */
6557  /* @__PURE__ */ function() {
6558    function Renderer2(context, options) {
6559      this.context = context;
6560      this.options = options;
6561    }
6562    return Renderer2;
6563  }()
6564);
6565var MASK_OFFSET = 1e4;
6566var CanvasRenderer = (
6567  /** @class */
6568  
vendor: 40,413 bytes, lines 6568-7513
6568function(_super) {
6569    __extends(CanvasRenderer2, _super);
6570    function CanvasRenderer2(context, options) {
6571      var _this = _super.call(this, context, options) || this;
6572      _this._activeEffects = [];
6573      _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
6574      _this.ctx = _this.canvas.getContext("2d");
6575      if (!options.canvas) {
6576        _this.canvas.width = Math.floor(options.width * options.scale);
6577        _this.canvas.height = Math.floor(options.height * options.scale);
6578        _this.canvas.style.width = options.width + "px";
6579        _this.canvas.style.height = options.height + "px";
6580      }
6581      _this.fontMetrics = new FontMetrics(document);
6582      _this.ctx.scale(_this.options.scale, _this.options.scale);
6583      _this.ctx.translate(-options.x, -options.y);
6584      _this.ctx.textBaseline = "bottom";
6585      _this._activeEffects = [];
6586      _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
6587      return _this;
6588    }
6589    CanvasRenderer2.prototype.applyEffects = function(effects) {
6590      var _this = this;
6591      while (this._activeEffects.length) {
6592        this.popEffect();
6593      }
6594      effects.forEach(function(effect) {
6595        return _this.applyEffect(effect);
6596      });
6597    };
6598    CanvasRenderer2.prototype.applyEffect = function(effect) {
6599      this.ctx.save();
6600      if (isOpacityEffect(effect)) {
6601        this.ctx.globalAlpha = effect.opacity;
6602      }
6603      if (isTransformEffect(effect)) {
6604        this.ctx.translate(effect.offsetX, effect.offsetY);
6605        this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
6606        this.ctx.translate(-effect.offsetX, -effect.offsetY);
6607      }
6608      if (isClipEffect(effect)) {
6609        this.path(effect.path);
6610        this.ctx.clip();
6611      }
6612      this._activeEffects.push(effect);
6613    };
6614    CanvasRenderer2.prototype.popEffect = function() {
6615      this._activeEffects.pop();
6616      this.ctx.restore();
6617    };
6618    CanvasRenderer2.prototype.renderStack = function(stack) {
6619      return __awaiter(this, void 0, void 0, function() {
6620        var styles;
6621        return __generator(this, function(_a) {
6622          switch (_a.label) {
6623            case 0:
6624              styles = stack.element.container.styles;
6625              if (!styles.isVisible()) return [3, 2];
6626              return [4, this.renderStackContent(stack)];
6627            case 1:
6628              _a.sent();
6629              _a.label = 2;
6630            case 2:
6631              return [
6632                2
6633                /*return*/
6634              ];
6635          }
6636        });
6637      });
6638    };
6639    CanvasRenderer2.prototype.renderNode = function(paint) {
6640      return __awaiter(this, void 0, void 0, function() {
6641        return __generator(this, function(_a) {
6642          switch (_a.label) {
6643            case 0:
6644              if (contains(
6645                paint.container.flags,
6646                16
6647                /* DEBUG_RENDER */
6648              )) {
6649                debugger;
6650              }
6651              if (!paint.container.styles.isVisible()) return [3, 3];
6652              return [4, this.renderNodeBackgroundAndBorders(paint)];
6653            case 1:
6654              _a.sent();
6655              return [4, this.renderNodeContent(paint)];
6656            case 2:
6657              _a.sent();
6658              _a.label = 3;
6659            case 3:
6660              return [
6661                2
6662                /*return*/
6663              ];
6664          }
6665        });
6666      });
6667    };
6668    CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) {
6669      var _this = this;
6670      if (letterSpacing2 === 0) {
6671        this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
6672      } else {
6673        var letters = segmentGraphemes(text.text);
6674        letters.reduce(function(left, letter) {
6675          _this.ctx.fillText(letter, left, text.bounds.top + baseline);
6676          return left + _this.ctx.measureText(letter).width;
6677        }, text.bounds.left);
6678      }
6679    };
6680    CanvasRenderer2.prototype.createFontStyle = function(styles) {
6681      var fontVariant2 = styles.fontVariant.filter(function(variant) {
6682        return variant === "normal" || variant === "small-caps";
6683      }).join("");
6684      var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", ");
6685      var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px";
6686      return [
6687        [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "),
6688        fontFamily2,
6689        fontSize2
6690      ];
6691    };
6692    CanvasRenderer2.prototype.renderTextNode = function(text, styles) {
6693      return __awaiter(this, void 0, void 0, function() {
6694        var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2;
6695        var _this = this;
6696        return __generator(this, function(_c) {
6697          _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2];
6698          this.ctx.font = font;
6699          this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr";
6700          this.ctx.textAlign = "left";
6701          this.ctx.textBaseline = "alphabetic";
6702          _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle;
6703          paintOrder2 = styles.paintOrder;
6704          text.textBounds.forEach(function(text2) {
6705            paintOrder2.forEach(function(paintOrderLayer) {
6706              switch (paintOrderLayer) {
6707                case 0:
6708                  _this.ctx.fillStyle = asString(styles.color);
6709                  _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
6710                  var textShadows = styles.textShadow;
6711                  if (textShadows.length && text2.text.trim().length) {
6712                    textShadows.slice(0).reverse().forEach(function(textShadow2) {
6713                      _this.ctx.shadowColor = asString(textShadow2.color);
6714                      _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale;
6715                      _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale;
6716                      _this.ctx.shadowBlur = textShadow2.blur.number;
6717                      _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
6718                    });
6719                    _this.ctx.shadowColor = "";
6720                    _this.ctx.shadowOffsetX = 0;
6721                    _this.ctx.shadowOffsetY = 0;
6722                    _this.ctx.shadowBlur = 0;
6723                  }
6724                  if (styles.textDecorationLine.length) {
6725                    _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
6726                    styles.textDecorationLine.forEach(function(textDecorationLine2) {
6727                      switch (textDecorationLine2) {
6728                        case 1:
6729                          _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1);
6730                          break;
6731                        case 2:
6732                          _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1);
6733                          break;
6734                        case 3:
6735                          _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1);
6736                          break;
6737                      }
6738                    });
6739                  }
6740                  break;
6741                case 1:
6742                  if (styles.webkitTextStrokeWidth && text2.text.trim().length) {
6743                    _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
6744                    _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
6745                    _this.ctx.lineJoin = !!window.chrome ? "miter" : "round";
6746                    _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline);
6747                  }
6748                  _this.ctx.strokeStyle = "";
6749                  _this.ctx.lineWidth = 0;
6750                  _this.ctx.lineJoin = "miter";
6751                  break;
6752              }
6753            });
6754          });
6755          return [
6756            2
6757            /*return*/
6758          ];
6759        });
6760      });
6761    };
6762    CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) {
6763      if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
6764        var box = contentBox(container);
6765        var path = calculatePaddingBoxPath(curves);
6766        this.path(path);
6767        this.ctx.save();
6768        this.ctx.clip();
6769        this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
6770        this.ctx.restore();
6771      }
6772    };
6773    CanvasRenderer2.prototype.renderNodeContent = function(paint) {
6774      return __awaiter(this, void 0, void 0, function() {
6775        var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size, _b, fontFamily2, fontSize2, baseline, bounds, x, textBounds, img, image2, url, fontFamily2, bounds;
6776        return __generator(this, function(_c) {
6777          switch (_c.label) {
6778            case 0:
6779              this.applyEffects(paint.getEffects(
6780                4
6781                /* CONTENT */
6782              ));
6783              container = paint.container;
6784              curves = paint.curves;
6785              styles = container.styles;
6786              _i = 0, _a = container.textNodes;
6787              _c.label = 1;
6788            case 1:
6789              if (!(_i < _a.length)) return [3, 4];
6790              child = _a[_i];
6791              return [4, this.renderTextNode(child, styles)];
6792            case 2:
6793              _c.sent();
6794              _c.label = 3;
6795            case 3:
6796              _i++;
6797              return [3, 1];
6798            case 4:
6799              if (!(container instanceof ImageElementContainer)) return [3, 8];
6800              _c.label = 5;
6801            case 5:
6802              _c.trys.push([5, 7, , 8]);
6803              return [4, this.context.cache.match(container.src)];
6804            case 6:
6805              image2 = _c.sent();
6806              this.renderReplacedElement(container, curves, image2);
6807              return [3, 8];
6808            case 7:
6809              _c.sent();
6810              this.context.logger.error("Error loading image " + container.src);
6811              return [3, 8];
6812            case 8:
6813              if (container instanceof CanvasElementContainer) {
6814                this.renderReplacedElement(container, curves, container.canvas);
6815              }
6816              if (!(container instanceof SVGElementContainer)) return [3, 12];
6817              _c.label = 9;
6818            case 9:
6819              _c.trys.push([9, 11, , 12]);
6820              return [4, this.context.cache.match(container.svg)];
6821            case 10:
6822              image2 = _c.sent();
6823              this.renderReplacedElement(container, curves, image2);
6824              return [3, 12];
6825            case 11:
6826              _c.sent();
6827              this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
6828              return [3, 12];
6829            case 12:
6830              if (!(container instanceof IFrameElementContainer && container.tree)) return [3, 14];
6831              iframeRenderer = new CanvasRenderer2(this.context, {
6832                scale: this.options.scale,
6833                backgroundColor: container.backgroundColor,
6834                x: 0,
6835                y: 0,
6836                width: container.width,
6837                height: container.height
6838              });
6839              return [4, iframeRenderer.render(container.tree)];
6840            case 13:
6841              canvas = _c.sent();
6842              if (container.width && container.height) {
6843                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
6844              }
6845              _c.label = 14;
6846            case 14:
6847              if (container instanceof InputElementContainer) {
6848                size = Math.min(container.bounds.width, container.bounds.height);
6849                if (container.type === CHECKBOX) {
6850                  if (container.checked) {
6851                    this.ctx.save();
6852                    this.path([
6853                      new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
6854                      new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
6855                      new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
6856                      new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
6857                      new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
6858                      new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
6859                      new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
6860                    ]);
6861                    this.ctx.fillStyle = asString(INPUT_COLOR);
6862                    this.ctx.fill();
6863                    this.ctx.restore();
6864                  }
6865                } else if (container.type === RADIO) {
6866                  if (container.checked) {
6867                    this.ctx.save();
6868                    this.ctx.beginPath();
6869                    this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
6870                    this.ctx.fillStyle = asString(INPUT_COLOR);
6871                    this.ctx.fill();
6872                    this.ctx.restore();
6873                  }
6874                }
6875              }
6876              if (isTextInputElement(container) && container.value.length) {
6877                _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1];
6878                baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline;
6879                this.ctx.font = fontFamily2;
6880                this.ctx.fillStyle = asString(styles.color);
6881                this.ctx.textBaseline = "alphabetic";
6882                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
6883                bounds = contentBox(container);
6884                x = 0;
6885                switch (container.styles.textAlign) {
6886                  case 1:
6887                    x += bounds.width / 2;
6888                    break;
6889                  case 2:
6890                    x += bounds.width;
6891                    break;
6892                }
6893                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
6894                this.ctx.save();
6895                this.path([
6896                  new Vector(bounds.left, bounds.top),
6897                  new Vector(bounds.left + bounds.width, bounds.top),
6898                  new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
6899                  new Vector(bounds.left, bounds.top + bounds.height)
6900                ]);
6901                this.ctx.clip();
6902                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
6903                this.ctx.restore();
6904                this.ctx.textBaseline = "alphabetic";
6905                this.ctx.textAlign = "left";
6906              }
6907              if (!contains(
6908                container.styles.display,
6909                2048
6910                /* LIST_ITEM */
6911              )) return [3, 20];
6912              if (!(container.styles.listStyleImage !== null)) return [3, 19];
6913              img = container.styles.listStyleImage;
6914              if (!(img.type === 0)) return [3, 18];
6915              image2 = void 0;
6916              url = img.url;
6917              _c.label = 15;
6918            case 15:
6919              _c.trys.push([15, 17, , 18]);
6920              return [4, this.context.cache.match(url)];
6921            case 16:
6922              image2 = _c.sent();
6923              this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top);
6924              return [3, 18];
6925            case 17:
6926              _c.sent();
6927              this.context.logger.error("Error loading list-style-image " + url);
6928              return [3, 18];
6929            case 18:
6930              return [3, 20];
6931            case 19:
6932              if (paint.listValue && container.styles.listStyleType !== -1) {
6933                fontFamily2 = this.createFontStyle(styles)[0];
6934                this.ctx.font = fontFamily2;
6935                this.ctx.fillStyle = asString(styles.color);
6936                this.ctx.textBaseline = "middle";
6937                this.ctx.textAlign = "right";
6938                bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
6939                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
6940                this.ctx.textBaseline = "bottom";
6941                this.ctx.textAlign = "left";
6942              }
6943              _c.label = 20;
6944            case 20:
6945              return [
6946                2
6947                /*return*/
6948              ];
6949          }
6950        });
6951      });
6952    };
6953    CanvasRenderer2.prototype.renderStackContent = function(stack) {
6954      return __awaiter(this, void 0, void 0, function() {
6955        var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
6956        return __generator(this, function(_p) {
6957          switch (_p.label) {
6958            case 0:
6959              if (contains(
6960                stack.element.container.flags,
6961                16
6962                /* DEBUG_RENDER */
6963              )) {
6964                debugger;
6965              }
6966              return [4, this.renderNodeBackgroundAndBorders(stack.element)];
6967            case 1:
6968              _p.sent();
6969              _i = 0, _a = stack.negativeZIndex;
6970              _p.label = 2;
6971            case 2:
6972              if (!(_i < _a.length)) return [3, 5];
6973              child = _a[_i];
6974              return [4, this.renderStack(child)];
6975            case 3:
6976              _p.sent();
6977              _p.label = 4;
6978            case 4:
6979              _i++;
6980              return [3, 2];
6981            case 5:
6982              return [4, this.renderNodeContent(stack.element)];
6983            case 6:
6984              _p.sent();
6985              _b = 0, _c = stack.nonInlineLevel;
6986              _p.label = 7;
6987            case 7:
6988              if (!(_b < _c.length)) return [3, 10];
6989              child = _c[_b];
6990              return [4, this.renderNode(child)];
6991            case 8:
6992              _p.sent();
6993              _p.label = 9;
6994            case 9:
6995              _b++;
6996              return [3, 7];
6997            case 10:
6998              _d = 0, _e = stack.nonPositionedFloats;
6999              _p.label = 11;
7000            case 11:
7001              if (!(_d < _e.length)) return [3, 14];
7002              child = _e[_d];
7003              return [4, this.renderStack(child)];
7004            case 12:
7005              _p.sent();
7006              _p.label = 13;
7007            case 13:
7008              _d++;
7009              return [3, 11];
7010            case 14:
7011              _f = 0, _g = stack.nonPositionedInlineLevel;
7012              _p.label = 15;
7013            case 15:
7014              if (!(_f < _g.length)) return [3, 18];
7015              child = _g[_f];
7016              return [4, this.renderStack(child)];
7017            case 16:
7018              _p.sent();
7019              _p.label = 17;
7020            case 17:
7021              _f++;
7022              return [3, 15];
7023            case 18:
7024              _h = 0, _j = stack.inlineLevel;
7025              _p.label = 19;
7026            case 19:
7027              if (!(_h < _j.length)) return [3, 22];
7028              child = _j[_h];
7029              return [4, this.renderNode(child)];
7030            case 20:
7031              _p.sent();
7032              _p.label = 21;
7033            case 21:
7034              _h++;
7035              return [3, 19];
7036            case 22:
7037              _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
7038              _p.label = 23;
7039            case 23:
7040              if (!(_k < _l.length)) return [3, 26];
7041              child = _l[_k];
7042              return [4, this.renderStack(child)];
7043            case 24:
7044              _p.sent();
7045              _p.label = 25;
7046            case 25:
7047              _k++;
7048              return [3, 23];
7049            case 26:
7050              _m = 0, _o = stack.positiveZIndex;
7051              _p.label = 27;
7052            case 27:
7053              if (!(_m < _o.length)) return [3, 30];
7054              child = _o[_m];
7055              return [4, this.renderStack(child)];
7056            case 28:
7057              _p.sent();
7058              _p.label = 29;
7059            case 29:
7060              _m++;
7061              return [3, 27];
7062            case 30:
7063              return [
7064                2
7065                /*return*/
7066              ];
7067          }
7068        });
7069      });
7070    };
7071    CanvasRenderer2.prototype.mask = function(paths) {
7072      this.ctx.beginPath();
7073      this.ctx.moveTo(0, 0);
7074      this.ctx.lineTo(this.canvas.width, 0);
7075      this.ctx.lineTo(this.canvas.width, this.canvas.height);
7076      this.ctx.lineTo(0, this.canvas.height);
7077      this.ctx.lineTo(0, 0);
7078      this.formatPath(paths.slice(0).reverse());
7079      this.ctx.closePath();
7080    };
7081    CanvasRenderer2.prototype.path = function(paths) {
7082      this.ctx.beginPath();
7083      this.formatPath(paths);
7084      this.ctx.closePath();
7085    };
7086    CanvasRenderer2.prototype.formatPath = function(paths) {
7087      var _this = this;
7088      paths.forEach(function(point, index) {
7089        var start = isBezierCurve(point) ? point.start : point;
7090        if (index === 0) {
7091          _this.ctx.moveTo(start.x, start.y);
7092        } else {
7093          _this.ctx.lineTo(start.x, start.y);
7094        }
7095        if (isBezierCurve(point)) {
7096          _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
7097        }
7098      });
7099    };
7100    CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) {
7101      this.path(path);
7102      this.ctx.fillStyle = pattern;
7103      this.ctx.translate(offsetX, offsetY);
7104      this.ctx.fill();
7105      this.ctx.translate(-offsetX, -offsetY);
7106    };
7107    CanvasRenderer2.prototype.resizeImage = function(image2, width, height) {
7108      var _a;
7109      if (image2.width === width && image2.height === height) {
7110        return image2;
7111      }
7112      var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
7113      var canvas = ownerDocument.createElement("canvas");
7114      canvas.width = Math.max(1, width);
7115      canvas.height = Math.max(1, height);
7116      var ctx = canvas.getContext("2d");
7117      ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height);
7118      return canvas;
7119    };
7120    CanvasRenderer2.prototype.renderBackgroundImage = function(container) {
7121      return __awaiter(this, void 0, void 0, function() {
7122        var index, _loop_1, this_1, _i, _a, backgroundImage2;
7123        return __generator(this, function(_b) {
7124          switch (_b.label) {
7125            case 0:
7126              index = container.styles.backgroundImage.length - 1;
7127              _loop_1 = function(backgroundImage3) {
7128                var image2, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position2, x, y, _g, rx, ry, radialGradient_1, midX, midY, f2, invF;
7129                return __generator(this, function(_h) {
7130                  switch (_h.label) {
7131                    case 0:
7132                      if (!(backgroundImage3.type === 0)) return [3, 5];
7133                      image2 = void 0;
7134                      url = backgroundImage3.url;
7135                      _h.label = 1;
7136                    case 1:
7137                      _h.trys.push([1, 3, , 4]);
7138                      return [4, this_1.context.cache.match(url)];
7139                    case 2:
7140                      image2 = _h.sent();
7141                      return [3, 4];
7142                    case 3:
7143                      _h.sent();
7144                      this_1.context.logger.error("Error loading background-image " + url);
7145                      return [3, 4];
7146                    case 4:
7147                      if (image2) {
7148                        _c = calculateBackgroundRendering(container, index, [
7149                          image2.width,
7150                          image2.height,
7151                          image2.width / image2.height
7152                        ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];
7153                        pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat");
7154                        this_1.renderRepeat(path, pattern, x, y);
7155                      }
7156                      return [3, 6];
7157                    case 5:
7158                      if (isLinearGradient(backgroundImage3)) {
7159                        _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];
7160                        _e = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
7161                        canvas = document.createElement("canvas");
7162                        canvas.width = width;
7163                        canvas.height = height;
7164                        ctx = canvas.getContext("2d");
7165                        gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
7166                        processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) {
7167                          return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
7168                        });
7169                        ctx.fillStyle = gradient_1;
7170                        ctx.fillRect(0, 0, width, height);
7171                        if (width > 0 && height > 0) {
7172                          pattern = this_1.ctx.createPattern(canvas, "repeat");
7173                          this_1.renderRepeat(path, pattern, x, y);
7174                        }
7175                      } else if (isRadialGradient(backgroundImage3)) {
7176                        _f = calculateBackgroundRendering(container, index, [
7177                          null,
7178                          null,
7179                          null
7180                        ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
7181                        position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position;
7182                        x = getAbsoluteValue(position2[0], width);
7183                        y = getAbsoluteValue(position2[position2.length - 1], height);
7184                        _g = calculateRadius(backgroundImage3, x, y, width, height), rx = _g[0], ry = _g[1];
7185                        if (rx > 0 && ry > 0) {
7186                          radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
7187                          processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) {
7188                            return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
7189                          });
7190                          this_1.path(path);
7191                          this_1.ctx.fillStyle = radialGradient_1;
7192                          if (rx !== ry) {
7193                            midX = container.bounds.left + 0.5 * container.bounds.width;
7194                            midY = container.bounds.top + 0.5 * container.bounds.height;
7195                            f2 = ry / rx;
7196                            invF = 1 / f2;
7197                            this_1.ctx.save();
7198                            this_1.ctx.translate(midX, midY);
7199                            this_1.ctx.transform(1, 0, 0, f2, 0, 0);
7200                            this_1.ctx.translate(-midX, -midY);
7201                            this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
7202                            this_1.ctx.restore();
7203                          } else {
7204                            this_1.ctx.fill();
7205                          }
7206                        }
7207                      }
7208                      _h.label = 6;
7209                    case 6:
7210                      index--;
7211                      return [
7212                        2
7213                        /*return*/
7214                      ];
7215                  }
7216                });
7217              };
7218              this_1 = this;
7219              _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
7220              _b.label = 1;
7221            case 1:
7222              if (!(_i < _a.length)) return [3, 4];
7223              backgroundImage2 = _a[_i];
7224              return [5, _loop_1(backgroundImage2)];
7225            case 2:
7226              _b.sent();
7227              _b.label = 3;
7228            case 3:
7229              _i++;
7230              return [3, 1];
7231            case 4:
7232              return [
7233                2
7234                /*return*/
7235              ];
7236          }
7237        });
7238      });
7239    };
7240    CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) {
7241      return __awaiter(this, void 0, void 0, function() {
7242        return __generator(this, function(_a) {
7243          this.path(parsePathForBorder(curvePoints, side));
7244          this.ctx.fillStyle = asString(color2);
7245          this.ctx.fill();
7246          return [
7247            2
7248            /*return*/
7249          ];
7250        });
7251      });
7252    };
7253    CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) {
7254      return __awaiter(this, void 0, void 0, function() {
7255        var outerPaths, innerPaths;
7256        return __generator(this, function(_a) {
7257          switch (_a.label) {
7258            case 0:
7259              if (!(width < 3)) return [3, 2];
7260              return [4, this.renderSolidBorder(color2, side, curvePoints)];
7261            case 1:
7262              _a.sent();
7263              return [
7264                2
7265                /*return*/
7266              ];
7267            case 2:
7268              outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
7269              this.path(outerPaths);
7270              this.ctx.fillStyle = asString(color2);
7271              this.ctx.fill();
7272              innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
7273              this.path(innerPaths);
7274              this.ctx.fill();
7275              return [
7276                2
7277                /*return*/
7278              ];
7279          }
7280        });
7281      });
7282    };
7283    CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) {
7284      return __awaiter(this, void 0, void 0, function() {
7285        var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
7286        var _this = this;
7287        return __generator(this, function(_a) {
7288          switch (_a.label) {
7289            case 0:
7290              this.applyEffects(paint.getEffects(
7291                2
7292                /* BACKGROUND_BORDERS */
7293              ));
7294              styles = paint.container.styles;
7295              hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
7296              borders = [
7297                { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
7298                { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
7299                { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
7300                { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
7301              ];
7302              backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
7303              if (!(hasBackground || styles.boxShadow.length)) return [3, 2];
7304              this.ctx.save();
7305              this.path(backgroundPaintingArea);
7306              this.ctx.clip();
7307              if (!isTransparent(styles.backgroundColor)) {
7308                this.ctx.fillStyle = asString(styles.backgroundColor);
7309                this.ctx.fill();
7310              }
7311              return [4, this.renderBackgroundImage(paint.container)];
7312            case 1:
7313              _a.sent();
7314              this.ctx.restore();
7315              styles.boxShadow.slice(0).reverse().forEach(function(shadow) {
7316                _this.ctx.save();
7317                var borderBoxArea = calculateBorderBoxPath(paint.curves);
7318                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
7319                var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
7320                if (shadow.inset) {
7321                  _this.path(borderBoxArea);
7322                  _this.ctx.clip();
7323                  _this.mask(shadowPaintingArea);
7324                } else {
7325                  _this.mask(borderBoxArea);
7326                  _this.ctx.clip();
7327                  _this.path(shadowPaintingArea);
7328                }
7329                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
7330                _this.ctx.shadowOffsetY = shadow.offsetY.number;
7331                _this.ctx.shadowColor = asString(shadow.color);
7332                _this.ctx.shadowBlur = shadow.blur.number;
7333                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)";
7334                _this.ctx.fill();
7335                _this.ctx.restore();
7336              });
7337              _a.label = 2;
7338            case 2:
7339              side = 0;
7340              _i = 0, borders_1 = borders;
7341              _a.label = 3;
7342            case 3:
7343              if (!(_i < borders_1.length)) return [3, 13];
7344              border = borders_1[_i];
7345              if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0)) return [3, 11];
7346              if (!(border.style === 2)) return [3, 5];
7347              return [4, this.renderDashedDottedBorder(
7348                border.color,
7349                border.width,
7350                side,
7351                paint.curves,
7352                2
7353                /* DASHED */
7354              )];
7355            case 4:
7356              _a.sent();
7357              return [3, 11];
7358            case 5:
7359              if (!(border.style === 3)) return [3, 7];
7360              return [4, this.renderDashedDottedBorder(
7361                border.color,
7362                border.width,
7363                side,
7364                paint.curves,
7365                3
7366                /* DOTTED */
7367              )];
7368            case 6:
7369              _a.sent();
7370              return [3, 11];
7371            case 7:
7372              if (!(border.style === 4)) return [3, 9];
7373              return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
7374            case 8:
7375              _a.sent();
7376              return [3, 11];
7377            case 9:
7378              return [4, this.renderSolidBorder(border.color, side, paint.curves)];
7379            case 10:
7380              _a.sent();
7381              _a.label = 11;
7382            case 11:
7383              side++;
7384              _a.label = 12;
7385            case 12:
7386              _i++;
7387              return [3, 3];
7388            case 13:
7389              return [
7390                2
7391                /*return*/
7392              ];
7393          }
7394        });
7395      });
7396    };
7397    CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) {
7398      return __awaiter(this, void 0, void 0, function() {
7399        var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
7400        return __generator(this, function(_a) {
7401          this.ctx.save();
7402          strokePaths = parsePathForBorderStroke(curvePoints, side);
7403          boxPaths = parsePathForBorder(curvePoints, side);
7404          if (style === 2) {
7405            this.path(boxPaths);
7406            this.ctx.clip();
7407          }
7408          if (isBezierCurve(boxPaths[0])) {
7409            startX = boxPaths[0].start.x;
7410            startY = boxPaths[0].start.y;
7411          } else {
7412            startX = boxPaths[0].x;
7413            startY = boxPaths[0].y;
7414          }
7415          if (isBezierCurve(boxPaths[1])) {
7416            endX = boxPaths[1].end.x;
7417            endY = boxPaths[1].end.y;
7418          } else {
7419            endX = boxPaths[1].x;
7420            endY = boxPaths[1].y;
7421          }
7422          if (side === 0 || side === 2) {
7423            length = Math.abs(startX - endX);
7424          } else {
7425            length = Math.abs(startY - endY);
7426          }
7427          this.ctx.beginPath();
7428          if (style === 3) {
7429            this.formatPath(strokePaths);
7430          } else {
7431            this.formatPath(boxPaths.slice(0, 2));
7432          }
7433          dashLength = width < 3 ? width * 3 : width * 2;
7434          spaceLength = width < 3 ? width * 2 : width;
7435          if (style === 3) {
7436            dashLength = width;
7437            spaceLength = width;
7438          }
7439          useLineDash = true;
7440          if (length <= dashLength * 2) {
7441            useLineDash = false;
7442          } else if (length <= dashLength * 2 + spaceLength) {
7443            multiplier = length / (2 * dashLength + spaceLength);
7444            dashLength *= multiplier;
7445            spaceLength *= multiplier;
7446          } else {
7447            numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
7448            minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
7449            maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
7450            spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;
7451          }
7452          if (useLineDash) {
7453            if (style === 3) {
7454              this.ctx.setLineDash([0, dashLength + spaceLength]);
7455            } else {
7456              this.ctx.setLineDash([dashLength, spaceLength]);
7457            }
7458          }
7459          if (style === 3) {
7460            this.ctx.lineCap = "round";
7461            this.ctx.lineWidth = width;
7462          } else {
7463            this.ctx.lineWidth = width * 2 + 1.1;
7464          }
7465          this.ctx.strokeStyle = asString(color2);
7466          this.ctx.stroke();
7467          this.ctx.setLineDash([]);
7468          if (style === 2) {
7469            if (isBezierCurve(boxPaths[0])) {
7470              path1 = boxPaths[3];
7471              path2 = boxPaths[0];
7472              this.ctx.beginPath();
7473              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
7474              this.ctx.stroke();
7475            }
7476            if (isBezierCurve(boxPaths[1])) {
7477              path1 = boxPaths[1];
7478              path2 = boxPaths[2];
7479              this.ctx.beginPath();
7480              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
7481              this.ctx.stroke();
7482            }
7483          }
7484          this.ctx.restore();
7485          return [
7486            2
7487            /*return*/
7488          ];
7489        });
7490      });
7491    };
7492    CanvasRenderer2.prototype.render = function(element) {
7493      return __awaiter(this, void 0, void 0, function() {
7494        var stack;
7495        return __generator(this, function(_a) {
7496          switch (_a.label) {
7497            case 0:
7498              if (this.options.backgroundColor) {
7499                this.ctx.fillStyle = asString(this.options.backgroundColor);
7500                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
7501              }
7502              stack = parseStackingContexts(element);
7503              return [4, this.renderStack(stack)];
7504            case 1:
7505              _a.sent();
7506              this.applyEffects([]);
7507              return [2, this.canvas];
7508          }
7509        });
7510      });
7511    };
7512    return CanvasRenderer2;
7513  }
vendor: 6,082 bytes, lines 7513-7682
7513(Renderer)
7514);
7515var isTextInputElement = function(container) {
7516  if (container instanceof TextareaElementContainer) {
7517    return true;
7518  } else if (container instanceof SelectElementContainer) {
7519    return true;
7520  } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
7521    return true;
7522  }
7523  return false;
7524};
7525var calculateBackgroundCurvedPaintingArea = function(clip, curves) {
7526  switch (clip) {
7527    case 0:
7528      return calculateBorderBoxPath(curves);
7529    case 2:
7530      return calculateContentBoxPath(curves);
7531    case 1:
7532    default:
7533      return calculatePaddingBoxPath(curves);
7534  }
7535};
7536var canvasTextAlign = function(textAlign2) {
7537  switch (textAlign2) {
7538    case 1:
7539      return "center";
7540    case 2:
7541      return "right";
7542    case 0:
7543    default:
7544      return "left";
7545  }
7546};
7547var iOSBrokenFonts = ["-apple-system", "system-ui"];
7548var fixIOSSystemFonts = function(fontFamilies) {
7549  return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) {
7550    return iOSBrokenFonts.indexOf(fontFamily2) === -1;
7551  }) : fontFamilies;
7552};
7553var ForeignObjectRenderer = (
7554  /** @class */
7555  function(_super) {
7556    __extends(ForeignObjectRenderer2, _super);
7557    function ForeignObjectRenderer2(context, options) {
7558      var _this = _super.call(this, context, options) || this;
7559      _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
7560      _this.ctx = _this.canvas.getContext("2d");
7561      _this.options = options;
7562      _this.canvas.width = Math.floor(options.width * options.scale);
7563      _this.canvas.height = Math.floor(options.height * options.scale);
7564      _this.canvas.style.width = options.width + "px";
7565      _this.canvas.style.height = options.height + "px";
7566      _this.ctx.scale(_this.options.scale, _this.options.scale);
7567      _this.ctx.translate(-options.x, -options.y);
7568      _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
7569      return _this;
7570    }
7571    ForeignObjectRenderer2.prototype.render = function(element) {
7572      return __awaiter(this, void 0, void 0, function() {
7573        var svg, img;
7574        return __generator(this, function(_a) {
7575          switch (_a.label) {
7576            case 0:
7577              svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
7578              return [4, loadSerializedSVG(svg)];
7579            case 1:
7580              img = _a.sent();
7581              if (this.options.backgroundColor) {
7582                this.ctx.fillStyle = asString(this.options.backgroundColor);
7583                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
7584              }
7585              this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
7586              return [2, this.canvas];
7587          }
7588        });
7589      });
7590    };
7591    return ForeignObjectRenderer2;
7592  }(Renderer)
7593);
7594var loadSerializedSVG = function(svg) {
7595  return new Promise(function(resolve, reject) {
7596    var img = new Image();
7597    img.onload = function() {
7598      resolve(img);
7599    };
7600    img.onerror = reject;
7601    img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
7602  });
7603};
7604var Logger = (
7605  /** @class */
7606  function() {
7607    function Logger2(_a) {
7608      var id = _a.id, enabled = _a.enabled;
7609      this.id = id;
7610      this.enabled = enabled;
7611      this.start = Date.now();
7612    }
7613    Logger2.prototype.debug = function() {
7614      var args = [];
7615      for (var _i = 0; _i < arguments.length; _i++) {
7616        args[_i] = arguments[_i];
7617      }
7618      if (this.enabled) {
7619        if (typeof window !== "undefined" && window.console && typeof console.debug === "function") {
7620          console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7621        } else {
7622          this.info.apply(this, args);
7623        }
7624      }
7625    };
7626    Logger2.prototype.getTime = function() {
7627      return Date.now() - this.start;
7628    };
7629    Logger2.prototype.info = function() {
7630      var args = [];
7631      for (var _i = 0; _i < arguments.length; _i++) {
7632        args[_i] = arguments[_i];
7633      }
7634      if (this.enabled) {
7635        if (typeof window !== "undefined" && window.console && typeof console.info === "function") {
7636          console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7637        }
7638      }
7639    };
7640    Logger2.prototype.warn = function() {
7641      var args = [];
7642      for (var _i = 0; _i < arguments.length; _i++) {
7643        args[_i] = arguments[_i];
7644      }
7645      if (this.enabled) {
7646        if (typeof window !== "undefined" && window.console && typeof console.warn === "function") {
7647          console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7648        } else {
7649          this.info.apply(this, args);
7650        }
7651      }
7652    };
7653    Logger2.prototype.error = function() {
7654      var args = [];
7655      for (var _i = 0; _i < arguments.length; _i++) {
7656        args[_i] = arguments[_i];
7657      }
7658      if (this.enabled) {
7659        if (typeof window !== "undefined" && window.console && typeof console.error === "function") {
7660          console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7661        } else {
7662          this.info.apply(this, args);
7663        }
7664      }
7665    };
7666    Logger2.instances = {};
7667    return Logger2;
7668  }()
7669);
7670var Context = (
7671  /** @class */
7672  function() {
7673    function Context2(options, windowBounds) {
7674      var _a;
7675      this.windowBounds = windowBounds;
7676      this.instanceName = "#" + Context2.instanceCount++;
7677      this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
7678      this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);
7679    }
7680    Context2.instanceCount = 1;
7681    return Context2;
7682  }
vendor: 6,700 bytes, lines 7682-7795
7682()
7683);
7684var html2canvas = function(element, options) {
7685  if (options === void 0) {
7686    options = {};
7687  }
7688  return renderElement(element, options);
7689};
7690if (typeof window !== "undefined") {
7691  CacheStorage.setContext(window);
7692}
7693var renderElement = function(element, opts) {
7694  return __awaiter(void 0, void 0, void 0, function() {
7695    var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor2, renderOptions, canvas, renderer, root, renderer;
7696    var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
7697    return __generator(this, function(_u) {
7698      switch (_u.label) {
7699        case 0:
7700          if (!element || typeof element !== "object") {
7701            return [2, Promise.reject("Invalid element provided as first argument")];
7702          }
7703          ownerDocument = element.ownerDocument;
7704          if (!ownerDocument) {
7705            throw new Error("Element is not attached to a Document");
7706          }
7707          defaultView = ownerDocument.defaultView;
7708          if (!defaultView) {
7709            throw new Error("Document is not attached to a Window");
7710          }
7711          resourceOptions = {
7712            allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
7713            imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3,
7714            proxy: opts.proxy,
7715            useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
7716          };
7717          contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
7718          windowOptions = {
7719            windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
7720            windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
7721            scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
7722            scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
7723          };
7724          windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
7725          context = new Context(contextOptions, windowBounds);
7726          foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
7727          cloneOptions = {
7728            allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
7729            onclone: opts.onclone,
7730            ignoreElements: opts.ignoreElements,
7731            inlineImages: foreignObjectRendering,
7732            copyStyles: foreignObjectRendering
7733          };
7734          context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
7735          documentCloner = new DocumentCloner(context, element, cloneOptions);
7736          clonedElement = documentCloner.clonedReferenceElement;
7737          if (!clonedElement) {
7738            return [2, Promise.reject("Unable to find element in cloned iframe")];
7739          }
7740          return [4, documentCloner.toIFrame(ownerDocument, windowBounds)];
7741        case 1:
7742          container = _u.sent();
7743          _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
7744          backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
7745          renderOptions = {
7746            canvas: opts.canvas,
7747            backgroundColor: backgroundColor2,
7748            scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
7749            x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
7750            y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
7751            width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
7752            height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
7753          };
7754          if (!foreignObjectRendering) return [3, 3];
7755          context.logger.debug("Document cloned, using foreign object rendering");
7756          renderer = new ForeignObjectRenderer(context, renderOptions);
7757          return [4, renderer.render(clonedElement)];
7758        case 2:
7759          canvas = _u.sent();
7760          return [3, 5];
7761        case 3:
7762          context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
7763          context.logger.debug("Starting DOM parsing");
7764          root = parseTree(context, clonedElement);
7765          if (backgroundColor2 === root.styles.backgroundColor) {
7766            root.styles.backgroundColor = COLORS.TRANSPARENT;
7767          }
7768          context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
7769          renderer = new CanvasRenderer(context, renderOptions);
7770          return [4, renderer.render(root)];
7771        case 4:
7772          canvas = _u.sent();
7773          _u.label = 5;
7774        case 5:
7775          if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
7776            if (!DocumentCloner.destroy(container)) {
7777              context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
7778            }
7779          }
7780          context.logger.debug("Finished rendering");
7781          return [2, canvas];
7782      }
7783    });
7784  });
7785};
7786var parseBackgroundColor = function(context, element, backgroundColorOverride) {
7787  var ownerDocument = element.ownerDocument;
7788  var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;
7789  var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;
7790  var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295;
7791  return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
7792};
7793export {
7794  html2canvas as default
7795};
7796//# sourceMappingURL=html2canvas.esm-j4r7SAt4.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.