html2canvas-pro 1.5.7 → 1.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +4 -1
  2. package/dist/html2canvas-pro.esm.js +24 -20
  3. package/dist/html2canvas-pro.esm.js.map +1 -1
  4. package/dist/html2canvas-pro.js +24 -20
  5. package/dist/html2canvas-pro.js.map +1 -1
  6. package/dist/html2canvas-pro.min.js +3 -17
  7. package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
  8. package/dist/lib/core/cache-storage.js.map +1 -1
  9. package/dist/lib/core/context.js.map +1 -1
  10. package/dist/lib/core/debugger.js.map +1 -1
  11. package/dist/lib/core/features.js.map +1 -1
  12. package/dist/lib/core/logger.js.map +1 -1
  13. package/dist/lib/css/index.js.map +1 -1
  14. package/dist/lib/css/layout/bounds.js.map +1 -1
  15. package/dist/lib/css/layout/text.js.map +1 -1
  16. package/dist/lib/css/property-descriptors/background-clip.js.map +1 -1
  17. package/dist/lib/css/property-descriptors/background-image.js.map +1 -1
  18. package/dist/lib/css/property-descriptors/background-origin.js.map +1 -1
  19. package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -1
  20. package/dist/lib/css/property-descriptors/background-size.js +1 -1
  21. package/dist/lib/css/property-descriptors/background-size.js.map +1 -1
  22. package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
  23. package/dist/lib/css/property-descriptors/border-width.js.map +1 -1
  24. package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -1
  25. package/dist/lib/css/property-descriptors/content.js.map +1 -1
  26. package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -1
  27. package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -1
  28. package/dist/lib/css/property-descriptors/direction.js.map +1 -1
  29. package/dist/lib/css/property-descriptors/display.js.map +1 -1
  30. package/dist/lib/css/property-descriptors/float.js.map +1 -1
  31. package/dist/lib/css/property-descriptors/font-family.js.map +1 -1
  32. package/dist/lib/css/property-descriptors/font-style.js.map +1 -1
  33. package/dist/lib/css/property-descriptors/font-weight.js.map +1 -1
  34. package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -1
  35. package/dist/lib/css/property-descriptors/line-break.js +1 -1
  36. package/dist/lib/css/property-descriptors/line-break.js.map +1 -1
  37. package/dist/lib/css/property-descriptors/line-height.js.map +1 -1
  38. package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -1
  39. package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -1
  40. package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -1
  41. package/dist/lib/css/property-descriptors/object-fit.js.map +1 -1
  42. package/dist/lib/css/property-descriptors/opacity.js.map +1 -1
  43. package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -1
  44. package/dist/lib/css/property-descriptors/overflow.js.map +1 -1
  45. package/dist/lib/css/property-descriptors/paint-order.js.map +1 -1
  46. package/dist/lib/css/property-descriptors/position.js.map +1 -1
  47. package/dist/lib/css/property-descriptors/quotes.js.map +1 -1
  48. package/dist/lib/css/property-descriptors/text-align.js.map +1 -1
  49. package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -1
  50. package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -1
  51. package/dist/lib/css/property-descriptors/text-transform.js.map +1 -1
  52. package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -1
  53. package/dist/lib/css/property-descriptors/transform.js.map +1 -1
  54. package/dist/lib/css/property-descriptors/visibility.js.map +1 -1
  55. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -1
  56. package/dist/lib/css/property-descriptors/word-break.js +1 -1
  57. package/dist/lib/css/property-descriptors/word-break.js.map +1 -1
  58. package/dist/lib/css/property-descriptors/z-index.js.map +1 -1
  59. package/dist/lib/css/syntax/parser.js.map +1 -1
  60. package/dist/lib/css/syntax/tokenizer.js.map +1 -1
  61. package/dist/lib/css/types/angle.js.map +1 -1
  62. package/dist/lib/css/types/color-spaces/p3.js.map +1 -1
  63. package/dist/lib/css/types/color-utilities.js.map +1 -1
  64. package/dist/lib/css/types/color.js.map +1 -1
  65. package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -1
  66. package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -1
  67. package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -1
  68. package/dist/lib/css/types/functions/counter.js.map +1 -1
  69. package/dist/lib/css/types/functions/gradient.js.map +1 -1
  70. package/dist/lib/css/types/functions/linear-gradient.js.map +1 -1
  71. package/dist/lib/css/types/functions/radial-gradient.js.map +1 -1
  72. package/dist/lib/css/types/image.js +2 -2
  73. package/dist/lib/css/types/image.js.map +1 -1
  74. package/dist/lib/css/types/length-percentage.js.map +1 -1
  75. package/dist/lib/css/types/time.js.map +1 -1
  76. package/dist/lib/dom/document-cloner.js +2 -2
  77. package/dist/lib/dom/document-cloner.js.map +1 -1
  78. package/dist/lib/dom/element-container.js.map +1 -1
  79. package/dist/lib/dom/elements/li-element-container.js.map +1 -1
  80. package/dist/lib/dom/elements/ol-element-container.js.map +1 -1
  81. package/dist/lib/dom/elements/select-element-container.js.map +1 -1
  82. package/dist/lib/dom/elements/textarea-element-container.js.map +1 -1
  83. package/dist/lib/dom/node-parser.js.map +1 -1
  84. package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -1
  85. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  86. package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -1
  87. package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -1
  88. package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -1
  89. package/dist/lib/dom/text-container.js.map +1 -1
  90. package/dist/lib/index.js.map +1 -1
  91. package/dist/lib/invariant.js.map +1 -1
  92. package/dist/lib/render/background.js.map +1 -1
  93. package/dist/lib/render/border.js.map +1 -1
  94. package/dist/lib/render/bound-curves.js.map +1 -1
  95. package/dist/lib/render/canvas/canvas-renderer.js +10 -11
  96. package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
  97. package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
  98. package/dist/lib/render/font-metrics.js.map +1 -1
  99. package/dist/lib/render/path.js.map +1 -1
  100. package/dist/lib/render/stacking-context.js.map +1 -1
  101. package/dist/types/dom/document-cloner.d.ts +1 -1
  102. package/package.json +16 -26
@@ -1 +1 @@
1
- {"version":3,"file":"html2canvas-pro.js","sources":["../node_modules/tslib/tslib.es6.js","../../src/css/layout/bounds.ts","../node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/linebreak-trie.ts","../node_modules/src/LineBreak.ts","../../src/css/syntax/tokenizer.ts","../../src/css/syntax/parser.ts","../../src/css/types/length.ts","../../src/css/types/length-percentage.ts","../../src/css/types/angle.ts","../../src/css/types/color-utilities.ts","../../src/css/types/color-spaces/srgb.ts","../../src/css/types/color-spaces/p3.ts","../../src/css/types/color-spaces/a98.ts","../../src/css/types/color-spaces/pro-photo.ts","../../src/css/types/color-spaces/rec2020.ts","../../src/css/types/color.ts","../../src/css/property-descriptors/background-clip.ts","../../src/css/property-descriptors/background-color.ts","../../src/css/types/functions/gradient.ts","../../src/css/types/functions/linear-gradient.ts","../../src/css/types/functions/-prefix-linear-gradient.ts","../../src/css/types/functions/-webkit-gradient.ts","../../src/css/types/functions/radial-gradient.ts","../../src/css/types/functions/-prefix-radial-gradient.ts","../../src/css/types/image.ts","../../src/css/property-descriptors/background-image.ts","../../src/css/property-descriptors/background-origin.ts","../../src/css/property-descriptors/background-position.ts","../../src/css/property-descriptors/background-repeat.ts","../../src/css/property-descriptors/background-size.ts","../../src/css/property-descriptors/border-color.ts","../../src/css/property-descriptors/border-radius.ts","../../src/css/property-descriptors/border-style.ts","../../src/css/property-descriptors/border-width.ts","../../src/css/property-descriptors/color.ts","../../src/css/property-descriptors/direction.ts","../../src/css/property-descriptors/display.ts","../../src/css/property-descriptors/float.ts","../../src/css/property-descriptors/letter-spacing.ts","../../src/css/property-descriptors/line-break.ts","../../src/css/property-descriptors/line-height.ts","../../src/css/property-descriptors/list-style-image.ts","../../src/css/property-descriptors/list-style-position.ts","../../src/css/property-descriptors/list-style-type.ts","../../src/css/property-descriptors/margin.ts","../../src/css/property-descriptors/overflow.ts","../../src/css/property-descriptors/overflow-wrap.ts","../../src/css/property-descriptors/padding.ts","../../src/css/property-descriptors/text-align.ts","../../src/css/property-descriptors/position.ts","../../src/css/property-descriptors/text-shadow.ts","../../src/css/property-descriptors/text-transform.ts","../../src/css/property-descriptors/transform.ts","../../src/css/property-descriptors/transform-origin.ts","../../src/css/property-descriptors/visibility.ts","../../src/css/property-descriptors/word-break.ts","../../src/css/property-descriptors/z-index.ts","../../src/css/types/time.ts","../../src/css/property-descriptors/opacity.ts","../../src/css/property-descriptors/text-decoration-color.ts","../../src/css/property-descriptors/text-decoration-line.ts","../../src/css/property-descriptors/font-family.ts","../../src/css/property-descriptors/font-size.ts","../../src/css/property-descriptors/font-weight.ts","../../src/css/property-descriptors/font-variant.ts","../../src/css/property-descriptors/font-style.ts","../../src/core/bitwise.ts","../../src/css/property-descriptors/content.ts","../../src/css/property-descriptors/counter-increment.ts","../../src/css/property-descriptors/counter-reset.ts","../../src/css/property-descriptors/duration.ts","../../src/css/property-descriptors/quotes.ts","../../src/css/property-descriptors/box-shadow.ts","../../src/css/property-descriptors/paint-order.ts","../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../src/css/property-descriptors/object-fit.ts","../../src/css/index.ts","../../src/core/debugger.ts","../../src/dom/element-container.ts","../node_modules/src/grapheme-break-trie.ts","../node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/GraphemeBreak.ts","../../src/core/features.ts","../../src/css/layout/text.ts","../../src/dom/text-container.ts","../../src/dom/replaced-elements/image-element-container.ts","../../src/dom/replaced-elements/canvas-element-container.ts","../../src/dom/replaced-elements/svg-element-container.ts","../../src/dom/elements/li-element-container.ts","../../src/dom/elements/ol-element-container.ts","../../src/dom/replaced-elements/input-element-container.ts","../../src/dom/elements/select-element-container.ts","../../src/dom/elements/textarea-element-container.ts","../../src/dom/replaced-elements/iframe-element-container.ts","../../src/dom/node-parser.ts","../../src/css/types/functions/counter.ts","../../src/dom/document-cloner.ts","../../src/core/cache-storage.ts","../../src/render/vector.ts","../../src/render/bezier-curve.ts","../../src/render/bound-curves.ts","../../src/render/effects.ts","../../src/render/path.ts","../../src/render/stacking-context.ts","../../src/render/border.ts","../../src/render/box-sizing.ts","../../src/render/background.ts","../../src/core/util.ts","../../src/render/font-metrics.ts","../../src/render/renderer.ts","../../src/render/canvas/canvas-renderer.ts","../../src/render/canvas/foreignobject-renderer.ts","../../src/core/logger.ts","../../src/core/context.ts","../../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Context } from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","export const base64 =\n '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//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport { fromCodePoint, toCodePoints } from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = { type: TokenType.COMMA_TOKEN };\nconst SUFFIX_MATCH_TOKEN: Token = { type: TokenType.SUFFIX_MATCH_TOKEN };\nconst PREFIX_MATCH_TOKEN: Token = { type: TokenType.PREFIX_MATCH_TOKEN };\nconst COLUMN_TOKEN: Token = { type: TokenType.COLUMN_TOKEN };\nconst DASH_MATCH_TOKEN: Token = { type: TokenType.DASH_MATCH_TOKEN };\nconst INCLUDE_MATCH_TOKEN: Token = { type: TokenType.INCLUDE_MATCH_TOKEN };\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = { type: TokenType.SUBSTRING_MATCH_TOKEN };\nconst BAD_URL_TOKEN: Token = { type: TokenType.BAD_URL_TOKEN };\nconst BAD_STRING_TOKEN: Token = { type: TokenType.BAD_STRING_TOKEN };\nconst CDO_TOKEN: Token = { type: TokenType.CDO_TOKEN };\nconst CDC_TOKEN: Token = { type: TokenType.CDC_TOKEN };\nconst COLON_TOKEN: Token = { type: TokenType.COLON_TOKEN };\nconst SEMICOLON_TOKEN: Token = { type: TokenType.SEMICOLON_TOKEN };\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = { type: TokenType.WHITESPACE_TOKEN };\nexport const EOF_TOKEN: Token = { type: TokenType.EOF_TOKEN };\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return { type: TokenType.HASH_TOKEN, value, flags };\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return { type: TokenType.AT_KEYWORD_TOKEN, value };\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end };\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end };\n } else {\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end: start };\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.FUNCTION_TOKEN, value };\n }\n\n return { type: TokenType.IDENT_TOKEN, value };\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return { type: TokenType.URL_TOKEN, value: '' };\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.URL_TOKEN, value: stringToken.value };\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: TokenType.URL_TOKEN, value: fromCodePoint(...value) };\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.URL_TOKEN, value: fromCodePoint(...value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: TokenType.STRING_TOKEN, value };\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return { type: TokenType.DIMENSION_TOKEN, number, flags, unit };\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: TokenType.PERCENTAGE_TOKEN, number, flags };\n }\n\n return { type: TokenType.NUMBER_TOKEN, number, flags };\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = { type, values: [] };\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import { CSSValue } from '../syntax/parser';\nimport { DimensionToken, NumberValueToken, TokenType } from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import { DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType } from '../syntax/tokenizer';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { isLength } from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import { CSSValue, isIdentToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { HUNDRED_PERCENT, ZERO_LENGTH } from './length-percentage';\nimport { GradientCorner } from './image';\nimport { Context } from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken, isNumberToken, nonFunctionArgSeparator } from '../syntax/parser';\nimport { rgb2rgbLinear, rgbLinear2xyz, srgbLinear2rgb, xyz2rgbLinear } from './color-spaces/srgb';\nimport { TokenType } from '../syntax/tokenizer';\nimport { angle, deg } from './angle';\nimport { getAbsoluteValue, isLengthPercentage } from './length-percentage';\n\ntype Color = number;\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nexport const getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nexport const isRelativeTransform = (tokens: CSSValue[]): boolean =>\n (tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown') === 'from';\n\nexport const clamp = (value: number, min: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport const multiplyMatrices = (A: number[], B: number[]): [number, number, number] => {\n return [\n A[0] * B[0] + A[1] * B[1] + A[2] * B[2],\n A[3] * B[0] + A[4] * B[1] + A[5] * B[2],\n A[6] * B[0] + A[7] * B[1] + A[8] * B[2]\n ];\n};\n\nexport const packSrgb = (args: number[]): number => {\n return pack(\n clamp(Math.round(args[0] * 255), 0, 255),\n clamp(Math.round(args[1] * 255), 0, 255),\n clamp(Math.round(args[2] * 255), 0, 255),\n clamp(args[3], 0, 1)\n );\n};\n\nexport const packSrgbLinear = ([r, g, b, a]: [number, number, number, number]): number => {\n const rgb = srgbLinear2rgb([r, g, b]);\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const packXYZ = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear([args[0], args[1], args[2]]);\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n\nexport const packLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklch()');\n }\n const [l, c, h, alpha] = extractOkLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lch()');\n }\n const [l, c, h, a] = extractLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const extractHslComponents = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n [hue, saturation, lightness, alpha] = tokens,\n h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2),\n s = isLengthPercentage(saturation) ? saturation.number / 100 : 0,\n l = isLengthPercentage(lightness) ? lightness.number / 100 : 0,\n a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n return [h, s, l, a];\n};\n\nexport const packHSL = (context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args)) {\n throw new Error('Relative color not supported for hsl()');\n }\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb = hsl2rgb([h, s, l]);\n return pack(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255, s === 0 ? 1 : a);\n};\n\nexport const extractLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n l = isLengthPercentage(tokens[0]) ? tokens[0].number : 0,\n c = isLengthPercentage(tokens[1]) ? tokens[1].number : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\nexport const extractLabComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n a =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n b = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n alpha = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, a, b, alpha];\n};\n\nexport const extractOkLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n c =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\n/**\n * Convert D65 to D50\n *\n * @param xyz\n */\nexport const d65toD50 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.0479297925449969, 0.022946870601609652, -0.05019226628920524, 0.02962780877005599, 0.9904344267538799,\n -0.017073799063418826, -0.009243040646204504, 0.015055191490298152, 0.7518742814281371\n ],\n xyz\n );\n};\n\n/**\n * Convert D50 to D65\n *\n * @param xyz\n */\nexport const d50toD65 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.955473421488075, -0.02309845494876471, 0.06325924320057072, -0.0283697093338637, 1.0099953980813041,\n 0.021041441191917323, 0.012314014864481998, -0.020507649298898964, 1.330365926242124\n ],\n xyz\n );\n};\n\nexport const hue2rgb = (t1: number, t2: number, hue: number): number => {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n};\n\nconst hsl2rgb = ([h, s, l]: [number, number, number]): [number, number, number] => {\n if (s === 0) {\n return [l * 255, l * 255, l * 255];\n }\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n t1 = l * 2 - t2,\n r = hue2rgb(t1, t2, h + 1 / 3),\n g = hue2rgb(t1, t2, h),\n b = hue2rgb(t1, t2, h - 1 / 3);\n\n return [r, g, b];\n};\n\n/**\n * Convert lch to OKLab\n *\n * @param l\n * @param c\n * @param h\n */\nconst lch2lab = ([l, c, h]: [number, number, number]): [number, number, number] => {\n if (c < 0) {\n c = 0;\n }\n if (isNaN(h)) {\n h = 0;\n }\n return [l, c * Math.cos((h * Math.PI) / 180), c * Math.sin((h * Math.PI) / 180)];\n};\n\n/**\n * Convert OKLab to XYZ relative to D65\n *\n * @param lab\n */\nconst oklab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const LMSg = multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1, 0.3963377773761749, 0.2158037573099136, 1, -0.1055613458156586, -0.0638541728258133, 1,\n -0.0894841775298119, -1.2914855480194092\n ],\n lab\n ),\n LMS = LMSg.map((val: number) => val ** 3);\n\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.2268798758459243, -0.5578149944602171, 0.2813910456659647, -0.0405757452148008, 1.112286803280317,\n -0.0717110580655164, -0.0763729366746601, -0.4214933324022432, 1.5869240198367816\n ],\n LMS\n );\n};\n\n/**\n * Convert Lab to D50-adapted XYZ\n *\n * @param lab\n */\nconst lab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const fy = (lab[0] + 16) / 116,\n fx = lab[1] / 500 + fy,\n fz = fy - lab[2] / 200,\n k = 24389 / 27,\n e = 24 / 116,\n xyz = [\n ((fx > e ? fx ** 3 : (116 * fx - 16) / k) * 0.3457) / 0.3585,\n lab[0] > 8 ? fy ** 3 : lab[0] / k,\n ((fz > e ? fz ** 3 : (116 * fz - 16) / k) * (1.0 - 0.3457 - 0.3585)) / 0.3585\n ];\n\n return d50toD65([xyz[0], xyz[1], xyz[2]]);\n};\n\n/**\n * Convert RGB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const rgbToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, 1];\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, a];\n }\n\n return [0, 0, 0, 1];\n};\n\n/**\n * HSL to XYZ\n *\n * @param context\n * @param args\n */\nexport const hslToXyz = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb_linear = rgb2rgbLinear(hsl2rgb([h, s, l])),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n\n return [x, y, z, a];\n};\n\n/**\n * LAB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const labToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, a, b, alpha] = extractLabComponents(args),\n [x, y, z] = lab2xyz([l, a, b]);\n return [x, y, z, alpha];\n};\n\n/**\n * LCH to XYZ\n *\n * @param _context\n * @param args\n */\nexport const lchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLchComponents(args),\n [x, y, z] = lab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLch to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractOkLchComponents(args),\n [x, y, z] = oklab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLab to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklabToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLabComponents(args),\n [x, y, z] = oklab2xyz([l, c, h]);\n return [x, y, z, alpha];\n};\n\n/**\n * XYZ-50 to XYZ\n *\n * @param args\n */\nexport const xyz50ToXYZ = (args: number[]): [number, number, number] => {\n return d50toD65([args[0], args[1], args[2]]);\n};\n\n/**\n * Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function\n *\n * @param args\n */\nexport const xyzFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n return args;\n};\n\n/**\n * XYZ-65 to XYZ-50\n *\n * @param args\n */\nexport const xyz50FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [x, y, z] = d65toD50([args[0], args[2], args[3]]);\n return [x, y, z, args[3]];\n};\n\n/**\n * Convert XYZ to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz = (args: number[]): number => {\n return packXYZ([args[0], args[1], args[2], args[3]]);\n};\n\n/**\n * Convert XYZ-50 to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz50 = (args: number[]): number => {\n const xyz = xyz50ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * SRGB related functions\n */\n\nimport { clamp, multiplyMatrices } from '../color-utilities';\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const xyz2rgbLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 3.2409699419045226, -1.537383177570094, -0.4986107602930034, -0.9692436362808796, 1.8759675015077202,\n 0.04155505740717559, 0.05563007969699366, -0.20397695888897652, 1.0569715142428786\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const rgbLinear2xyz = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.41239079926595934, 0.357584339383878, 0.1804807884018343, 0.21263900587151027, 0.715168678767756,\n 0.07219231536073371, 0.01933081871559182, 0.11919477979462598, 0.9505321522496607\n ],\n xyz\n );\n};\n\n/**\n * Convert sRGB to RGB\n *\n * @param rgb\n */\nexport const srgbLinear2rgb = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs > 0.0031308 ? sign * (1.055 * abs ** (1 / 2.4) - 0.055) : 12.92 * c;\n });\n};\n\n/**\n * Convert RGB to sRGB\n *\n * @param rgb\n */\nexport const rgb2rgbLinear = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs <= 0.04045 ? c / 12.92 : sign * ((abs + 0.055) / 1.055) ** 2.4;\n });\n};\n\n/**\n * XYZ to SRGB\n *\n * @param args\n */\nexport const srgbFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = srgbLinear2rgb(xyz2rgbLinear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * XYZ to SRGB-Linear\n * @param args\n */\nexport const srgbLinearFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = xyz2rgbLinear([args[0], args[1], args[2]]);\n return [\n clamp(Math.round(r * 255), 0, 255),\n clamp(Math.round(g * 255), 0, 255),\n clamp(Math.round(b * 255), 0, 255),\n args[3]\n ];\n};\n","/**\n * Display-P3 related functions\n */\n\nimport { srgbLinear2rgb } from './srgb';\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert P3 Linear to xyz\n *\n * @param p3l\n */\nexport const p3LinearToXyz = (p3l: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.4865709486482162, 0.26566769316909306, 0.1982172852343625, 0.2289745640697488, 0.6917385218365064,\n 0.079286914093745, 0.0, 0.04511338185890264, 1.043944368900976\n ],\n p3l\n );\n};\n/**\n * Convert XYZ to P3 Linear\n *\n * @param xyz\n */\nexport const xyzToP3Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.493496911941425, -0.9313836179191239, -0.40271078445071684, -0.8294889695615747, 1.7626640603183463,\n 0.023624685841943577, 0.03584583024378447, -0.07617238926804182, 0.9568845240076872\n ],\n xyz\n );\n};\n\n/**\n * Convert P3 to P3 linear\n *\n * @param p3\n */\nexport const p32p3Linear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = c * sign;\n\n if (abs <= 0.04045) {\n return c / 12.92;\n }\n\n // eslint-disable-next-line prettier/prettier\n return sign * ((c + 0.055) / 1.055) ** 2.4 || 0;\n });\n};\n\n/**\n * Convert P3 Linear to P3\n *\n * @param p3l\n */\nexport const p3Linear2p3 = (p3l: [number, number, number]): number[] => {\n return srgbLinear2rgb(p3l);\n};\n\n/**\n * Convert P3 to XYZ\n *\n * @param args\n */\nexport const p3ToXYZ = (args: number[]): number[] => {\n const p3_linear = p32p3Linear([args[0], args[1], args[2]]);\n return p3LinearToXyz([p3_linear[0], p3_linear[1], p3_linear[2]]);\n};\n\n/**\n * Convert XYZ to P3\n *\n * @param args\n */\nexport const p3FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = p3Linear2p3(xyzToP3Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert P3 to SRGB and Pack\n *\n * @param args\n */\nexport const convertP3 = (args: number[]): number => {\n const xyz = p3ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * A98-RGB related functions\n */\n\nimport { multiplyMatrices, packSrgbLinear } from '../color-utilities';\nimport { xyz2rgbLinear } from './srgb';\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param xyz\n */\nexport const xyz2a98Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.0415879038107465, -0.5650069742788596, -0.34473135077832956, -0.9692436362808795, 1.8759675015077202,\n 0.04155505740717557, 0.013444280632031142, -0.11836239223101838, 1.0151749943912054\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param a98\n */\nexport const a98Linear2xyz = (a98: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.5766690429101305, 0.1855582379065463, 0.1882286462349947, 0.29734497525053605, 0.6273635662554661,\n 0.0752914584939978, 0.02703136138641234, 0.07068885253582723, 0.9913375368376388\n ],\n a98\n );\n};\n\n/**\n * Convert A98 RGB to rgb linear\n *\n * @param rgb\n */\nexport const a982a98Linear = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (563 / 256);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert A98 RGB Linear to A98\n *\n * @param rgb\n */\nexport const a98Linear2a98 = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (256 / 563);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert XYZ to A98\n *\n * @param args\n */\nexport const a98FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = a98Linear2a98(xyz2a98Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert A98 to XYZ and Pack\n *\n * @param args\n */\nexport const convertA98rgb = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear(a98Linear2xyz(a982a98Linear([args[0], args[1], args[2]])));\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n","/**\n * Pro Photo related functions\n */\n\nimport { d50toD65, d65toD50, multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert linear-light display-p3 to XYZ D65\n *\n * @param p3\n */\nexport const proPhotoLinearToXyz = (p3: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.7977666449006423, 0.13518129740053308, 0.0313477341283922, 0.2880748288194013, 0.711835234241873,\n 0.00008993693872564, 0.0, 0.0, 0.8251046025104602\n ],\n p3\n );\n};\n\n/**\n * Convert XYZ D65 to linear-light display-p3\n *\n * @param xyz\n */\nexport const xyzToProPhotoLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.3457868816471583, -0.25557208737979464, -0.05110186497554526, -0.5446307051249019, 1.5082477428451468,\n 0.02052744743642139, 0.0, 0.0, 1.2119675456389452\n ],\n xyz\n );\n};\n\n/**\n * Convert Pro-Photo to Pro-Photo Linear\n *\n * @param p3\n */\nexport const proPhotoToProPhotoLinear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c < 16 / 512 ? c / 16 : c ** 1.8;\n });\n};\n\n/**\n * Convert Pro-Photo Linear to Pro-Photo\n *\n * @param p3\n */\nexport const proPhotoLinearToProPhoto = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c > 1 / 512 ? c ** (1 / 1.8) : c * 16;\n });\n};\n\n/**\n * Convert Pro-Photo to XYZ\n *\n * @param args\n */\nexport const proPhotoToXYZ = (args: number[]): [number, number, number] => {\n const prophoto_linear = proPhotoToProPhotoLinear([args[0], args[1], args[2]]);\n return d50toD65(proPhotoLinearToXyz([prophoto_linear[0], prophoto_linear[1], prophoto_linear[2]]));\n};\n\n/**\n * Convert XYZ to Pro-Photo\n *\n * @param args\n */\nexport const proPhotoFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = proPhotoLinearToProPhoto(xyzToProPhotoLinear(d65toD50([args[0], args[1], args[2]])));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Pro-Photo to XYZ and Pack\n *\n * @param args\n */\nexport const convertProPhoto = (args: number[]): number => {\n const xyz = proPhotoToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * REC2020 related functions\n */\n\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\nconst _a = 1.09929682680944;\nconst _b = 0.018053968510807;\n\n/**\n * Convert rec2020 to rec2020 linear\n *\n * @param rgb\n */\nexport const rec20202rec2020Linear = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c < _b * 4.5 ? c / 4.5 : Math.pow((c + _a - 1) / _a, 1 / 0.45);\n });\n};\n\n/**\n * Convert rec2020 linear to rec2020\n *\n * @param rgb\n */\nexport const rec2020Linear2rec2020 = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c >= _b ? _a * Math.pow(c, 0.45) - (_a - 1) : 4.5 * c;\n });\n};\n\n/**\n * Convert rec2020 linear to XYZ D65\n *\n * @param rec\n */\nexport const rec2020LinearToXyz = (rec: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.6369580483012914, 0.14461690358620832, 0.1688809751641721, 0.2627002120112671, 0.6779980715188708,\n 0.05930171646986196, 0.0, 0.028072693049087428, 1.060985057710791\n ],\n rec\n );\n};\n\n/**\n * Convert XYZ D65 to rec2020 linear\n *\n * @param xyz\n */\nexport const xyzToRec2020Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.716651187971268, -0.355670783776392, -0.25336628137366, -0.666684351832489, 1.616481236634939,\n 0.0157685458139111, 0.017639857445311, -0.042770613257809, 0.942103121235474\n ],\n xyz\n );\n};\n\n/**\n * Convert Rec2020 to XYZ\n *\n * @param args\n */\nexport const rec2020ToXYZ = (args: number[]): [number, number, number] => {\n const rec2020_linear = rec20202rec2020Linear([args[0], args[1], args[2]]);\n return rec2020LinearToXyz([rec2020_linear[0], rec2020_linear[1], rec2020_linear[2]]);\n};\n\n/**\n * Convert XYZ to Rec2020\n *\n * @param args\n */\nexport const rec2020FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = rec2020Linear2rec2020(xyzToRec2020Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Rec2020 to SRGB and Pack\n *\n * @param args\n */\nexport const convertRec2020 = (args: number[]): number => {\n const xyz = rec2020ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, Parser } from '../syntax/parser';\nimport { HashToken, TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\nimport { srgbFromXYZ, srgbLinearFromXYZ } from './color-spaces/srgb';\nimport {\n packSrgbLinear,\n packSrgb,\n packHSL,\n packLch,\n packOkLch,\n packOkLab,\n packLab,\n isRelativeTransform,\n pack,\n getTokenColorValue,\n convertXyz,\n convertXyz50,\n rgbToXyz,\n hslToXyz,\n labToXyz,\n lchToXyz,\n oklabToXyz,\n oklchToXyz,\n xyzFromXYZ,\n xyz50FromXYZ\n} from './color-utilities';\nimport { convertP3, p3FromXYZ } from './color-spaces/p3';\nimport { a98FromXYZ, convertA98rgb } from './color-spaces/a98';\nimport { convertProPhoto, proPhotoFromXYZ } from './color-spaces/pro-photo';\nimport { convertRec2020, rec2020FromXYZ } from './color-spaces/rec2020';\n\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n const [r, g, b, a] = hash2rgb(value);\n return pack(r, g, b, a);\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nconst hash2rgb = (token: HashToken): [number, number, number, number] => {\n if (token.value.length === 3) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1];\n }\n\n if (token.value.length === 4) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n const a = token.value.substring(3, 4);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255];\n }\n\n if (token.value.length === 6) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1];\n }\n\n if (token.value.length === 8) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n const a = token.value.substring(6, 8);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255];\n }\n\n return [0, 0, 0, 1];\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (isRelativeTransform(tokens)) {\n throw new Error('Relative color not supported for rgb()');\n }\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\n/**\n * Handle the CSS color() function\n *\n * @param context\n * @param args\n */\nconst _color = (context: Context, args: CSSValue[]) => {\n const tokens = args.filter(nonFunctionArgSeparator),\n token_1_value = tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown',\n is_absolute = !isRelativeTransform(tokens);\n\n if (is_absolute) {\n const color_space = token_1_value,\n colorSpaceFunction = SUPPORTED_COLOR_SPACES_ABSOLUTE[color_space];\n if (typeof colorSpaceFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${color_space}\" for color() function`);\n }\n const c1 = isNumberToken(tokens[1]) ? tokens[1].number : 0,\n c2 = isNumberToken(tokens[2]) ? tokens[2].number : 0,\n c3 = isNumberToken(tokens[3]) ? tokens[3].number : 0,\n a =\n tokens.length > 4 &&\n tokens[4].type === TokenType.DELIM_TOKEN &&\n tokens[4].value === '/' &&\n isNumberToken(tokens[5])\n ? tokens[5].number\n : 1;\n\n return colorSpaceFunction([c1, c2, c3, a]);\n } else {\n const extractComponent = (color: [number, number, number, number], token: CSSValue) => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n const posFromVal = (value: string): number => {\n return value === 'r' || value === 'x' ? 0 : value === 'g' || value === 'y' ? 1 : 2;\n };\n\n if (isIdentToken(token)) {\n const position = posFromVal(token.value);\n return color[position];\n }\n\n const parseCalc = (args: CSSValue[]): string => {\n const parts = args.filter(nonFunctionArgSeparator);\n let expression = '(';\n for (const part of parts) {\n expression +=\n part.type === TokenType.FUNCTION && part.name === 'calc'\n ? parseCalc(part.values)\n : isNumberToken(part)\n ? part.number\n : part.type === TokenType.DELIM_TOKEN || isIdentToken(part)\n ? part.value\n : '';\n }\n expression += ')';\n return expression;\n };\n\n if (token.type === TokenType.FUNCTION) {\n const args = token.values.filter(nonFunctionArgSeparator);\n if (token.name === 'calc') {\n const expression = parseCalc(args)\n .replace(/r|x/, color[0].toString())\n .replace(/g|y/, color[1].toString())\n .replace(/b|z/, color[2].toString());\n\n return new Function('return ' + expression)();\n }\n }\n\n return null;\n };\n\n const from_colorspace =\n tokens[1].type === TokenType.FUNCTION\n ? tokens[1].name\n : isIdentToken(tokens[1]) || tokens[1].type === TokenType.HASH_TOKEN\n ? 'rgb'\n : 'unknown',\n to_colorspace = isIdentToken(tokens[2]) ? tokens[2].value : 'unknown';\n\n let from =\n tokens[1].type === TokenType.FUNCTION ? tokens[1].values : isIdentToken(tokens[1]) ? [tokens[1]] : [];\n\n if (isIdentToken(tokens[1])) {\n const named_color = COLORS[tokens[1].value.toUpperCase()];\n if (typeof named_color === 'undefined') {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n } else {\n const _c = parseColor(context, tokens[1].value),\n alpha = 0xff & _c,\n blue = 0xff & (_c >> 8),\n green = 0xff & (_c >> 16),\n red = 0xff & (_c >> 24);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n } else if (tokens[1].type === TokenType.HASH_TOKEN) {\n const [red, green, blue, alpha] = hash2rgb(tokens[1]);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n\n if (from.length === 0) {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n }\n\n if (to_colorspace === 'unknown') {\n throw new Error(`Attempting to use unknown colorspace in relative color 'to'`);\n }\n\n const fromColorToXyz = SUPPORTED_COLOR_SPACES_TO_XYZ[from_colorspace],\n toColorFromXyz = SUPPORTED_COLOR_SPACES_FROM_XYZ[to_colorspace],\n toColorPack = SUPPORTED_COLOR_SPACES_ABSOLUTE[to_colorspace];\n\n if (typeof fromColorToXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${from_colorspace}\" for color() function`);\n }\n if (typeof toColorFromXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${to_colorspace}\" for color() function`);\n }\n\n const from_color: [number, number, number, number] = fromColorToXyz(context, from),\n from_final_colorspace: [number, number, number, number] = toColorFromXyz(from_color),\n c1 = extractComponent(from_final_colorspace, tokens[3]),\n c2 = extractComponent(from_final_colorspace, tokens[4]),\n c3 = extractComponent(from_final_colorspace, tokens[5]),\n a =\n tokens.length > 6 &&\n tokens[6].type === TokenType.DELIM_TOKEN &&\n tokens[6].value === '/' &&\n isNumberToken(tokens[7])\n ? tokens[7].number\n : 1;\n if (c1 === null || c2 === null || c3 === null) {\n throw new Error(`Invalid relative color in color() function`);\n }\n\n return toColorPack([c1, c2, c3, a]);\n }\n};\n\nconst SUPPORTED_COLOR_SPACES_ABSOLUTE: {\n [key: string]: (args: number[]) => number;\n} = {\n srgb: packSrgb,\n 'srgb-linear': packSrgbLinear,\n 'display-p3': convertP3,\n 'a98-rgb': convertA98rgb,\n 'prophoto-rgb': convertProPhoto,\n xyz: convertXyz,\n 'xyz-d50': convertXyz50,\n 'xyz-d65': convertXyz,\n rec2020: convertRec2020\n};\n\nconst SUPPORTED_COLOR_SPACES_TO_XYZ: {\n [key: string]: (context: Context, args: CSSValue[]) => [number, number, number, number];\n} = {\n rgb: rgbToXyz,\n hsl: hslToXyz,\n lab: labToXyz,\n lch: lchToXyz,\n oklab: oklabToXyz,\n oklch: oklchToXyz\n};\n\nconst SUPPORTED_COLOR_SPACES_FROM_XYZ: {\n [key: string]: (args: [number, number, number, number]) => [number, number, number, number];\n} = {\n srgb: srgbFromXYZ,\n 'srgb-linear': srgbLinearFromXYZ,\n 'display-p3': p3FromXYZ,\n 'a98-rgb': a98FromXYZ,\n 'prophoto-rgb': proPhotoFromXYZ,\n xyz: xyzFromXYZ,\n 'xyz-d50': xyz50FromXYZ,\n 'xyz-d65': xyzFromXYZ,\n rec2020: rec2020FromXYZ\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: packHSL,\n hsla: packHSL,\n rgb: rgb,\n rgba: rgb,\n lch: packLch,\n oklch: packOkLch,\n oklab: packOkLab,\n lab: packLab,\n color: _color\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: { [key: string]: Color } = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { CSSValue } from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport { color as colorType } from '../color';\nimport { getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH } from '../length-percentage';\nimport { Context } from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? { color, stop } : { color, stop: null };\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({ color }, i) => {\n return { color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0) };\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import { CSSValue, parseFunctionArgs } from '../../syntax/parser';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { isAngle, angle as angleType, parseNamedSide, deg } from '../angle';\nimport { CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop } from '../image';\nimport { parseColorStop } from './gradient';\nimport { Context } from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return { angle, stops, type: CSSImageType.LINEAR_GRADIENT };\n};\n","import { CSSValue, parseFunctionArgs } from '../../syntax/parser';\nimport { CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop } from '../image';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { isAngle, angle as angleType, parseNamedSide, deg } from '../angle';\nimport { parseColorStop } from './gradient';\nimport { Context } from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { deg } from '../angle';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { color as colorType } from '../color';\nimport { HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH } from '../length-percentage';\nimport { Context } from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color });\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color });\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags },\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : { size, shape, stops, position, type };\n};\n","import { CSSValue, isIdentToken, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { parseColorStop } from './gradient';\nimport {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} from '../length-percentage';\nimport { isLength } from '../length';\nimport { Context } from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return { size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT };\n};\n","import { CSSValue, isIdentToken, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { parseColorStop } from './gradient';\nimport {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} from '../length-percentage';\nimport { isLength } from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport { Context } from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return { size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT };\n};\n","import { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Color } from './color';\nimport { linearGradient } from './functions/linear-gradient';\nimport { prefixLinearGradient } from './functions/-prefix-linear-gradient';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { LengthPercentage } from './length-percentage';\nimport { webkitGradient } from './functions/-webkit-gradient';\nimport { radialGradient } from './functions/radial-gradient';\nimport { prefixRadialGradient } from './functions/-prefix-radial-gradient';\nimport { Context } from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = { url: value.value, type: CSSImageType.URL };\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import { TokenType } from '../syntax/tokenizer';\nimport { ICSSImage, image, isSupportedImage } from '../types/image';\nimport { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, nonFunctionArgSeparator } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, parseFunctionArgs } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple } from '../types/length-percentage';\nimport { Context } from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, parseFunctionArgs } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, parseFunctionArgs } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentage } from '../types/length-percentage';\nimport { StringValueToken } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple } from '../types/length-percentage';\nimport { Context } from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import { IPropertyTokenValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { getAbsoluteValue, isLengthPercentage } from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import { TokenType } from '../syntax/tokenizer';\nimport { ICSSImage, image } from '../types/image';\nimport { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import { IPropertyTokenValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentWithValue, parseFunctionArgs } from '../syntax/parser';\nimport { ZERO_LENGTH } from '../types/length-percentage';\nimport { color, Color, COLORS } from '../types/color';\nimport { isLength, Length } from '../types/length';\nimport { Context } from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { NumberValueToken, TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentage } from '../types/length-percentage';\nimport { FLAG_INTEGER, TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return { auto: true, order: 0 };\n }\n\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, isNumberToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import { TokenType } from '../syntax/tokenizer';\nimport { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken, nonWhiteSpace } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment });\n }\n }\n\n return increments;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, isNumberToken, nonWhiteSpace } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset });\n }\n }\n\n return resets;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { time } from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isStringToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({ open, close });\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentWithValue, parseFunctionArgs } from '../syntax/parser';\nimport { ZERO_LENGTH } from '../types/length-percentage';\nimport { color, Color } from '../types/color';\nimport { isLength, Length } from '../types/length';\nimport { Context } from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OBJECT_FIT {\n FILL = 0,\n CONTAIN = 1 << 1,\n COVER = 1 << 2,\n NONE = 1 << 3,\n SCALE_DOWN = 1 << 4\n}\n\nexport type ObjectFit = number;\n\nexport const objectFit: IPropertyListDescriptor<ObjectFit> = {\n name: 'objectFit',\n initialValue: 'fill',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): ObjectFit => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, OBJECT_FIT.FILL);\n }\n};\n\nconst parseDisplayValue = (display: string): ObjectFit => {\n switch (display) {\n case 'contain':\n return OBJECT_FIT.CONTAIN;\n case 'cover':\n return OBJECT_FIT.COVER;\n case 'none':\n return OBJECT_FIT.NONE;\n case 'scale-down':\n return OBJECT_FIT.SCALE_DOWN;\n }\n\n return OBJECT_FIT.FILL;\n};\n","import { CSSPropertyDescriptor, PropertyDescriptorParsingType } from './IPropertyDescriptor';\nimport { backgroundClip } from './property-descriptors/background-clip';\nimport { backgroundColor } from './property-descriptors/background-color';\nimport { backgroundImage } from './property-descriptors/background-image';\nimport { backgroundOrigin } from './property-descriptors/background-origin';\nimport { backgroundPosition } from './property-descriptors/background-position';\nimport { backgroundRepeat } from './property-descriptors/background-repeat';\nimport { backgroundSize } from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport { color } from './property-descriptors/color';\nimport { direction } from './property-descriptors/direction';\nimport { display, DISPLAY } from './property-descriptors/display';\nimport { float, FLOAT } from './property-descriptors/float';\nimport { letterSpacing } from './property-descriptors/letter-spacing';\nimport { lineBreak } from './property-descriptors/line-break';\nimport { lineHeight } from './property-descriptors/line-height';\nimport { listStyleImage } from './property-descriptors/list-style-image';\nimport { listStylePosition } from './property-descriptors/list-style-position';\nimport { listStyleType } from './property-descriptors/list-style-type';\nimport { marginBottom, marginLeft, marginRight, marginTop } from './property-descriptors/margin';\nimport { overflow, OVERFLOW } from './property-descriptors/overflow';\nimport { overflowWrap } from './property-descriptors/overflow-wrap';\nimport { paddingBottom, paddingLeft, paddingRight, paddingTop } from './property-descriptors/padding';\nimport { textAlign } from './property-descriptors/text-align';\nimport { position, POSITION } from './property-descriptors/position';\nimport { textShadow } from './property-descriptors/text-shadow';\nimport { textTransform } from './property-descriptors/text-transform';\nimport { transform } from './property-descriptors/transform';\nimport { transformOrigin } from './property-descriptors/transform-origin';\nimport { visibility, VISIBILITY } from './property-descriptors/visibility';\nimport { wordBreak } from './property-descriptors/word-break';\nimport { zIndex } from './property-descriptors/z-index';\nimport { CSSValue, isIdentToken, Parser } from './syntax/parser';\nimport { Tokenizer } from './syntax/tokenizer';\nimport { Color, color as colorType } from './types/color';\nimport { isTransparent } from './types/color-utilities';\nimport { angle } from './types/angle';\nimport { image } from './types/image';\nimport { time } from './types/time';\nimport { opacity } from './property-descriptors/opacity';\nimport { textDecorationColor } from './property-descriptors/text-decoration-color';\nimport { textDecorationLine } from './property-descriptors/text-decoration-line';\nimport { isLengthPercentage, LengthPercentage, ZERO_LENGTH } from './types/length-percentage';\nimport { fontFamily } from './property-descriptors/font-family';\nimport { fontSize } from './property-descriptors/font-size';\nimport { isLength } from './types/length';\nimport { fontWeight } from './property-descriptors/font-weight';\nimport { fontVariant } from './property-descriptors/font-variant';\nimport { fontStyle } from './property-descriptors/font-style';\nimport { contains } from '../core/bitwise';\nimport { content } from './property-descriptors/content';\nimport { counterIncrement } from './property-descriptors/counter-increment';\nimport { counterReset } from './property-descriptors/counter-reset';\nimport { duration } from './property-descriptors/duration';\nimport { quotes } from './property-descriptors/quotes';\nimport { boxShadow } from './property-descriptors/box-shadow';\nimport { paintOrder } from './property-descriptors/paint-order';\nimport { webkitTextStrokeColor } from './property-descriptors/webkit-text-stroke-color';\nimport { webkitTextStrokeWidth } from './property-descriptors/webkit-text-stroke-width';\nimport { Context } from '../core/context';\nimport { objectFit } from './property-descriptors/object-fit';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\n objectFit: ReturnType<typeof objectFit.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n this.objectFit = parse(context, objectFit, declaration.objectFit);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TextContainer } from './text-container';\nimport { Bounds, parseBounds } from '../css/layout/bounds';\nimport { isHTMLElementNode } from './node-parser';\nimport { Context } from '../core/context';\nimport { DebuggerType, isDebugging } from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import { fromCodePoint, toCodePoints } from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value });\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value });\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value });\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value });\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value });\n return value;\n }\n};\n","import { OVERFLOW_WRAP } from '../property-descriptors/overflow-wrap';\nimport { CSSParsedDeclaration } from '../index';\nimport { fromCodePoint, LineBreaker, toCodePoints } from 'css-line-break';\nimport { splitGraphemes } from 'text-segmentation';\nimport { Bounds, parseBounds } from './bounds';\nimport { FEATURES } from '../../core/features';\nimport { Context } from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TEXT_TRANSFORM } from '../css/property-descriptors/text-transform';\nimport { parseTextBounds, TextBounds } from '../css/layout/text';\nimport { Context } from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseBounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BACKGROUND_ORIGIN } from '../../css/property-descriptors/background-origin';\nimport { TokenType } from '../../css/syntax/tokenizer';\nimport { LengthPercentageTuple } from '../../css/types/length-percentage';\nimport { Bounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseTree } from '../node-parser';\nimport { Color, parseColor, COLORS } from '../../css/types/color';\nimport { isTransparent } from '../../css/types/color-utilities';\nimport { Context } from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import { CSSParsedDeclaration } from '../css';\nimport { ElementContainer, FLAGS } from './element-container';\nimport { TextContainer } from './text-container';\nimport { ImageElementContainer } from './replaced-elements/image-element-container';\nimport { CanvasElementContainer } from './replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from './replaced-elements/svg-element-container';\nimport { LIElementContainer } from './elements/li-element-container';\nimport { OLElementContainer } from './elements/ol-element-container';\nimport { InputElementContainer } from './replaced-elements/input-element-container';\nimport { SelectElementContainer } from './elements/select-element-container';\nimport { TextareaElementContainer } from './elements/textarea-element-container';\nimport { IFrameElementContainer } from './replaced-elements/iframe-element-container';\nimport { Context } from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n // Fixes #2238 #1624 - Fix the issue of TextNode content being overlooked in rendering due to being perceived as blank by trim().\n if (isTextNode(childNode) && childNode.data.length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';\nimport { fromCodePoint } from 'css-line-break';\nimport { contains } from '../../../core/bitwise';\nimport { CSSParsedCounterDeclaration } from '../../index';\n\nexport class CounterState {\n private readonly counters: { [key: string]: number[] } = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n};\n","import { Bounds } from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport { isIdentToken, nonFunctionArgSeparator } from '../css/syntax/parser';\nimport { TokenType } from '../css/syntax/tokenizer';\nimport { CounterState, createCounterText } from '../css/types/functions/counter';\nimport { LIST_STYLE_TYPE, listStyleType } from '../css/property-descriptors/list-style-type';\nimport { CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration } from '../css/index';\nimport { getQuote } from '../css/property-descriptors/quotes';\nimport { Context } from '../core/context';\nimport { DebuggerType, isDebugging } from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n const adoptedNode = documentClone.adoptNode(this.documentElement);\n /**\n * The baseURI of the document will be lost after documentClone.open().\n * We can avoid it by adding <base> element.\n * */\n addBase(adoptedNode, documentClone);\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(adoptedNode, documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n\nconst addBase = (targetELement: HTMLElement, referenceDocument: Document) => {\n const baseNode = referenceDocument.createElement('base');\n baseNode.href = referenceDocument.baseURI;\n const headEle = targetELement.getElementsByTagName('head').item(0);\n headEle?.insertBefore(baseNode, headEle?.firstChild ?? null);\n};\n","import { FEATURES } from './features';\nimport { Context } from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: { [key: string]: Promise<any> } = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import { IPath, Path, PathType } from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import { Vector } from './vector';\nimport { IPath, PathType, Path } from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import { ElementContainer } from '../dom/element-container';\nimport { getAbsoluteValue, getAbsoluteValueForTuple } from '../css/types/length-percentage';\nimport { Vector } from './vector';\nimport { BezierCurve } from './bezier-curve';\nimport { Path } from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import { Matrix } from '../css/property-descriptors/transform';\nimport { Path } from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import { BezierCurve } from './bezier-curve';\nimport { Vector } from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import { ElementContainer, FLAGS } from '../dom/element-container';\nimport { contains } from '../core/bitwise';\nimport { BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath } from './bound-curves';\nimport { ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect } from './effects';\nimport { OVERFLOW } from '../css/property-descriptors/overflow';\nimport { equalPath } from './path';\nimport { DISPLAY } from '../css/property-descriptors/display';\nimport { OLElementContainer } from '../dom/elements/ol-element-container';\nimport { LIElementContainer } from '../dom/elements/li-element-container';\nimport { createCounterText } from '../css/types/functions/counter';\nimport { POSITION } from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n effects.unshift(...croplessEffects);\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import { Path } from './path';\nimport { BoundCurves } from './bound-curves';\nimport { isBezierCurve } from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import { getAbsoluteValue } from '../css/types/length-percentage';\nimport { Bounds } from '../css/layout/bounds';\nimport { ElementContainer } from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import { Bounds } from '../css/layout/bounds';\nimport { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';\nimport { ElementContainer } from '../dom/element-container';\nimport { BACKGROUND_SIZE, BackgroundSizeInfo } from '../css/property-descriptors/background-size';\nimport { Vector } from './vector';\nimport { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';\nimport { getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage } from '../css/types/length-percentage';\nimport { CSSValue, isIdentToken } from '../css/syntax/parser';\nimport { contentBox, paddingBox } from './box-sizing';\nimport { Path } from './path';\nimport { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n let [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n sizeWidth = Math.max(1, sizeWidth);\n sizeHeight = Math.max(1, sizeHeight);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import { SMALL_IMAGE } from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: { [key: string]: FontMetric };\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return { baseline, middle };\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import { Context } from '../core/context';\nimport { RenderConfigurations } from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import { ElementPaint, parseStackingContexts, StackingContext } from '../stacking-context';\nimport { Color } from '../../css/types/color';\nimport { asString, isTransparent } from '../../css/types/color-utilities';\nimport { ElementContainer, FLAGS } from '../../dom/element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { CSSParsedDeclaration } from '../../css';\nimport { TextContainer } from '../../dom/text-container';\nimport { Path, transformPath } from '../path';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath } from '../bound-curves';\nimport { BezierCurve, isBezierCurve } from '../bezier-curve';\nimport { Vector } from '../vector';\nimport { CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient } from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport { calculateBackgroundRendering, getBackgroundValueForIndex } from '../background';\nimport { isDimensionToken } from '../../css/syntax/parser';\nimport { segmentGraphemes, TextBounds } from '../../css/layout/text';\nimport { ImageElementContainer } from '../../dom/replaced-elements/image-element-container';\nimport { contentBox } from '../box-sizing';\nimport { CanvasElementContainer } from '../../dom/replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from '../../dom/replaced-elements/svg-element-container';\nimport { ReplacedElementContainer } from '../../dom/replaced-elements';\nimport { EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect } from '../effects';\nimport { contains } from '../../core/bitwise';\nimport { calculateGradientDirection, calculateRadius, processColorStops } from '../../css/types/functions/gradient';\nimport { FIFTY_PERCENT, getAbsoluteValue } from '../../css/types/length-percentage';\nimport { TEXT_DECORATION_LINE } from '../../css/property-descriptors/text-decoration-line';\nimport { FontMetrics } from '../font-metrics';\nimport { DISPLAY } from '../../css/property-descriptors/display';\nimport { Bounds } from '../../css/layout/bounds';\nimport { LIST_STYLE_TYPE } from '../../css/property-descriptors/list-style-type';\nimport { computeLineHeight } from '../../css/property-descriptors/line-height';\nimport {\n CHECKBOX,\n INPUT_COLOR,\n InputElementContainer,\n RADIO\n} from '../../dom/replaced-elements/input-element-container';\nimport { TEXT_ALIGN } from '../../css/property-descriptors/text-align';\nimport { TextareaElementContainer } from '../../dom/elements/textarea-element-container';\nimport { SelectElementContainer } from '../../dom/elements/select-element-container';\nimport { IFrameElementContainer } from '../../dom/replaced-elements/iframe-element-container';\nimport { TextShadow } from '../../css/property-descriptors/text-shadow';\nimport { PAINT_ORDER_LAYER } from '../../css/property-descriptors/paint-order';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\nimport { DIRECTION } from '../../css/property-descriptors/direction';\nimport { OBJECT_FIT } from '../../css/property-descriptors/object-fit';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n // Fixed an issue with characters moving up in non-Firefox.\n // https://github.com/niklasvh/html2canvas/issues/2107#issuecomment-692462900\n if (navigator.userAgent.indexOf('Firefox') === -1) {\n this.ctx.textBaseline = 'ideographic';\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n } else {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const { baseline } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, styles.fontSize.number);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(\n text,\n styles.letterSpacing,\n styles.fontSize.number\n );\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n const decorationLineHeight = 1;\n styles.textDecorationLine.forEach((textDecorationLine) => {\n // Fix the issue where textDecorationLine exhibits x-axis positioning errors on high-resolution devices due to varying devicePixelRatio, corrected by using relative values of element heights.\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + text.bounds.height - decorationLineHeight,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + (text.bounds.height / 2 - decorationLineHeight / 2),\n text.bounds.width,\n decorationLineHeight\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n const intrinsicWidth = (image as HTMLImageElement).naturalWidth || container.intrinsicWidth;\n const intrinsicHeight = (image as HTMLImageElement).naturalHeight || container.intrinsicHeight;\n if (image && intrinsicWidth > 0 && intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n let sx = 0,\n sy = 0,\n sw: number = intrinsicWidth,\n sh: number = intrinsicHeight,\n dx: number = box.left,\n dy: number = box.top,\n dw: number = box.width,\n dh: number = box.height;\n const { objectFit } = container.styles;\n const boxRatio = dw / dh;\n const imgRatio = sw / sh;\n if (objectFit === OBJECT_FIT.CONTAIN) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else if (objectFit === OBJECT_FIT.COVER) {\n if (imgRatio > boxRatio) {\n sw = sh * boxRatio;\n sx += (intrinsicWidth - sw) / 2;\n } else {\n sh = sw / boxRatio;\n sy += (intrinsicHeight - sh) / 2;\n }\n } else if (objectFit === OBJECT_FIT.NONE) {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n } else if (objectFit === OBJECT_FIT.SCALE_DOWN) {\n const containW = imgRatio > boxRatio ? dw : dh * imgRatio;\n const noneW = sw > dw ? sw : dw;\n if (containW < noneW) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n }\n }\n this.ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const { baseline } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n // https://github.com/niklasvh/html2canvas/pull/2911\n // if (image.width === width && image.height === height) {\n // return image;\n // }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const imageWidth = isNaN(image.width) || image.width === 0 ? 1 : image.width;\n const imageHeight = isNaN(image.height) || image.height === 0 ? 1 : image.height;\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n imageWidth,\n imageHeight,\n imageWidth / imageHeight\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import { RenderConfigurations } from './canvas-renderer';\nimport { createForeignObjectSVG } from '../../core/features';\nimport { asString } from '../../css/types/color-utilities';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: { [key: string]: Logger } = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({ id, enabled }: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import { Logger } from './logger';\nimport { Cache, ResourceOptions } from './cache-storage';\nimport { Bounds } from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import { Bounds, parseBounds, parseDocumentSize } from './css/layout/bounds';\nimport { COLORS, parseColor } from './css/types/color';\nimport { isTransparent } from './css/types/color-utilities';\nimport { CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions } from './dom/document-cloner';\nimport { isBodyElement, isHTMLElement, parseTree } from './dom/node-parser';\nimport { CacheStorage } from './core/cache-storage';\nimport { CanvasRenderer, RenderConfigurations, RenderOptions } from './render/canvas/canvas-renderer';\nimport { ForeignObjectRenderer } from './render/canvas/foreignobject-renderer';\nimport { Context, ContextOptions } from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const { width, height, left, top } =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],"names":["toCodePoints","fromCodePoint","chars","lookup","i","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","Trie","base64","CR","LF","ZWJ","RI","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","SPACE","color","colorType","angle","angleType","parseDisplayValue","transform","loadSerializedSVG"],"mappings":"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"}
1
+ {"version":3,"file":"html2canvas-pro.js","sources":["../node_modules/tslib/tslib.es6.js","../../src/css/layout/bounds.ts","../node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/linebreak-trie.ts","../node_modules/src/LineBreak.ts","../../src/css/syntax/tokenizer.ts","../../src/css/syntax/parser.ts","../../src/css/types/length.ts","../../src/css/types/length-percentage.ts","../../src/css/types/angle.ts","../../src/css/types/color-utilities.ts","../../src/css/types/color-spaces/srgb.ts","../../src/css/types/color-spaces/p3.ts","../../src/css/types/color-spaces/a98.ts","../../src/css/types/color-spaces/pro-photo.ts","../../src/css/types/color-spaces/rec2020.ts","../../src/css/types/color.ts","../../src/css/property-descriptors/background-clip.ts","../../src/css/property-descriptors/background-color.ts","../../src/css/types/functions/gradient.ts","../../src/css/types/functions/linear-gradient.ts","../../src/css/types/functions/-prefix-linear-gradient.ts","../../src/css/types/functions/-webkit-gradient.ts","../../src/css/types/functions/radial-gradient.ts","../../src/css/types/functions/-prefix-radial-gradient.ts","../../src/css/types/image.ts","../../src/css/property-descriptors/background-image.ts","../../src/css/property-descriptors/background-origin.ts","../../src/css/property-descriptors/background-position.ts","../../src/css/property-descriptors/background-repeat.ts","../../src/css/property-descriptors/background-size.ts","../../src/css/property-descriptors/border-color.ts","../../src/css/property-descriptors/border-radius.ts","../../src/css/property-descriptors/border-style.ts","../../src/css/property-descriptors/border-width.ts","../../src/css/property-descriptors/color.ts","../../src/css/property-descriptors/direction.ts","../../src/css/property-descriptors/display.ts","../../src/css/property-descriptors/float.ts","../../src/css/property-descriptors/letter-spacing.ts","../../src/css/property-descriptors/line-break.ts","../../src/css/property-descriptors/line-height.ts","../../src/css/property-descriptors/list-style-image.ts","../../src/css/property-descriptors/list-style-position.ts","../../src/css/property-descriptors/list-style-type.ts","../../src/css/property-descriptors/margin.ts","../../src/css/property-descriptors/overflow.ts","../../src/css/property-descriptors/overflow-wrap.ts","../../src/css/property-descriptors/padding.ts","../../src/css/property-descriptors/text-align.ts","../../src/css/property-descriptors/position.ts","../../src/css/property-descriptors/text-shadow.ts","../../src/css/property-descriptors/text-transform.ts","../../src/css/property-descriptors/transform.ts","../../src/css/property-descriptors/transform-origin.ts","../../src/css/property-descriptors/visibility.ts","../../src/css/property-descriptors/word-break.ts","../../src/css/property-descriptors/z-index.ts","../../src/css/types/time.ts","../../src/css/property-descriptors/opacity.ts","../../src/css/property-descriptors/text-decoration-color.ts","../../src/css/property-descriptors/text-decoration-line.ts","../../src/css/property-descriptors/font-family.ts","../../src/css/property-descriptors/font-size.ts","../../src/css/property-descriptors/font-weight.ts","../../src/css/property-descriptors/font-variant.ts","../../src/css/property-descriptors/font-style.ts","../../src/core/bitwise.ts","../../src/css/property-descriptors/content.ts","../../src/css/property-descriptors/counter-increment.ts","../../src/css/property-descriptors/counter-reset.ts","../../src/css/property-descriptors/duration.ts","../../src/css/property-descriptors/quotes.ts","../../src/css/property-descriptors/box-shadow.ts","../../src/css/property-descriptors/paint-order.ts","../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../src/css/property-descriptors/object-fit.ts","../../src/css/index.ts","../../src/core/debugger.ts","../../src/dom/element-container.ts","../node_modules/src/grapheme-break-trie.ts","../node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/GraphemeBreak.ts","../../src/core/features.ts","../../src/css/layout/text.ts","../../src/dom/text-container.ts","../../src/dom/replaced-elements/image-element-container.ts","../../src/dom/replaced-elements/canvas-element-container.ts","../../src/dom/replaced-elements/svg-element-container.ts","../../src/dom/elements/li-element-container.ts","../../src/dom/elements/ol-element-container.ts","../../src/dom/replaced-elements/input-element-container.ts","../../src/dom/elements/select-element-container.ts","../../src/dom/elements/textarea-element-container.ts","../../src/dom/replaced-elements/iframe-element-container.ts","../../src/dom/node-parser.ts","../../src/css/types/functions/counter.ts","../../src/dom/document-cloner.ts","../../src/core/cache-storage.ts","../../src/render/vector.ts","../../src/render/bezier-curve.ts","../../src/render/bound-curves.ts","../../src/render/effects.ts","../../src/render/path.ts","../../src/render/stacking-context.ts","../../src/render/border.ts","../../src/render/box-sizing.ts","../../src/render/background.ts","../../src/core/util.ts","../../src/render/font-metrics.ts","../../src/render/renderer.ts","../../src/render/canvas/canvas-renderer.ts","../../src/render/canvas/foreignobject-renderer.ts","../../src/core/logger.ts","../../src/core/context.ts","../../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import { Context } from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","export const base64 =\n '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//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport { fromCodePoint, toCodePoints } from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = { type: TokenType.COMMA_TOKEN };\nconst SUFFIX_MATCH_TOKEN: Token = { type: TokenType.SUFFIX_MATCH_TOKEN };\nconst PREFIX_MATCH_TOKEN: Token = { type: TokenType.PREFIX_MATCH_TOKEN };\nconst COLUMN_TOKEN: Token = { type: TokenType.COLUMN_TOKEN };\nconst DASH_MATCH_TOKEN: Token = { type: TokenType.DASH_MATCH_TOKEN };\nconst INCLUDE_MATCH_TOKEN: Token = { type: TokenType.INCLUDE_MATCH_TOKEN };\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = { type: TokenType.SUBSTRING_MATCH_TOKEN };\nconst BAD_URL_TOKEN: Token = { type: TokenType.BAD_URL_TOKEN };\nconst BAD_STRING_TOKEN: Token = { type: TokenType.BAD_STRING_TOKEN };\nconst CDO_TOKEN: Token = { type: TokenType.CDO_TOKEN };\nconst CDC_TOKEN: Token = { type: TokenType.CDC_TOKEN };\nconst COLON_TOKEN: Token = { type: TokenType.COLON_TOKEN };\nconst SEMICOLON_TOKEN: Token = { type: TokenType.SEMICOLON_TOKEN };\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = { type: TokenType.WHITESPACE_TOKEN };\nexport const EOF_TOKEN: Token = { type: TokenType.EOF_TOKEN };\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return { type: TokenType.HASH_TOKEN, value, flags };\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return { type: TokenType.AT_KEYWORD_TOKEN, value };\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end };\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end };\n } else {\n return { type: TokenType.UNICODE_RANGE_TOKEN, start, end: start };\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.FUNCTION_TOKEN, value };\n }\n\n return { type: TokenType.IDENT_TOKEN, value };\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return { type: TokenType.URL_TOKEN, value: '' };\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.URL_TOKEN, value: stringToken.value };\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: TokenType.URL_TOKEN, value: fromCodePoint(...value) };\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.URL_TOKEN, value: fromCodePoint(...value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: TokenType.STRING_TOKEN, value };\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return { type: TokenType.DIMENSION_TOKEN, number, flags, unit };\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: TokenType.PERCENTAGE_TOKEN, number, flags };\n }\n\n return { type: TokenType.NUMBER_TOKEN, number, flags };\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = { type, values: [] };\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import { CSSValue } from '../syntax/parser';\nimport { DimensionToken, NumberValueToken, TokenType } from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import { DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType } from '../syntax/tokenizer';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { isLength } from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import { CSSValue, isIdentToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { HUNDRED_PERCENT, ZERO_LENGTH } from './length-percentage';\nimport { GradientCorner } from './image';\nimport { Context } from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken, isNumberToken, nonFunctionArgSeparator } from '../syntax/parser';\nimport { rgb2rgbLinear, rgbLinear2xyz, srgbLinear2rgb, xyz2rgbLinear } from './color-spaces/srgb';\nimport { TokenType } from '../syntax/tokenizer';\nimport { angle, deg } from './angle';\nimport { getAbsoluteValue, isLengthPercentage } from './length-percentage';\n\ntype Color = number;\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nexport const getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nexport const isRelativeTransform = (tokens: CSSValue[]): boolean =>\n (tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown') === 'from';\n\nexport const clamp = (value: number, min: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport const multiplyMatrices = (A: number[], B: number[]): [number, number, number] => {\n return [\n A[0] * B[0] + A[1] * B[1] + A[2] * B[2],\n A[3] * B[0] + A[4] * B[1] + A[5] * B[2],\n A[6] * B[0] + A[7] * B[1] + A[8] * B[2]\n ];\n};\n\nexport const packSrgb = (args: number[]): number => {\n return pack(\n clamp(Math.round(args[0] * 255), 0, 255),\n clamp(Math.round(args[1] * 255), 0, 255),\n clamp(Math.round(args[2] * 255), 0, 255),\n clamp(args[3], 0, 1)\n );\n};\n\nexport const packSrgbLinear = ([r, g, b, a]: [number, number, number, number]): number => {\n const rgb = srgbLinear2rgb([r, g, b]);\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const packXYZ = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear([args[0], args[1], args[2]]);\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n\nexport const packLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklch()');\n }\n const [l, c, h, alpha] = extractOkLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lch()');\n }\n const [l, c, h, a] = extractLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const extractHslComponents = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n [hue, saturation, lightness, alpha] = tokens,\n h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2),\n s = isLengthPercentage(saturation) ? saturation.number / 100 : 0,\n l = isLengthPercentage(lightness) ? lightness.number / 100 : 0,\n a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n return [h, s, l, a];\n};\n\nexport const packHSL = (context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args)) {\n throw new Error('Relative color not supported for hsl()');\n }\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb = hsl2rgb([h, s, l]);\n return pack(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255, s === 0 ? 1 : a);\n};\n\nexport const extractLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n l = isLengthPercentage(tokens[0]) ? tokens[0].number : 0,\n c = isLengthPercentage(tokens[1]) ? tokens[1].number : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\nexport const extractLabComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n a =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n b = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n alpha = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, a, b, alpha];\n};\n\nexport const extractOkLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n c =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\n/**\n * Convert D65 to D50\n *\n * @param xyz\n */\nexport const d65toD50 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.0479297925449969, 0.022946870601609652, -0.05019226628920524, 0.02962780877005599, 0.9904344267538799,\n -0.017073799063418826, -0.009243040646204504, 0.015055191490298152, 0.7518742814281371\n ],\n xyz\n );\n};\n\n/**\n * Convert D50 to D65\n *\n * @param xyz\n */\nexport const d50toD65 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.955473421488075, -0.02309845494876471, 0.06325924320057072, -0.0283697093338637, 1.0099953980813041,\n 0.021041441191917323, 0.012314014864481998, -0.020507649298898964, 1.330365926242124\n ],\n xyz\n );\n};\n\nexport const hue2rgb = (t1: number, t2: number, hue: number): number => {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n};\n\nconst hsl2rgb = ([h, s, l]: [number, number, number]): [number, number, number] => {\n if (s === 0) {\n return [l * 255, l * 255, l * 255];\n }\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n t1 = l * 2 - t2,\n r = hue2rgb(t1, t2, h + 1 / 3),\n g = hue2rgb(t1, t2, h),\n b = hue2rgb(t1, t2, h - 1 / 3);\n\n return [r, g, b];\n};\n\n/**\n * Convert lch to OKLab\n *\n * @param l\n * @param c\n * @param h\n */\nconst lch2lab = ([l, c, h]: [number, number, number]): [number, number, number] => {\n if (c < 0) {\n c = 0;\n }\n if (isNaN(h)) {\n h = 0;\n }\n return [l, c * Math.cos((h * Math.PI) / 180), c * Math.sin((h * Math.PI) / 180)];\n};\n\n/**\n * Convert OKLab to XYZ relative to D65\n *\n * @param lab\n */\nconst oklab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const LMSg = multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1, 0.3963377773761749, 0.2158037573099136, 1, -0.1055613458156586, -0.0638541728258133, 1,\n -0.0894841775298119, -1.2914855480194092\n ],\n lab\n ),\n LMS = LMSg.map((val: number) => val ** 3);\n\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.2268798758459243, -0.5578149944602171, 0.2813910456659647, -0.0405757452148008, 1.112286803280317,\n -0.0717110580655164, -0.0763729366746601, -0.4214933324022432, 1.5869240198367816\n ],\n LMS\n );\n};\n\n/**\n * Convert Lab to D50-adapted XYZ\n *\n * @param lab\n */\nconst lab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const fy = (lab[0] + 16) / 116,\n fx = lab[1] / 500 + fy,\n fz = fy - lab[2] / 200,\n k = 24389 / 27,\n e = 24 / 116,\n xyz = [\n ((fx > e ? fx ** 3 : (116 * fx - 16) / k) * 0.3457) / 0.3585,\n lab[0] > 8 ? fy ** 3 : lab[0] / k,\n ((fz > e ? fz ** 3 : (116 * fz - 16) / k) * (1.0 - 0.3457 - 0.3585)) / 0.3585\n ];\n\n return d50toD65([xyz[0], xyz[1], xyz[2]]);\n};\n\n/**\n * Convert RGB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const rgbToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, 1];\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, a];\n }\n\n return [0, 0, 0, 1];\n};\n\n/**\n * HSL to XYZ\n *\n * @param context\n * @param args\n */\nexport const hslToXyz = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb_linear = rgb2rgbLinear(hsl2rgb([h, s, l])),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n\n return [x, y, z, a];\n};\n\n/**\n * LAB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const labToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, a, b, alpha] = extractLabComponents(args),\n [x, y, z] = lab2xyz([l, a, b]);\n return [x, y, z, alpha];\n};\n\n/**\n * LCH to XYZ\n *\n * @param _context\n * @param args\n */\nexport const lchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLchComponents(args),\n [x, y, z] = lab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLch to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractOkLchComponents(args),\n [x, y, z] = oklab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLab to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklabToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLabComponents(args),\n [x, y, z] = oklab2xyz([l, c, h]);\n return [x, y, z, alpha];\n};\n\n/**\n * XYZ-50 to XYZ\n *\n * @param args\n */\nexport const xyz50ToXYZ = (args: number[]): [number, number, number] => {\n return d50toD65([args[0], args[1], args[2]]);\n};\n\n/**\n * Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function\n *\n * @param args\n */\nexport const xyzFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n return args;\n};\n\n/**\n * XYZ-65 to XYZ-50\n *\n * @param args\n */\nexport const xyz50FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [x, y, z] = d65toD50([args[0], args[2], args[3]]);\n return [x, y, z, args[3]];\n};\n\n/**\n * Convert XYZ to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz = (args: number[]): number => {\n return packXYZ([args[0], args[1], args[2], args[3]]);\n};\n\n/**\n * Convert XYZ-50 to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz50 = (args: number[]): number => {\n const xyz = xyz50ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * SRGB related functions\n */\n\nimport { clamp, multiplyMatrices } from '../color-utilities';\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const xyz2rgbLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 3.2409699419045226, -1.537383177570094, -0.4986107602930034, -0.9692436362808796, 1.8759675015077202,\n 0.04155505740717559, 0.05563007969699366, -0.20397695888897652, 1.0569715142428786\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const rgbLinear2xyz = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.41239079926595934, 0.357584339383878, 0.1804807884018343, 0.21263900587151027, 0.715168678767756,\n 0.07219231536073371, 0.01933081871559182, 0.11919477979462598, 0.9505321522496607\n ],\n xyz\n );\n};\n\n/**\n * Convert sRGB to RGB\n *\n * @param rgb\n */\nexport const srgbLinear2rgb = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs > 0.0031308 ? sign * (1.055 * abs ** (1 / 2.4) - 0.055) : 12.92 * c;\n });\n};\n\n/**\n * Convert RGB to sRGB\n *\n * @param rgb\n */\nexport const rgb2rgbLinear = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs <= 0.04045 ? c / 12.92 : sign * ((abs + 0.055) / 1.055) ** 2.4;\n });\n};\n\n/**\n * XYZ to SRGB\n *\n * @param args\n */\nexport const srgbFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = srgbLinear2rgb(xyz2rgbLinear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * XYZ to SRGB-Linear\n * @param args\n */\nexport const srgbLinearFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = xyz2rgbLinear([args[0], args[1], args[2]]);\n return [\n clamp(Math.round(r * 255), 0, 255),\n clamp(Math.round(g * 255), 0, 255),\n clamp(Math.round(b * 255), 0, 255),\n args[3]\n ];\n};\n","/**\n * Display-P3 related functions\n */\n\nimport { srgbLinear2rgb } from './srgb';\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert P3 Linear to xyz\n *\n * @param p3l\n */\nexport const p3LinearToXyz = (p3l: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.4865709486482162, 0.26566769316909306, 0.1982172852343625, 0.2289745640697488, 0.6917385218365064,\n 0.079286914093745, 0.0, 0.04511338185890264, 1.043944368900976\n ],\n p3l\n );\n};\n/**\n * Convert XYZ to P3 Linear\n *\n * @param xyz\n */\nexport const xyzToP3Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.493496911941425, -0.9313836179191239, -0.40271078445071684, -0.8294889695615747, 1.7626640603183463,\n 0.023624685841943577, 0.03584583024378447, -0.07617238926804182, 0.9568845240076872\n ],\n xyz\n );\n};\n\n/**\n * Convert P3 to P3 linear\n *\n * @param p3\n */\nexport const p32p3Linear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = c * sign;\n\n if (abs <= 0.04045) {\n return c / 12.92;\n }\n\n // eslint-disable-next-line prettier/prettier\n return sign * ((c + 0.055) / 1.055) ** 2.4 || 0;\n });\n};\n\n/**\n * Convert P3 Linear to P3\n *\n * @param p3l\n */\nexport const p3Linear2p3 = (p3l: [number, number, number]): number[] => {\n return srgbLinear2rgb(p3l);\n};\n\n/**\n * Convert P3 to XYZ\n *\n * @param args\n */\nexport const p3ToXYZ = (args: number[]): number[] => {\n const p3_linear = p32p3Linear([args[0], args[1], args[2]]);\n return p3LinearToXyz([p3_linear[0], p3_linear[1], p3_linear[2]]);\n};\n\n/**\n * Convert XYZ to P3\n *\n * @param args\n */\nexport const p3FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = p3Linear2p3(xyzToP3Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert P3 to SRGB and Pack\n *\n * @param args\n */\nexport const convertP3 = (args: number[]): number => {\n const xyz = p3ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * A98-RGB related functions\n */\n\nimport { multiplyMatrices, packSrgbLinear } from '../color-utilities';\nimport { xyz2rgbLinear } from './srgb';\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param xyz\n */\nexport const xyz2a98Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.0415879038107465, -0.5650069742788596, -0.34473135077832956, -0.9692436362808795, 1.8759675015077202,\n 0.04155505740717557, 0.013444280632031142, -0.11836239223101838, 1.0151749943912054\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param a98\n */\nexport const a98Linear2xyz = (a98: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.5766690429101305, 0.1855582379065463, 0.1882286462349947, 0.29734497525053605, 0.6273635662554661,\n 0.0752914584939978, 0.02703136138641234, 0.07068885253582723, 0.9913375368376388\n ],\n a98\n );\n};\n\n/**\n * Convert A98 RGB to rgb linear\n *\n * @param rgb\n */\nexport const a982a98Linear = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (563 / 256);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert A98 RGB Linear to A98\n *\n * @param rgb\n */\nexport const a98Linear2a98 = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (256 / 563);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert XYZ to A98\n *\n * @param args\n */\nexport const a98FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = a98Linear2a98(xyz2a98Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert A98 to XYZ and Pack\n *\n * @param args\n */\nexport const convertA98rgb = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear(a98Linear2xyz(a982a98Linear([args[0], args[1], args[2]])));\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n","/**\n * Pro Photo related functions\n */\n\nimport { d50toD65, d65toD50, multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert linear-light display-p3 to XYZ D65\n *\n * @param p3\n */\nexport const proPhotoLinearToXyz = (p3: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.7977666449006423, 0.13518129740053308, 0.0313477341283922, 0.2880748288194013, 0.711835234241873,\n 0.00008993693872564, 0.0, 0.0, 0.8251046025104602\n ],\n p3\n );\n};\n\n/**\n * Convert XYZ D65 to linear-light display-p3\n *\n * @param xyz\n */\nexport const xyzToProPhotoLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.3457868816471583, -0.25557208737979464, -0.05110186497554526, -0.5446307051249019, 1.5082477428451468,\n 0.02052744743642139, 0.0, 0.0, 1.2119675456389452\n ],\n xyz\n );\n};\n\n/**\n * Convert Pro-Photo to Pro-Photo Linear\n *\n * @param p3\n */\nexport const proPhotoToProPhotoLinear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c < 16 / 512 ? c / 16 : c ** 1.8;\n });\n};\n\n/**\n * Convert Pro-Photo Linear to Pro-Photo\n *\n * @param p3\n */\nexport const proPhotoLinearToProPhoto = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c > 1 / 512 ? c ** (1 / 1.8) : c * 16;\n });\n};\n\n/**\n * Convert Pro-Photo to XYZ\n *\n * @param args\n */\nexport const proPhotoToXYZ = (args: number[]): [number, number, number] => {\n const prophoto_linear = proPhotoToProPhotoLinear([args[0], args[1], args[2]]);\n return d50toD65(proPhotoLinearToXyz([prophoto_linear[0], prophoto_linear[1], prophoto_linear[2]]));\n};\n\n/**\n * Convert XYZ to Pro-Photo\n *\n * @param args\n */\nexport const proPhotoFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = proPhotoLinearToProPhoto(xyzToProPhotoLinear(d65toD50([args[0], args[1], args[2]])));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Pro-Photo to XYZ and Pack\n *\n * @param args\n */\nexport const convertProPhoto = (args: number[]): number => {\n const xyz = proPhotoToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * REC2020 related functions\n */\n\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\nconst _a = 1.09929682680944;\nconst _b = 0.018053968510807;\n\n/**\n * Convert rec2020 to rec2020 linear\n *\n * @param rgb\n */\nexport const rec20202rec2020Linear = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c < _b * 4.5 ? c / 4.5 : Math.pow((c + _a - 1) / _a, 1 / 0.45);\n });\n};\n\n/**\n * Convert rec2020 linear to rec2020\n *\n * @param rgb\n */\nexport const rec2020Linear2rec2020 = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c >= _b ? _a * Math.pow(c, 0.45) - (_a - 1) : 4.5 * c;\n });\n};\n\n/**\n * Convert rec2020 linear to XYZ D65\n *\n * @param rec\n */\nexport const rec2020LinearToXyz = (rec: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.6369580483012914, 0.14461690358620832, 0.1688809751641721, 0.2627002120112671, 0.6779980715188708,\n 0.05930171646986196, 0.0, 0.028072693049087428, 1.060985057710791\n ],\n rec\n );\n};\n\n/**\n * Convert XYZ D65 to rec2020 linear\n *\n * @param xyz\n */\nexport const xyzToRec2020Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.716651187971268, -0.355670783776392, -0.25336628137366, -0.666684351832489, 1.616481236634939,\n 0.0157685458139111, 0.017639857445311, -0.042770613257809, 0.942103121235474\n ],\n xyz\n );\n};\n\n/**\n * Convert Rec2020 to XYZ\n *\n * @param args\n */\nexport const rec2020ToXYZ = (args: number[]): [number, number, number] => {\n const rec2020_linear = rec20202rec2020Linear([args[0], args[1], args[2]]);\n return rec2020LinearToXyz([rec2020_linear[0], rec2020_linear[1], rec2020_linear[2]]);\n};\n\n/**\n * Convert XYZ to Rec2020\n *\n * @param args\n */\nexport const rec2020FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = rec2020Linear2rec2020(xyzToRec2020Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Rec2020 to SRGB and Pack\n *\n * @param args\n */\nexport const convertRec2020 = (args: number[]): number => {\n const xyz = rec2020ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, Parser } from '../syntax/parser';\nimport { HashToken, TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\nimport { srgbFromXYZ, srgbLinearFromXYZ } from './color-spaces/srgb';\nimport {\n packSrgbLinear,\n packSrgb,\n packHSL,\n packLch,\n packOkLch,\n packOkLab,\n packLab,\n isRelativeTransform,\n pack,\n getTokenColorValue,\n convertXyz,\n convertXyz50,\n rgbToXyz,\n hslToXyz,\n labToXyz,\n lchToXyz,\n oklabToXyz,\n oklchToXyz,\n xyzFromXYZ,\n xyz50FromXYZ\n} from './color-utilities';\nimport { convertP3, p3FromXYZ } from './color-spaces/p3';\nimport { a98FromXYZ, convertA98rgb } from './color-spaces/a98';\nimport { convertProPhoto, proPhotoFromXYZ } from './color-spaces/pro-photo';\nimport { convertRec2020, rec2020FromXYZ } from './color-spaces/rec2020';\n\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n const [r, g, b, a] = hash2rgb(value);\n return pack(r, g, b, a);\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nconst hash2rgb = (token: HashToken): [number, number, number, number] => {\n if (token.value.length === 3) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1];\n }\n\n if (token.value.length === 4) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n const a = token.value.substring(3, 4);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255];\n }\n\n if (token.value.length === 6) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1];\n }\n\n if (token.value.length === 8) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n const a = token.value.substring(6, 8);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255];\n }\n\n return [0, 0, 0, 1];\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (isRelativeTransform(tokens)) {\n throw new Error('Relative color not supported for rgb()');\n }\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\n/**\n * Handle the CSS color() function\n *\n * @param context\n * @param args\n */\nconst _color = (context: Context, args: CSSValue[]) => {\n const tokens = args.filter(nonFunctionArgSeparator),\n token_1_value = tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown',\n is_absolute = !isRelativeTransform(tokens);\n\n if (is_absolute) {\n const color_space = token_1_value,\n colorSpaceFunction = SUPPORTED_COLOR_SPACES_ABSOLUTE[color_space];\n if (typeof colorSpaceFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${color_space}\" for color() function`);\n }\n const c1 = isNumberToken(tokens[1]) ? tokens[1].number : 0,\n c2 = isNumberToken(tokens[2]) ? tokens[2].number : 0,\n c3 = isNumberToken(tokens[3]) ? tokens[3].number : 0,\n a =\n tokens.length > 4 &&\n tokens[4].type === TokenType.DELIM_TOKEN &&\n tokens[4].value === '/' &&\n isNumberToken(tokens[5])\n ? tokens[5].number\n : 1;\n\n return colorSpaceFunction([c1, c2, c3, a]);\n } else {\n const extractComponent = (color: [number, number, number, number], token: CSSValue) => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n const posFromVal = (value: string): number => {\n return value === 'r' || value === 'x' ? 0 : value === 'g' || value === 'y' ? 1 : 2;\n };\n\n if (isIdentToken(token)) {\n const position = posFromVal(token.value);\n return color[position];\n }\n\n const parseCalc = (args: CSSValue[]): string => {\n const parts = args.filter(nonFunctionArgSeparator);\n let expression = '(';\n for (const part of parts) {\n expression +=\n part.type === TokenType.FUNCTION && part.name === 'calc'\n ? parseCalc(part.values)\n : isNumberToken(part)\n ? part.number\n : part.type === TokenType.DELIM_TOKEN || isIdentToken(part)\n ? part.value\n : '';\n }\n expression += ')';\n return expression;\n };\n\n if (token.type === TokenType.FUNCTION) {\n const args = token.values.filter(nonFunctionArgSeparator);\n if (token.name === 'calc') {\n const expression = parseCalc(args)\n .replace(/r|x/, color[0].toString())\n .replace(/g|y/, color[1].toString())\n .replace(/b|z/, color[2].toString());\n\n return new Function('return ' + expression)();\n }\n }\n\n return null;\n };\n\n const from_colorspace =\n tokens[1].type === TokenType.FUNCTION\n ? tokens[1].name\n : isIdentToken(tokens[1]) || tokens[1].type === TokenType.HASH_TOKEN\n ? 'rgb'\n : 'unknown',\n to_colorspace = isIdentToken(tokens[2]) ? tokens[2].value : 'unknown';\n\n let from =\n tokens[1].type === TokenType.FUNCTION ? tokens[1].values : isIdentToken(tokens[1]) ? [tokens[1]] : [];\n\n if (isIdentToken(tokens[1])) {\n const named_color = COLORS[tokens[1].value.toUpperCase()];\n if (typeof named_color === 'undefined') {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n } else {\n const _c = parseColor(context, tokens[1].value),\n alpha = 0xff & _c,\n blue = 0xff & (_c >> 8),\n green = 0xff & (_c >> 16),\n red = 0xff & (_c >> 24);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n } else if (tokens[1].type === TokenType.HASH_TOKEN) {\n const [red, green, blue, alpha] = hash2rgb(tokens[1]);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n\n if (from.length === 0) {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n }\n\n if (to_colorspace === 'unknown') {\n throw new Error(`Attempting to use unknown colorspace in relative color 'to'`);\n }\n\n const fromColorToXyz = SUPPORTED_COLOR_SPACES_TO_XYZ[from_colorspace],\n toColorFromXyz = SUPPORTED_COLOR_SPACES_FROM_XYZ[to_colorspace],\n toColorPack = SUPPORTED_COLOR_SPACES_ABSOLUTE[to_colorspace];\n\n if (typeof fromColorToXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${from_colorspace}\" for color() function`);\n }\n if (typeof toColorFromXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${to_colorspace}\" for color() function`);\n }\n\n const from_color: [number, number, number, number] = fromColorToXyz(context, from),\n from_final_colorspace: [number, number, number, number] = toColorFromXyz(from_color),\n c1 = extractComponent(from_final_colorspace, tokens[3]),\n c2 = extractComponent(from_final_colorspace, tokens[4]),\n c3 = extractComponent(from_final_colorspace, tokens[5]),\n a =\n tokens.length > 6 &&\n tokens[6].type === TokenType.DELIM_TOKEN &&\n tokens[6].value === '/' &&\n isNumberToken(tokens[7])\n ? tokens[7].number\n : 1;\n if (c1 === null || c2 === null || c3 === null) {\n throw new Error(`Invalid relative color in color() function`);\n }\n\n return toColorPack([c1, c2, c3, a]);\n }\n};\n\nconst SUPPORTED_COLOR_SPACES_ABSOLUTE: {\n [key: string]: (args: number[]) => number;\n} = {\n srgb: packSrgb,\n 'srgb-linear': packSrgbLinear,\n 'display-p3': convertP3,\n 'a98-rgb': convertA98rgb,\n 'prophoto-rgb': convertProPhoto,\n xyz: convertXyz,\n 'xyz-d50': convertXyz50,\n 'xyz-d65': convertXyz,\n rec2020: convertRec2020\n};\n\nconst SUPPORTED_COLOR_SPACES_TO_XYZ: {\n [key: string]: (context: Context, args: CSSValue[]) => [number, number, number, number];\n} = {\n rgb: rgbToXyz,\n hsl: hslToXyz,\n lab: labToXyz,\n lch: lchToXyz,\n oklab: oklabToXyz,\n oklch: oklchToXyz\n};\n\nconst SUPPORTED_COLOR_SPACES_FROM_XYZ: {\n [key: string]: (args: [number, number, number, number]) => [number, number, number, number];\n} = {\n srgb: srgbFromXYZ,\n 'srgb-linear': srgbLinearFromXYZ,\n 'display-p3': p3FromXYZ,\n 'a98-rgb': a98FromXYZ,\n 'prophoto-rgb': proPhotoFromXYZ,\n xyz: xyzFromXYZ,\n 'xyz-d50': xyz50FromXYZ,\n 'xyz-d65': xyzFromXYZ,\n rec2020: rec2020FromXYZ\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: packHSL,\n hsla: packHSL,\n rgb: rgb,\n rgba: rgb,\n lch: packLch,\n oklch: packOkLch,\n oklab: packOkLab,\n lab: packLab,\n color: _color\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: { [key: string]: Color } = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { CSSValue } from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport { color as colorType } from '../color';\nimport { getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH } from '../length-percentage';\nimport { Context } from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? { color, stop } : { color, stop: null };\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({ color }, i) => {\n return { color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0) };\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import { CSSValue, parseFunctionArgs } from '../../syntax/parser';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { isAngle, angle as angleType, parseNamedSide, deg } from '../angle';\nimport { CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop } from '../image';\nimport { parseColorStop } from './gradient';\nimport { Context } from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return { angle, stops, type: CSSImageType.LINEAR_GRADIENT };\n};\n","import { CSSValue, parseFunctionArgs } from '../../syntax/parser';\nimport { CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop } from '../image';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { isAngle, angle as angleType, parseNamedSide, deg } from '../angle';\nimport { parseColorStop } from './gradient';\nimport { Context } from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { deg } from '../angle';\nimport { TokenType } from '../../syntax/tokenizer';\nimport { color as colorType } from '../color';\nimport { HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH } from '../length-percentage';\nimport { Context } from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color });\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color });\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags },\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : { size, shape, stops, position, type };\n};\n","import { CSSValue, isIdentToken, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { parseColorStop } from './gradient';\nimport {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} from '../length-percentage';\nimport { isLength } from '../length';\nimport { Context } from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return { size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT };\n};\n","import { CSSValue, isIdentToken, parseFunctionArgs } from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport { parseColorStop } from './gradient';\nimport {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} from '../length-percentage';\nimport { isLength } from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport { Context } from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return { size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT };\n};\n","import { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Color } from './color';\nimport { linearGradient } from './functions/linear-gradient';\nimport { prefixLinearGradient } from './functions/-prefix-linear-gradient';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { LengthPercentage } from './length-percentage';\nimport { webkitGradient } from './functions/-webkit-gradient';\nimport { radialGradient } from './functions/radial-gradient';\nimport { prefixRadialGradient } from './functions/-prefix-radial-gradient';\nimport { Context } from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = { url: value.value, type: CSSImageType.URL };\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import { TokenType } from '../syntax/tokenizer';\nimport { ICSSImage, image, isSupportedImage } from '../types/image';\nimport { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, nonFunctionArgSeparator } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, parseFunctionArgs } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple } from '../types/length-percentage';\nimport { Context } from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, parseFunctionArgs } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, parseFunctionArgs } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentage } from '../types/length-percentage';\nimport { StringValueToken } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple } from '../types/length-percentage';\nimport { Context } from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import { IPropertyTokenValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { getAbsoluteValue, isLengthPercentage } from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import { TokenType } from '../syntax/tokenizer';\nimport { ICSSImage, image } from '../types/image';\nimport { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import { IPropertyTokenValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentWithValue, parseFunctionArgs } from '../syntax/parser';\nimport { ZERO_LENGTH } from '../types/length-percentage';\nimport { color, Color, COLORS } from '../types/color';\nimport { isLength, Length } from '../types/length';\nimport { Context } from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { NumberValueToken, TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { isLengthPercentage, LengthPercentage } from '../types/length-percentage';\nimport { FLAG_INTEGER, TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return { auto: true, order: 0 };\n }\n\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, isNumberToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import { IPropertyIdentValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import { TokenType } from '../syntax/tokenizer';\nimport { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isNumberToken, nonWhiteSpace } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment });\n }\n }\n\n return increments;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken, isNumberToken, nonWhiteSpace } from '../syntax/parser';\nimport { Context } from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset });\n }\n }\n\n return resets;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { time } from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isStringToken } from '../syntax/parser';\nimport { TokenType } from '../syntax/tokenizer';\nimport { Context } from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({ open, close });\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import { PropertyDescriptorParsingType, IPropertyListDescriptor } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentWithValue, parseFunctionArgs } from '../syntax/parser';\nimport { ZERO_LENGTH } from '../types/length-percentage';\nimport { color, Color } from '../types/color';\nimport { isLength, Length } from '../types/length';\nimport { Context } from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import { IPropertyTypeValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { Context } from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OBJECT_FIT {\n FILL = 0,\n CONTAIN = 1 << 1,\n COVER = 1 << 2,\n NONE = 1 << 3,\n SCALE_DOWN = 1 << 4\n}\n\nexport type ObjectFit = number;\n\nexport const objectFit: IPropertyListDescriptor<ObjectFit> = {\n name: 'objectFit',\n initialValue: 'fill',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): ObjectFit => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, OBJECT_FIT.FILL);\n }\n};\n\nconst parseDisplayValue = (display: string): ObjectFit => {\n switch (display) {\n case 'contain':\n return OBJECT_FIT.CONTAIN;\n case 'cover':\n return OBJECT_FIT.COVER;\n case 'none':\n return OBJECT_FIT.NONE;\n case 'scale-down':\n return OBJECT_FIT.SCALE_DOWN;\n }\n\n return OBJECT_FIT.FILL;\n};\n","import { CSSPropertyDescriptor, PropertyDescriptorParsingType } from './IPropertyDescriptor';\nimport { backgroundClip } from './property-descriptors/background-clip';\nimport { backgroundColor } from './property-descriptors/background-color';\nimport { backgroundImage } from './property-descriptors/background-image';\nimport { backgroundOrigin } from './property-descriptors/background-origin';\nimport { backgroundPosition } from './property-descriptors/background-position';\nimport { backgroundRepeat } from './property-descriptors/background-repeat';\nimport { backgroundSize } from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport { color } from './property-descriptors/color';\nimport { direction } from './property-descriptors/direction';\nimport { display, DISPLAY } from './property-descriptors/display';\nimport { float, FLOAT } from './property-descriptors/float';\nimport { letterSpacing } from './property-descriptors/letter-spacing';\nimport { lineBreak } from './property-descriptors/line-break';\nimport { lineHeight } from './property-descriptors/line-height';\nimport { listStyleImage } from './property-descriptors/list-style-image';\nimport { listStylePosition } from './property-descriptors/list-style-position';\nimport { listStyleType } from './property-descriptors/list-style-type';\nimport { marginBottom, marginLeft, marginRight, marginTop } from './property-descriptors/margin';\nimport { overflow, OVERFLOW } from './property-descriptors/overflow';\nimport { overflowWrap } from './property-descriptors/overflow-wrap';\nimport { paddingBottom, paddingLeft, paddingRight, paddingTop } from './property-descriptors/padding';\nimport { textAlign } from './property-descriptors/text-align';\nimport { position, POSITION } from './property-descriptors/position';\nimport { textShadow } from './property-descriptors/text-shadow';\nimport { textTransform } from './property-descriptors/text-transform';\nimport { transform } from './property-descriptors/transform';\nimport { transformOrigin } from './property-descriptors/transform-origin';\nimport { visibility, VISIBILITY } from './property-descriptors/visibility';\nimport { wordBreak } from './property-descriptors/word-break';\nimport { zIndex } from './property-descriptors/z-index';\nimport { CSSValue, isIdentToken, Parser } from './syntax/parser';\nimport { Tokenizer } from './syntax/tokenizer';\nimport { Color, color as colorType } from './types/color';\nimport { isTransparent } from './types/color-utilities';\nimport { angle } from './types/angle';\nimport { image } from './types/image';\nimport { time } from './types/time';\nimport { opacity } from './property-descriptors/opacity';\nimport { textDecorationColor } from './property-descriptors/text-decoration-color';\nimport { textDecorationLine } from './property-descriptors/text-decoration-line';\nimport { isLengthPercentage, LengthPercentage, ZERO_LENGTH } from './types/length-percentage';\nimport { fontFamily } from './property-descriptors/font-family';\nimport { fontSize } from './property-descriptors/font-size';\nimport { isLength } from './types/length';\nimport { fontWeight } from './property-descriptors/font-weight';\nimport { fontVariant } from './property-descriptors/font-variant';\nimport { fontStyle } from './property-descriptors/font-style';\nimport { contains } from '../core/bitwise';\nimport { content } from './property-descriptors/content';\nimport { counterIncrement } from './property-descriptors/counter-increment';\nimport { counterReset } from './property-descriptors/counter-reset';\nimport { duration } from './property-descriptors/duration';\nimport { quotes } from './property-descriptors/quotes';\nimport { boxShadow } from './property-descriptors/box-shadow';\nimport { paintOrder } from './property-descriptors/paint-order';\nimport { webkitTextStrokeColor } from './property-descriptors/webkit-text-stroke-color';\nimport { webkitTextStrokeWidth } from './property-descriptors/webkit-text-stroke-width';\nimport { Context } from '../core/context';\nimport { objectFit } from './property-descriptors/object-fit';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\n objectFit: ReturnType<typeof objectFit.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n this.objectFit = parse(context, objectFit, declaration.objectFit);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TextContainer } from './text-container';\nimport { Bounds, parseBounds } from '../css/layout/bounds';\nimport { isHTMLElementNode } from './node-parser';\nimport { Context } from '../core/context';\nimport { DebuggerType, isDebugging } from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import { fromCodePoint, toCodePoints } from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value });\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value });\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value });\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value });\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value });\n return value;\n }\n};\n","import { OVERFLOW_WRAP } from '../property-descriptors/overflow-wrap';\nimport { CSSParsedDeclaration } from '../index';\nimport { fromCodePoint, LineBreaker, toCodePoints } from 'css-line-break';\nimport { splitGraphemes } from 'text-segmentation';\nimport { Bounds, parseBounds } from './bounds';\nimport { FEATURES } from '../../core/features';\nimport { Context } from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TEXT_TRANSFORM } from '../css/property-descriptors/text-transform';\nimport { parseTextBounds, TextBounds } from '../css/layout/text';\nimport { Context } from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseBounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BACKGROUND_ORIGIN } from '../../css/property-descriptors/background-origin';\nimport { TokenType } from '../../css/syntax/tokenizer';\nimport { LengthPercentageTuple } from '../../css/types/length-percentage';\nimport { Bounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseTree } from '../node-parser';\nimport { Color, parseColor, COLORS } from '../../css/types/color';\nimport { isTransparent } from '../../css/types/color-utilities';\nimport { Context } from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import { CSSParsedDeclaration } from '../css';\nimport { ElementContainer, FLAGS } from './element-container';\nimport { TextContainer } from './text-container';\nimport { ImageElementContainer } from './replaced-elements/image-element-container';\nimport { CanvasElementContainer } from './replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from './replaced-elements/svg-element-container';\nimport { LIElementContainer } from './elements/li-element-container';\nimport { OLElementContainer } from './elements/ol-element-container';\nimport { InputElementContainer } from './replaced-elements/input-element-container';\nimport { SelectElementContainer } from './elements/select-element-container';\nimport { TextareaElementContainer } from './elements/textarea-element-container';\nimport { IFrameElementContainer } from './replaced-elements/iframe-element-container';\nimport { Context } from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n // Fixes #2238 #1624 - Fix the issue of TextNode content being overlooked in rendering due to being perceived as blank by trim().\n if (isTextNode(childNode) && childNode.data.length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';\nimport { fromCodePoint } from 'css-line-break';\nimport { contains } from '../../../core/bitwise';\nimport { CSSParsedCounterDeclaration } from '../../index';\n\nexport class CounterState {\n private readonly counters: { [key: string]: number[] } = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n};\n","import { Bounds } from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport { isIdentToken, nonFunctionArgSeparator } from '../css/syntax/parser';\nimport { TokenType } from '../css/syntax/tokenizer';\nimport { CounterState, createCounterText } from '../css/types/functions/counter';\nimport { LIST_STYLE_TYPE, listStyleType } from '../css/property-descriptors/list-style-type';\nimport { CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration } from '../css/index';\nimport { getQuote } from '../css/property-descriptors/quotes';\nimport { Context } from '../core/context';\nimport { DebuggerType, isDebugging } from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n const adoptedNode = documentClone.adoptNode(this.documentElement);\n /**\n * The baseURI of the document will be lost after documentClone.open().\n * We can avoid it by adding <base> element.\n * */\n addBase(adoptedNode, documentClone);\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(adoptedNode, documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n\nconst addBase = (targetELement: HTMLElement, referenceDocument: Document) => {\n const baseNode = referenceDocument.createElement('base');\n baseNode.href = referenceDocument.baseURI;\n const headEle = targetELement.getElementsByTagName('head').item(0);\n headEle?.insertBefore(baseNode, headEle?.firstChild ?? null);\n};\n","import { FEATURES } from './features';\nimport { Context } from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: { [key: string]: Promise<any> } = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import { IPath, Path, PathType } from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import { Vector } from './vector';\nimport { IPath, PathType, Path } from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import { ElementContainer } from '../dom/element-container';\nimport { getAbsoluteValue, getAbsoluteValueForTuple } from '../css/types/length-percentage';\nimport { Vector } from './vector';\nimport { BezierCurve } from './bezier-curve';\nimport { Path } from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import { Matrix } from '../css/property-descriptors/transform';\nimport { Path } from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import { BezierCurve } from './bezier-curve';\nimport { Vector } from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import { ElementContainer, FLAGS } from '../dom/element-container';\nimport { contains } from '../core/bitwise';\nimport { BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath } from './bound-curves';\nimport { ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect } from './effects';\nimport { OVERFLOW } from '../css/property-descriptors/overflow';\nimport { equalPath } from './path';\nimport { DISPLAY } from '../css/property-descriptors/display';\nimport { OLElementContainer } from '../dom/elements/ol-element-container';\nimport { LIElementContainer } from '../dom/elements/li-element-container';\nimport { createCounterText } from '../css/types/functions/counter';\nimport { POSITION } from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n effects.unshift(...croplessEffects);\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import { Path } from './path';\nimport { BoundCurves } from './bound-curves';\nimport { isBezierCurve } from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import { getAbsoluteValue } from '../css/types/length-percentage';\nimport { Bounds } from '../css/layout/bounds';\nimport { ElementContainer } from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import { Bounds } from '../css/layout/bounds';\nimport { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';\nimport { ElementContainer } from '../dom/element-container';\nimport { BACKGROUND_SIZE, BackgroundSizeInfo } from '../css/property-descriptors/background-size';\nimport { Vector } from './vector';\nimport { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';\nimport { getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage } from '../css/types/length-percentage';\nimport { CSSValue, isIdentToken } from '../css/syntax/parser';\nimport { contentBox, paddingBox } from './box-sizing';\nimport { Path } from './path';\nimport { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n let [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n sizeWidth = Math.max(1, sizeWidth);\n sizeHeight = Math.max(1, sizeHeight);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import { SMALL_IMAGE } from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: { [key: string]: FontMetric };\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return { baseline, middle };\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import { Context } from '../core/context';\nimport { RenderConfigurations } from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import { ElementPaint, parseStackingContexts, StackingContext } from '../stacking-context';\nimport { Color } from '../../css/types/color';\nimport { asString, isTransparent } from '../../css/types/color-utilities';\nimport { ElementContainer, FLAGS } from '../../dom/element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { CSSParsedDeclaration } from '../../css';\nimport { TextContainer } from '../../dom/text-container';\nimport { Path, transformPath } from '../path';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath } from '../bound-curves';\nimport { BezierCurve, isBezierCurve } from '../bezier-curve';\nimport { Vector } from '../vector';\nimport { CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient } from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport { calculateBackgroundRendering, getBackgroundValueForIndex } from '../background';\nimport { isDimensionToken } from '../../css/syntax/parser';\nimport { segmentGraphemes, TextBounds } from '../../css/layout/text';\nimport { ImageElementContainer } from '../../dom/replaced-elements/image-element-container';\nimport { contentBox } from '../box-sizing';\nimport { CanvasElementContainer } from '../../dom/replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from '../../dom/replaced-elements/svg-element-container';\nimport { ReplacedElementContainer } from '../../dom/replaced-elements';\nimport { EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect } from '../effects';\nimport { contains } from '../../core/bitwise';\nimport { calculateGradientDirection, calculateRadius, processColorStops } from '../../css/types/functions/gradient';\nimport { FIFTY_PERCENT, getAbsoluteValue } from '../../css/types/length-percentage';\nimport { TEXT_DECORATION_LINE } from '../../css/property-descriptors/text-decoration-line';\nimport { FontMetrics } from '../font-metrics';\nimport { DISPLAY } from '../../css/property-descriptors/display';\nimport { Bounds } from '../../css/layout/bounds';\nimport { LIST_STYLE_TYPE } from '../../css/property-descriptors/list-style-type';\nimport { computeLineHeight } from '../../css/property-descriptors/line-height';\nimport {\n CHECKBOX,\n INPUT_COLOR,\n InputElementContainer,\n RADIO\n} from '../../dom/replaced-elements/input-element-container';\nimport { TEXT_ALIGN } from '../../css/property-descriptors/text-align';\nimport { TextareaElementContainer } from '../../dom/elements/textarea-element-container';\nimport { SelectElementContainer } from '../../dom/elements/select-element-container';\nimport { IFrameElementContainer } from '../../dom/replaced-elements/iframe-element-container';\nimport { TextShadow } from '../../css/property-descriptors/text-shadow';\nimport { PAINT_ORDER_LAYER } from '../../css/property-descriptors/paint-order';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\nimport { DIRECTION } from '../../css/property-descriptors/direction';\nimport { OBJECT_FIT } from '../../css/property-descriptors/object-fit';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n // Fixed an issue with characters moving up in non-Firefox.\n // https://github.com/niklasvh/html2canvas/issues/2107#issuecomment-692462900\n if (navigator.userAgent.indexOf('Firefox') === -1) {\n this.ctx.textBaseline = 'ideographic';\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n } else {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, styles.fontSize.number);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(\n text,\n styles.letterSpacing,\n styles.fontSize.number\n );\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n const decorationLineHeight = 1;\n styles.textDecorationLine.forEach((textDecorationLine) => {\n // Fix the issue where textDecorationLine exhibits x-axis positioning errors on high-resolution devices due to varying devicePixelRatio, corrected by using relative values of element heights.\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + text.bounds.height - decorationLineHeight,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + (text.bounds.height / 2 - decorationLineHeight / 2),\n text.bounds.width,\n decorationLineHeight\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n const intrinsicWidth = (image as HTMLImageElement).naturalWidth || container.intrinsicWidth;\n const intrinsicHeight = (image as HTMLImageElement).naturalHeight || container.intrinsicHeight;\n if (image && intrinsicWidth > 0 && intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n let sx = 0,\n sy = 0,\n sw: number = intrinsicWidth,\n sh: number = intrinsicHeight,\n dx: number = box.left,\n dy: number = box.top,\n dw: number = box.width,\n dh: number = box.height;\n const { objectFit } = container.styles;\n const boxRatio = dw / dh;\n const imgRatio = sw / sh;\n if (objectFit === OBJECT_FIT.CONTAIN) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else if (objectFit === OBJECT_FIT.COVER) {\n if (imgRatio > boxRatio) {\n sw = sh * boxRatio;\n sx += (intrinsicWidth - sw) / 2;\n } else {\n sh = sw / boxRatio;\n sy += (intrinsicHeight - sh) / 2;\n }\n } else if (objectFit === OBJECT_FIT.NONE) {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n } else if (objectFit === OBJECT_FIT.SCALE_DOWN) {\n const containW = imgRatio > boxRatio ? dw : dh * imgRatio;\n const noneW = sw > dw ? sw : dw;\n if (containW < noneW) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n }\n }\n this.ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n const { baseline } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = font;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [font] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n // https://github.com/niklasvh/html2canvas/pull/2911\n // if (image.width === width && image.height === height) {\n // return image;\n // }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const imageWidth = isNaN(image.width) || image.width === 0 ? 1 : image.width;\n const imageHeight = isNaN(image.height) || image.height === 0 ? 1 : image.height;\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n imageWidth,\n imageHeight,\n imageWidth / imageHeight\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength || 1).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import { RenderConfigurations } from './canvas-renderer';\nimport { createForeignObjectSVG } from '../../core/features';\nimport { asString } from '../../css/types/color-utilities';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: { [key: string]: Logger } = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({ id, enabled }: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import { Logger } from './logger';\nimport { Cache, ResourceOptions } from './cache-storage';\nimport { Bounds } from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import { Bounds, parseBounds, parseDocumentSize } from './css/layout/bounds';\nimport { COLORS, parseColor } from './css/types/color';\nimport { isTransparent } from './css/types/color-utilities';\nimport { CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions } from './dom/document-cloner';\nimport { isBodyElement, isHTMLElement, parseTree } from './dom/node-parser';\nimport { CacheStorage } from './core/cache-storage';\nimport { CanvasRenderer, RenderConfigurations, RenderOptions } from './render/canvas/canvas-renderer';\nimport { ForeignObjectRenderer } from './render/canvas/foreignobject-renderer';\nimport { Context, ContextOptions } from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const { width, height, left, top } =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],"names":["toCodePoints","fromCodePoint","chars","lookup","i","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","Trie","base64","CR","LF","ZWJ","RI","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","SPACE","color","colorType","angle","angleType","parseDisplayValue","transform","loadSerializedSVG"],"mappings":"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"}