{"version":3,"file":"ej2-pdf-export.min.js","sources":["../../src/implementation/collections/utils.js","../../src/implementation/collections/dictionary.js","../../src/implementation/primitives/pdf-name.js","../../src/implementation/input-output/pdf-operators.js","../../src/implementation/input-output/pdf-dictionary-properties.js","../../src/implementation/primitives/pdf-dictionary.js","../../src/implementation/primitives/pdf-number.js","../../src/implementation/primitives/pdf-array.js","../../src/implementation/primitives/pdf-stream.js","../../src/implementation/primitives/pdf-string.js","../../src/implementation/primitives/pdf-reference.js","../../src/implementation/actions/action.js","../../src/implementation/actions/uri-action.js","../../src/implementation/graphics/enum.js","../../src/implementation/graphics/pdf-color.js","../../src/implementation/drawing/pdf-drawing.js","../../src/implementation/graphics/brushes/pdf-brush.js","../../src/implementation/graphics/brushes/pdf-solid-brush.js","../../src/implementation/graphics/fonts/enum.js","../../src/implementation/graphics/fonts/pdf-string-format.js","../../src/implementation/graphics/fonts/string-tokenizer.js","../../src/implementation/graphics/fonts/string-layouter.js","../../src/implementation/graphics/fonts/pdf-font.js","../../src/implementation/input-output/pdf-writer.js","../../src/implementation/input-output/enum.js","../../src/implementation/input-output/pdf-main-object-collection.js","../../src/implementation/document/pdf-document-base.js","../../src/implementation/input-output/cross-table.js","../../src/implementation/primitives/pdf-boolean.js","../../src/implementation/document/pdf-viewer-preferences.js","../../src/implementation/document/pdf-catalog.js","../../src/implementation/input-output/pdf-cross-table.js","../../src/implementation/pages/pdf-page-size.js","../../src/implementation/pages/enum.js","../../src/implementation/graphics/pdf-margins.js","../../src/implementation/pages/pdf-page-settings.js","../../src/implementation/input-output/pdf-stream-writer.js","../../src/implementation/graphics/pdf-pen.js","../../src/implementation/graphics/pdf-transformation-matrix.js","../../src/implementation/graphics/constants.js","../../src/implementation/collections/object-object-pair/dictionary.js","../../src/implementation/graphics/pdf-transparency.js","../../src/implementation/document/automatic-fields/automatic-field-info-collection.js","../../src/implementation/graphics/figures/base/graphics-element.js","../../src/implementation/document/automatic-fields/automatic-field.js","../../src/implementation/document/automatic-fields/automatic-field-info.js","../../src/implementation/graphics/images/byte-array.js","../../src/implementation/graphics/images/image-decoder.js","../../src/implementation/graphics/unit-convertor.js","../../src/implementation/graphics/images/pdf-image.js","../../src/implementation/graphics/images/pdf-bitmap.js","../../src/implementation/graphics/fonts/ttf-table-info.js","../../src/implementation/graphics/fonts/ttf-name-table.js","../../src/implementation/graphics/fonts/ttf-name-record.js","../../src/implementation/graphics/fonts/ttf-head-table.js","../../src/implementation/graphics/fonts/ttf-metrics.js","../../src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../../src/implementation/graphics/fonts/ttf-OS2-Table.js","../../src/implementation/graphics/fonts/ttf-post-table.js","../../src/implementation/graphics/fonts/ttf-long-hor-metric.js","../../src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../../src/implementation/graphics/fonts/ttf-cmap-table.js","../../src/implementation/graphics/fonts/ttf-glyph-info.js","../../src/implementation/graphics/fonts/ttf-loca-table.js","../../src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../../src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../../src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../../src/implementation/graphics/fonts/ttf-glyph-header.js","../../src/implementation/input-output/big-endian-writer.js","../../src/implementation/graphics/fonts/ttf-reader.js","../../src/implementation/graphics/fonts/pdf-font-metrics.js","../../src/implementation/graphics/fonts/unicode-true-type-font.js","../../src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../../src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../../src/implementation/graphics/fonts/rtl-renderer.js","../../src/implementation/graphics/figures/enum.js","../../src/implementation/graphics/brushes/pdf-gradient-brush.js","../../src/implementation/graphics/figures/pdf-template.js","../../src/implementation/graphics/pdf-resources.js","../../src/implementation/graphics/brushes/pdf-tiling-brush.js","../../src/implementation/graphics/pdf-graphics.js","../../src/implementation/pages/pdf-page-layer.js","../../src/implementation/general/pdf-collection.js","../../src/implementation/pages/pdf-page-layer-collection.js","../../src/implementation/pages/pdf-page-base.js","../../src/implementation/annotations/annotation-collection.js","../../src/implementation/pages/pdf-page.js","../../src/implementation/pages/page-added-event-arguments.js","../../src/implementation/pages/pdf-section-page-collection.js","../../src/implementation/document/pdf-document-template.js","../../src/implementation/pages/pdf-section-templates.js","../../src/implementation/pages/pdf-section.js","../../src/implementation/pages/pdf-section-collection.js","../../src/implementation/pages/pdf-document-page-collection.js","../../src/implementation/general/pdf-cache-collection.js","../../src/implementation/document/pdf-document.js","../../src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../../src/implementation/graphics/fonts/pdf-standard-font.js","../../src/implementation/annotations/annotation.js","../../src/implementation/annotations/link-annotation.js","../../src/implementation/annotations/action-link-annotation.js","../../src/implementation/annotations/document-link-annotation.js","../../src/implementation/graphics/figures/base/element-layouter.js","../../src/implementation/structured-elements/grid/styles/pdf-borders.js","../../src/implementation/graphics/figures/layout-element.js","../../src/implementation/graphics/figures/base/text-layouter.js","../../src/implementation/graphics/figures/text-element.js","../../src/implementation/annotations/uri-annotation.js","../../src/implementation/annotations/pdf-text-web-link.js","../../src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../../src/implementation/document/automatic-fields/pdf-template-value-pair.js","../../src/implementation/document/automatic-fields/multiple-value-field.js","../../src/implementation/document/automatic-fields/pdf-page-number-field.js","../../src/implementation/document/automatic-fields/composite-field.js","../../src/implementation/document/automatic-fields/single-value-field.js","../../src/implementation/document/automatic-fields/page-count-field.js","../../src/implementation/general/enum.js","../../src/implementation/graphics/brushes/enum.js","../../src/implementation/general/pdf-destination.js","../../src/implementation/general/functions/pdf-function.js","../../src/implementation/general/functions/pdf-sampled-function.js","../../src/implementation/graphics/brushes/pdf-brushes.js","../../src/implementation/graphics/brushes/pdf-blend.js","../../src/implementation/graphics/brushes/pdf-color-blend.js","../../src/implementation/graphics/brushes/pdf-linear-gradient-brush.js","../../src/implementation/graphics/brushes/pdf-radial-gradient-brush.js","../../src/implementation/structured-elements/tables/light-tables/enum.js","../../src/implementation/structured-elements/grid/styles/style.js","../../src/implementation/structured-elements/grid/pdf-grid-cell.js","../../src/implementation/structured-elements/grid/pdf-grid-column.js","../../src/implementation/structured-elements/grid/pdf-grid-row.js","../../src/implementation/structured-elements/grid/pdf-grid.js","../../src/implementation/structured-elements/grid/layout/grid-layouter.js","../../src/implementation/graphics/figures/base/shape-layouter.js","../../src/implementation/graphics/figures/base/pdf-shape-element.js","../../src/implementation/graphics/figures/base/draw-element.js","../../src/implementation/graphics/figures/base/fill-element.js","../../src/implementation/graphics/figures/path.js","../../src/implementation/graphics/figures/rectangle-area.js","../../src/implementation/graphics/figures/ellipse-part.js","../../src/implementation/graphics/figures/arc.js","../../src/implementation/graphics/fonts/pdf-true-type-font.js","../../src/implementation/pages/pdf-page-template-element.js"],"sourcesContent":["/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n /**\n * Specifies the value of viewer preferences.\n * @private\n */\n this.viewerPreferences = 'ViewerPreferences';\n /**\n * Specifies the value of center window.\n * @private\n */\n this.centerWindow = 'CenterWindow';\n /**\n * Specifies the value of display title.\n * @private\n */\n this.displayTitle = 'DisplayTitle';\n /**\n * Specifies the value of fit window.\n * @private\n */\n this.fitWindow = 'FitWindow';\n /**\n * Specifies the value of hide menu bar.\n * @private\n */\n this.hideMenuBar = 'HideMenubar';\n /**\n * Specifies the value of hide tool bar.\n * @private\n */\n this.hideToolBar = 'HideToolbar';\n /**\n * Specifies the value of hide window UI.\n * @private\n */\n this.hideWindowUI = 'HideWindowUI';\n /**\n * Specifies the value of page mode.\n * @private\n */\n this.pageMode = 'PageMode';\n /**\n * Specifies the value of page layout.\n * @private\n */\n this.pageLayout = 'PageLayout';\n /**\n * Specifies the value of duplex.\n * @private\n */\n this.duplex = 'Duplex';\n /**\n * Specifies the value of print scaling.\n * @private\n */\n this.printScaling = 'PrintScaling';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isResource = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isResource) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","import { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"viewerPreferences\", {\n /**\n * Gets viewer preferences for presenting the PDF document in a viewer.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfCatalog.viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfBoolean } from './../primitives/pdf-boolean';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Defines the way the document is to be presented on the screen or in print.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfViewerPreferences = /** @class */ (function () {\n /**\n * Initialize a new instance of `PdfViewerPreferences` class.\n *\n * @private\n * ```\n */\n function PdfViewerPreferences(catalog) {\n this._dictionaryProperties = new DictionaryProperties();\n this._centerWindow = false;\n this._fitWindow = false;\n this._displayTitle = false;\n this._splitWindow = false;\n this._hideMenuBar = false;\n this._hideToolBar = false;\n this._hideWindowUI = false;\n this._pageMode = PdfPageMode.UseNone;\n this._pageLayout = PdfPageLayout.SinglePage;\n this._dictionary = new PdfDictionary();\n this._duplex = DuplexMode.None;\n this._catalog = catalog;\n }\n Object.defineProperty(PdfViewerPreferences.prototype, \"centerWindow\", {\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the center window\n * let centerWindow : boolean = viewerPreferences.centerWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._centerWindow;\n },\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the center window\n * viewerPreferences.centerWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._centerWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.centerWindow, new PdfBoolean(this._centerWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"displayTitle\", {\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the display title\n * let displayTitle : boolean = viewerPreferences.displayTitle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._displayTitle;\n },\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the display title\n * viewerPreferences.displayTitle = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._displayTitle = value;\n this._dictionary.items.setValue(this._dictionaryProperties.displayTitle, new PdfBoolean(this._displayTitle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"fitWindow\", {\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the fit window\n * let fitWindow : boolean = viewerPreferences.fitWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fitWindow;\n },\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the fit window\n * viewerPreferences.fitWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._fitWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.fitWindow, new PdfBoolean(this._fitWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideMenuBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide menu bar\n * let hideMenuBar: boolean = viewerPreferences.hideMenuBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideMenuBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide menu bar\n * viewerPreferences.hideMenuBar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideMenuBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideMenuBar, new PdfBoolean(this._hideMenuBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideToolBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide tool bar\n * let hideToolBar: boolean = viewerPreferences.hideToolBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideToolBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide tool bar\n * viewerPreferences.hideToolbar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideToolBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideToolBar, new PdfBoolean(this._hideToolBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideWindowUI\", {\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide window UI\n * let hideWindowUI: boolean = viewerPreferences.hideWindowUI;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideWindowUI;\n },\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide window UI\n * viewerPreferences.hideWindowUI = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideWindowUI = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideWindowUI, new PdfBoolean(this._hideWindowUI));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageMode\", {\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page mode\n * let pageMode: PdfPageMode = viewerPreferences.pageMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageMode;\n },\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageMode = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageMode, new PdfName(this._mapPageMode(this._pageMode)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"duplex\", {\n /**\n * Gets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the duplex\n * let duplex : DuplexMode = viewerPreferences.duplex;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._duplex;\n },\n /**\n * Sets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._duplex = value;\n this._catalog.items.setValue(this._dictionaryProperties.duplex, new PdfName(this._mapDuplexMode(this._duplex)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageLayout\", {\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page layout\n * let pageLayout : PdfPageLayout = viewerPreferences.pageLayout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageLayout;\n },\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageLayout = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageLayout, new PdfName(this._mapPageLayout(this._pageLayout)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageScaling\", {\n /**\n * Gets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page scaling\n * let pageScaling : PageScalingMode = viewerPreferences.pageScaling;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageScaling;\n },\n /**\n * Sets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageScaling = value;\n if (this._pageScaling === PageScalingMode.AppDefault && this._dictionary.items.containsKey(this._dictionaryProperties.printScaling)) {\n this._dictionary.items.remove(this._dictionaryProperties.printScaling);\n }\n else if (this._pageScaling === PageScalingMode.None) {\n this._dictionary.items.setValue(this._dictionaryProperties.printScaling, new PdfName('None'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"element\", {\n /**\n * Primivie element\n *\n * @private\n */\n get: function () {\n return this._dictionary;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewerPreferences.prototype._mapDuplexMode = function (mode) {\n switch (mode) {\n case DuplexMode.Simplex:\n return 'Simplex';\n case DuplexMode.DuplexFlipShortEdge:\n return 'DuplexFlipShortEdge';\n case DuplexMode.DuplexFlipLongEdge:\n return 'DuplexFlipLongEdge';\n case DuplexMode.None:\n return 'None';\n }\n };\n PdfViewerPreferences.prototype._mapPageMode = function (mode) {\n switch (mode) {\n case PdfPageMode.UseNone:\n return 'UseNone';\n case PdfPageMode.UseOutlines:\n return 'UseOutlines';\n case PdfPageMode.UseThumbs:\n return 'UseThumbs';\n case PdfPageMode.FullScreen:\n return 'FullScreen';\n case PdfPageMode.UseOC:\n return 'UseOC';\n case PdfPageMode.UseAttachments:\n return 'UseAttachments';\n }\n };\n PdfViewerPreferences.prototype._mapPageLayout = function (layout) {\n switch (layout) {\n case PdfPageLayout.SinglePage:\n return 'SinglePage';\n case PdfPageLayout.OneColumn:\n return 'OneColumn';\n case PdfPageLayout.TwoColumnLeft:\n return 'TwoColumnLeft';\n case PdfPageLayout.TwoColumnRight:\n return 'TwoColumnRight';\n case PdfPageLayout.TwoPageLeft:\n return 'TwoPageLeft';\n case PdfPageLayout.TwoPageRight:\n return 'TwoPageRight';\n }\n };\n return PdfViewerPreferences;\n}());\nexport { PdfViewerPreferences };\n/**\n * Represents mode of document displaying.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageMode;\n(function (PdfPageMode) {\n /**\n * Default value. Neither document outline nor thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseNone\"] = 0] = \"UseNone\";\n /**\n * Document outline visible.\n */\n PdfPageMode[PdfPageMode[\"UseOutlines\"] = 1] = \"UseOutlines\";\n /**\n * Thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseThumbs\"] = 2] = \"UseThumbs\";\n /**\n * Full-screen mode, with no menu bar, window controls, or any other window visible.\n */\n PdfPageMode[PdfPageMode[\"FullScreen\"] = 3] = \"FullScreen\";\n /**\n * Optional content group panel visible.\n */\n PdfPageMode[PdfPageMode[\"UseOC\"] = 4] = \"UseOC\";\n /**\n * Attachments are visible.\n */\n PdfPageMode[PdfPageMode[\"UseAttachments\"] = 5] = \"UseAttachments\";\n})(PdfPageMode || (PdfPageMode = {}));\n/**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageLayout;\n(function (PdfPageLayout) {\n /**\n * Default Value. Display one page at a time.\n */\n PdfPageLayout[PdfPageLayout[\"SinglePage\"] = 0] = \"SinglePage\";\n /**\n * Display the pages in one column.\n */\n PdfPageLayout[PdfPageLayout[\"OneColumn\"] = 1] = \"OneColumn\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnLeft\"] = 2] = \"TwoColumnLeft\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnRight\"] = 3] = \"TwoColumnRight\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageLeft\"] = 4] = \"TwoPageLeft\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageRight\"] = 5] = \"TwoPageRight\";\n})(PdfPageLayout || (PdfPageLayout = {}));\n/**\n * The paper handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var DuplexMode;\n(function (DuplexMode) {\n /**\n * Print single-sided.\n */\n DuplexMode[DuplexMode[\"Simplex\"] = 0] = \"Simplex\";\n /**\n * Duplex and flip on the short edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipShortEdge\"] = 1] = \"DuplexFlipShortEdge\";\n /**\n * Duplex and flip on the long edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipLongEdge\"] = 2] = \"DuplexFlipLongEdge\";\n /**\n * Default value.\n */\n DuplexMode[DuplexMode[\"None\"] = 3] = \"None\";\n})(DuplexMode || (DuplexMode = {}));\n/**\n * Specifies the different page scaling option that shall be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PageScalingMode;\n(function (PageScalingMode) {\n /**\n * Indicates the conforming reader’s default print scaling.\n */\n PageScalingMode[PageScalingMode[\"AppDefault\"] = 0] = \"AppDefault\";\n /**\n * Indicates no page scaling.\n */\n PageScalingMode[PageScalingMode[\"None\"] = 1] = \"None\";\n})(PageScalingMode || (PageScalingMode = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfViewerPreferences } from './pdf-viewer-preferences';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCatalog.prototype, \"viewerPreferences\", {\n /**\n * Gets the viewer preferences of the PDF document.\n * @private\n */\n get: function () {\n if (this._viewerPreferences === null || typeof this._viewerPreferences === 'undefined') {\n this._viewerPreferences = new PdfViewerPreferences(this);\n this.items.setValue(this.tempDictionaryProperties.viewerPreferences, new PdfReferenceHolder(this._viewerPreferences.element));\n }\n return this._viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isResource = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isResource = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isResource = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isResource = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isResource = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isResource = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix, Matrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n };\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n /**\n * Draw rounded rectangle specified by a brush, pen, coordinate pair, a width, a height and a radius.\n * ```typescript\n * // Create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // Create a new page\n * let page : PdfPage = document.pages.add();\n * // Create brush for draw rectangle\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(238, 130, 238));\n * // Create a new PDF pen\n * let pen: PdfPen = new PdfPen(new PdfColor(255, 0, 0), 1);\n * // Draw rounded rectangle\n * page.graphics.drawRoundedRectangle(pen, brush, 20, 20, 100, 50, 5);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Stoke color of the rectangle.\n * @param brush Fill color of the rectangle.\n * @param x The x-coordinate of the upper-left corner of the rectangle to draw.\n * @param y The y-coordinate of the upper-left corner of the rectangle to draw.\n * @param width Width of the rectangle to draw.\n * @param height Height of the rectangle to draw.\n * @param radius Radius of the arcs to draw.\n */\n PdfGraphics.prototype.drawRoundedRectangle = function (pen, brush, x, y, width, height, radius) {\n if (pen === null) {\n throw new Error('pen');\n }\n if (brush === null) {\n throw new Error('brush');\n }\n if (radius === 0) {\n this.drawRectangle(pen, brush, x, y, width, height);\n }\n else {\n var bounds = [x, y, width, height];\n var diameter = radius * 2;\n var size = [diameter, diameter];\n var arc = [bounds[0], bounds[1], size[0], size[1]];\n this._pathPoints = [];\n this._pathTypes = [];\n var startFigure = true;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 180, 90, startFigure);\n arc[0] = (bounds[0] + bounds[2]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 270, 90, startFigure);\n arc[1] = (bounds[1] + bounds[3]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 0, 90, startFigure);\n arc[0] = bounds[0];\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 90, 90, startFigure);\n var index = this._pathPoints.length - 1;\n var type = ((this._pathTypes[index]));\n type = (type | PathPointType.CloseSubpath);\n this._pathTypes[index] = (type);\n this._drawPath(pen, brush, this._pathPoints, this._pathTypes, PdfFillMode.Alternate);\n this._pathPoints = [];\n this._pathTypes = [];\n }\n };\n PdfGraphics.prototype._addArc = function (x, y, width, height, startAngle, sweepAngle, startFigure) {\n var points = this._getBezierArcPoints(x, y, (x + width), (y + height), startAngle, sweepAngle);\n for (var i = 0; i < points.length; i = i + 8) {\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n startFigure = this._addArcPoints(point, PathPointType.Bezier3, startFigure);\n }\n return startFigure;\n };\n PdfGraphics.prototype._addArcPoints = function (points, pointType, startFigure) {\n for (var i = 0; i < points.length; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if (i === 0) {\n if (this._pathPoints.length === 0 || startFigure) {\n this._addPoint(point, PathPointType.Start);\n startFigure = false;\n }\n else if (point.x !== this._getLastPoint().x || point.y !== this._getLastPoint().y) {\n this._addPoint(point, PathPointType.Line);\n }\n }\n else {\n this._addPoint(point, pointType);\n }\n i++;\n }\n return startFigure;\n };\n PdfGraphics.prototype._getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this._pathPoints.length;\n if (count > 0) {\n lastPoint.x = this._pathPoints[(count - 1)].x;\n lastPoint.y = this._pathPoints[(count - 1)].y;\n }\n return lastPoint;\n };\n PdfGraphics.prototype._addPoint = function (point, type) {\n this._pathPoints.push(point);\n this._pathTypes.push(type);\n };\n PdfGraphics.prototype._getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent;\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify));\n return shouldJustify;\n };\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None;\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n this._drawPath(pen, brush, path.pathPoints, path.pathTypes, path.fillMode);\n };\n PdfGraphics.prototype._drawPath = function (pen, brush, pathPoints, pathTypes, fillMode) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(pathPoints, pathTypes);\n this.drawPathHelper(pen, brush, fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n /* tslint:disable */\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n var elements_1 = [];\n graphics.matrix.matrix.elements.forEach(function (element) {\n elements_1.push(element);\n });\n this.transformationMatrix = new PdfTransformationMatrix();\n this.transformationMatrix.matrix = new Matrix(elements_1);\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n/* tslint:enable */\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLinkAnnotation } from './link-annotation';\n/**\n * `PdfDocumentLinkAnnotation` class represents an annotation object with holds link on another location within a document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocumentLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfDocumentLinkAnnotation, _super);\n function PdfDocumentLinkAnnotation(rectangle, destination) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * `Destination` of the annotation.\n * @default null\n * @private\n */\n _this.pdfDestination = null;\n if (typeof destination !== 'undefined') {\n _this.destination = destination;\n }\n return _this;\n }\n Object.defineProperty(PdfDocumentLinkAnnotation.prototype, \"destination\", {\n // Properties\n /**\n * Gets or sets the `destination` of the annotation.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default null\n */\n get: function () {\n return this.pdfDestination;\n },\n set: function (value) {\n // if (this.pdfDestination !== value) {\n this.pdfDestination = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Saves` annotation object.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.save = function () {\n _super.prototype.save.call(this);\n if (this.pdfDestination != null) {\n this.dictionary.items.setValue(this.dictionaryProperties.dest, this.pdfDestination.element);\n }\n };\n /**\n * `Clone` the document link annotation.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.clone = function () {\n var annot = new PdfDocumentLinkAnnotation(this.bounds, this.destination);\n annot.color = this.color;\n annot.brush = this.brush;\n annot.destination = this.destination;\n annot.font = this.font;\n return annot;\n };\n return PdfDocumentLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfDocumentLinkAnnotation };\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","/**\n * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","/**\n * public Enum for `PdfDestinationMode`.\n * @private\n */\nexport var PdfDestinationMode;\n(function (PdfDestinationMode) {\n /**\n * Specifies the type of `Location`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"Location\"] = 0] = \"Location\";\n /**\n * Specifies the type of `FitToPage`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitToPage\"] = 1] = \"FitToPage\";\n /**\n * Specifies the type of `FitR`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitR\"] = 2] = \"FitR\";\n})(PdfDestinationMode || (PdfDestinationMode = {}));\n","/**\n * Specifies the constant values specifying whether to extend the shading\n * beyond the starting and ending points of the axis.\n */\nexport var PdfExtend;\n(function (PdfExtend) {\n /**\n * Do not extend any point.\n */\n PdfExtend[PdfExtend[\"None\"] = 0] = \"None\";\n /**\n * Extend start point.\n */\n PdfExtend[PdfExtend[\"Start\"] = 1] = \"Start\";\n /**\n * Extend end point.\n */\n PdfExtend[PdfExtend[\"End\"] = 2] = \"End\";\n /**\n * Extend both start and end points.\n */\n PdfExtend[PdfExtend[\"Both\"] = 3] = \"Both\";\n})(PdfExtend || (PdfExtend = {}));\n/**\n * Specifies the gradient direction of the linear gradient brush.\n */\nexport var PdfLinearGradientMode;\n(function (PdfLinearGradientMode) {\n /**\n * Specifies a gradient from upper right to lower left.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"BackwardDiagonal\"] = 0] = \"BackwardDiagonal\";\n /**\n * Specifies a gradient from upper left to lower right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"ForwardDiagonal\"] = 1] = \"ForwardDiagonal\";\n /**\n * Specifies a gradient from left to right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Horizontal\"] = 2] = \"Horizontal\";\n /**\n * Specifies a gradient from top to bottom.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Vertical\"] = 3] = \"Vertical\";\n})(PdfLinearGradientMode || (PdfLinearGradientMode = {}));\n/**\n * Shading type constants.\n */\nexport var ShadingType;\n(function (ShadingType) {\n /**\n * Function-based shading.\n */\n ShadingType[ShadingType[\"Function\"] = 1] = \"Function\";\n /**\n * Axial shading.\n */\n ShadingType[ShadingType[\"Axial\"] = 2] = \"Axial\";\n /**\n * Radial shading.\n */\n ShadingType[ShadingType[\"Radial\"] = 3] = \"Radial\";\n})(ShadingType || (ShadingType = {}));\nexport var KnownColor;\n(function (KnownColor) {\n KnownColor[KnownColor[\"ActiveBorder\"] = 1] = \"ActiveBorder\";\n KnownColor[KnownColor[\"ActiveCaption\"] = 2] = \"ActiveCaption\";\n KnownColor[KnownColor[\"ActiveCaptionText\"] = 3] = \"ActiveCaptionText\";\n KnownColor[KnownColor[\"AppWorkspace\"] = 4] = \"AppWorkspace\";\n KnownColor[KnownColor[\"Control\"] = 5] = \"Control\";\n KnownColor[KnownColor[\"ControlDark\"] = 6] = \"ControlDark\";\n KnownColor[KnownColor[\"ControlDarkDark\"] = 7] = \"ControlDarkDark\";\n KnownColor[KnownColor[\"ControlLight\"] = 8] = \"ControlLight\";\n KnownColor[KnownColor[\"ControlLightLight\"] = 9] = \"ControlLightLight\";\n KnownColor[KnownColor[\"ControlText\"] = 10] = \"ControlText\";\n KnownColor[KnownColor[\"Desktop\"] = 11] = \"Desktop\";\n KnownColor[KnownColor[\"GrayText\"] = 12] = \"GrayText\";\n KnownColor[KnownColor[\"Highlight\"] = 13] = \"Highlight\";\n KnownColor[KnownColor[\"HighlightText\"] = 14] = \"HighlightText\";\n KnownColor[KnownColor[\"HotTrack\"] = 15] = \"HotTrack\";\n KnownColor[KnownColor[\"InactiveBorder\"] = 16] = \"InactiveBorder\";\n KnownColor[KnownColor[\"InactiveCaption\"] = 17] = \"InactiveCaption\";\n KnownColor[KnownColor[\"InactiveCaptionText\"] = 18] = \"InactiveCaptionText\";\n KnownColor[KnownColor[\"Info\"] = 19] = \"Info\";\n KnownColor[KnownColor[\"InfoText\"] = 20] = \"InfoText\";\n KnownColor[KnownColor[\"Menu\"] = 21] = \"Menu\";\n KnownColor[KnownColor[\"MenuText\"] = 22] = \"MenuText\";\n KnownColor[KnownColor[\"ScrollBar\"] = 23] = \"ScrollBar\";\n KnownColor[KnownColor[\"Window\"] = 24] = \"Window\";\n KnownColor[KnownColor[\"WindowFrame\"] = 25] = \"WindowFrame\";\n KnownColor[KnownColor[\"WindowText\"] = 26] = \"WindowText\";\n KnownColor[KnownColor[\"Transparent\"] = 27] = \"Transparent\";\n KnownColor[KnownColor[\"AliceBlue\"] = 28] = \"AliceBlue\";\n KnownColor[KnownColor[\"AntiqueWhite\"] = 29] = \"AntiqueWhite\";\n KnownColor[KnownColor[\"Aqua\"] = 30] = \"Aqua\";\n KnownColor[KnownColor[\"Aquamarine\"] = 31] = \"Aquamarine\";\n KnownColor[KnownColor[\"Azure\"] = 32] = \"Azure\";\n KnownColor[KnownColor[\"Beige\"] = 33] = \"Beige\";\n KnownColor[KnownColor[\"Bisque\"] = 34] = \"Bisque\";\n KnownColor[KnownColor[\"Black\"] = 35] = \"Black\";\n KnownColor[KnownColor[\"BlanchedAlmond\"] = 36] = \"BlanchedAlmond\";\n KnownColor[KnownColor[\"Blue\"] = 37] = \"Blue\";\n KnownColor[KnownColor[\"BlueViolet\"] = 38] = \"BlueViolet\";\n KnownColor[KnownColor[\"Brown\"] = 39] = \"Brown\";\n KnownColor[KnownColor[\"BurlyWood\"] = 40] = \"BurlyWood\";\n KnownColor[KnownColor[\"CadetBlue\"] = 41] = \"CadetBlue\";\n KnownColor[KnownColor[\"Chartreuse\"] = 42] = \"Chartreuse\";\n KnownColor[KnownColor[\"Chocolate\"] = 43] = \"Chocolate\";\n KnownColor[KnownColor[\"Coral\"] = 44] = \"Coral\";\n KnownColor[KnownColor[\"CornflowerBlue\"] = 45] = \"CornflowerBlue\";\n KnownColor[KnownColor[\"Cornsilk\"] = 46] = \"Cornsilk\";\n KnownColor[KnownColor[\"Crimson\"] = 47] = \"Crimson\";\n KnownColor[KnownColor[\"Cyan\"] = 48] = \"Cyan\";\n KnownColor[KnownColor[\"DarkBlue\"] = 49] = \"DarkBlue\";\n KnownColor[KnownColor[\"DarkCyan\"] = 50] = \"DarkCyan\";\n KnownColor[KnownColor[\"DarkGoldenrod\"] = 51] = \"DarkGoldenrod\";\n KnownColor[KnownColor[\"DarkGray\"] = 52] = \"DarkGray\";\n KnownColor[KnownColor[\"DarkGreen\"] = 53] = \"DarkGreen\";\n KnownColor[KnownColor[\"DarkKhaki\"] = 54] = \"DarkKhaki\";\n KnownColor[KnownColor[\"DarkMagenta\"] = 55] = \"DarkMagenta\";\n KnownColor[KnownColor[\"DarkOliveGreen\"] = 56] = \"DarkOliveGreen\";\n KnownColor[KnownColor[\"DarkOrange\"] = 57] = \"DarkOrange\";\n KnownColor[KnownColor[\"DarkOrchid\"] = 58] = \"DarkOrchid\";\n KnownColor[KnownColor[\"DarkRed\"] = 59] = \"DarkRed\";\n KnownColor[KnownColor[\"DarkSalmon\"] = 60] = \"DarkSalmon\";\n KnownColor[KnownColor[\"DarkSeaGreen\"] = 61] = \"DarkSeaGreen\";\n KnownColor[KnownColor[\"DarkSlateBlue\"] = 62] = \"DarkSlateBlue\";\n KnownColor[KnownColor[\"DarkSlateGray\"] = 63] = \"DarkSlateGray\";\n KnownColor[KnownColor[\"DarkTurquoise\"] = 64] = \"DarkTurquoise\";\n KnownColor[KnownColor[\"DarkViolet\"] = 65] = \"DarkViolet\";\n KnownColor[KnownColor[\"DeepPink\"] = 66] = \"DeepPink\";\n KnownColor[KnownColor[\"DeepSkyBlue\"] = 67] = \"DeepSkyBlue\";\n KnownColor[KnownColor[\"DimGray\"] = 68] = \"DimGray\";\n KnownColor[KnownColor[\"DodgerBlue\"] = 69] = \"DodgerBlue\";\n KnownColor[KnownColor[\"Firebrick\"] = 70] = \"Firebrick\";\n KnownColor[KnownColor[\"FloralWhite\"] = 71] = \"FloralWhite\";\n KnownColor[KnownColor[\"ForestGreen\"] = 72] = \"ForestGreen\";\n KnownColor[KnownColor[\"Fuchsia\"] = 73] = \"Fuchsia\";\n KnownColor[KnownColor[\"Gainsboro\"] = 74] = \"Gainsboro\";\n KnownColor[KnownColor[\"GhostWhite\"] = 75] = \"GhostWhite\";\n KnownColor[KnownColor[\"Gold\"] = 76] = \"Gold\";\n KnownColor[KnownColor[\"Goldenrod\"] = 77] = \"Goldenrod\";\n KnownColor[KnownColor[\"Gray\"] = 78] = \"Gray\";\n KnownColor[KnownColor[\"Green\"] = 79] = \"Green\";\n KnownColor[KnownColor[\"GreenYellow\"] = 80] = \"GreenYellow\";\n KnownColor[KnownColor[\"Honeydew\"] = 81] = \"Honeydew\";\n KnownColor[KnownColor[\"HotPink\"] = 82] = \"HotPink\";\n KnownColor[KnownColor[\"IndianRed\"] = 83] = \"IndianRed\";\n KnownColor[KnownColor[\"Indigo\"] = 84] = \"Indigo\";\n KnownColor[KnownColor[\"Ivory\"] = 85] = \"Ivory\";\n KnownColor[KnownColor[\"Khaki\"] = 86] = \"Khaki\";\n KnownColor[KnownColor[\"Lavender\"] = 87] = \"Lavender\";\n KnownColor[KnownColor[\"LavenderBlush\"] = 88] = \"LavenderBlush\";\n KnownColor[KnownColor[\"LawnGreen\"] = 89] = \"LawnGreen\";\n KnownColor[KnownColor[\"LemonChiffon\"] = 90] = \"LemonChiffon\";\n KnownColor[KnownColor[\"LightBlue\"] = 91] = \"LightBlue\";\n KnownColor[KnownColor[\"LightCoral\"] = 92] = \"LightCoral\";\n KnownColor[KnownColor[\"LightCyan\"] = 93] = \"LightCyan\";\n KnownColor[KnownColor[\"LightGoldenrodYellow\"] = 94] = \"LightGoldenrodYellow\";\n KnownColor[KnownColor[\"LightGray\"] = 95] = \"LightGray\";\n KnownColor[KnownColor[\"LightGreen\"] = 96] = \"LightGreen\";\n KnownColor[KnownColor[\"LightPink\"] = 97] = \"LightPink\";\n KnownColor[KnownColor[\"LightSalmon\"] = 98] = \"LightSalmon\";\n KnownColor[KnownColor[\"LightSeaGreen\"] = 99] = \"LightSeaGreen\";\n KnownColor[KnownColor[\"LightSkyBlue\"] = 100] = \"LightSkyBlue\";\n KnownColor[KnownColor[\"LightSlateGray\"] = 101] = \"LightSlateGray\";\n KnownColor[KnownColor[\"LightSteelBlue\"] = 102] = \"LightSteelBlue\";\n KnownColor[KnownColor[\"LightYellow\"] = 103] = \"LightYellow\";\n KnownColor[KnownColor[\"Lime\"] = 104] = \"Lime\";\n KnownColor[KnownColor[\"LimeGreen\"] = 105] = \"LimeGreen\";\n KnownColor[KnownColor[\"Linen\"] = 106] = \"Linen\";\n KnownColor[KnownColor[\"Magenta\"] = 107] = \"Magenta\";\n KnownColor[KnownColor[\"Maroon\"] = 108] = \"Maroon\";\n KnownColor[KnownColor[\"MediumAquamarine\"] = 109] = \"MediumAquamarine\";\n KnownColor[KnownColor[\"MediumBlue\"] = 110] = \"MediumBlue\";\n KnownColor[KnownColor[\"MediumOrchid\"] = 111] = \"MediumOrchid\";\n KnownColor[KnownColor[\"MediumPurple\"] = 112] = \"MediumPurple\";\n KnownColor[KnownColor[\"MediumSeaGreen\"] = 113] = \"MediumSeaGreen\";\n KnownColor[KnownColor[\"MediumSlateBlue\"] = 114] = \"MediumSlateBlue\";\n KnownColor[KnownColor[\"MediumSpringGreen\"] = 115] = \"MediumSpringGreen\";\n KnownColor[KnownColor[\"MediumTurquoise\"] = 116] = \"MediumTurquoise\";\n KnownColor[KnownColor[\"MediumVioletRed\"] = 117] = \"MediumVioletRed\";\n KnownColor[KnownColor[\"MidnightBlue\"] = 118] = \"MidnightBlue\";\n KnownColor[KnownColor[\"MintCream\"] = 119] = \"MintCream\";\n KnownColor[KnownColor[\"MistyRose\"] = 120] = \"MistyRose\";\n KnownColor[KnownColor[\"Moccasin\"] = 121] = \"Moccasin\";\n KnownColor[KnownColor[\"NavajoWhite\"] = 122] = \"NavajoWhite\";\n KnownColor[KnownColor[\"Navy\"] = 123] = \"Navy\";\n KnownColor[KnownColor[\"OldLace\"] = 124] = \"OldLace\";\n KnownColor[KnownColor[\"Olive\"] = 125] = \"Olive\";\n KnownColor[KnownColor[\"OliveDrab\"] = 126] = \"OliveDrab\";\n KnownColor[KnownColor[\"Orange\"] = 127] = \"Orange\";\n KnownColor[KnownColor[\"OrangeRed\"] = 128] = \"OrangeRed\";\n KnownColor[KnownColor[\"Orchid\"] = 129] = \"Orchid\";\n KnownColor[KnownColor[\"PaleGoldenrod\"] = 130] = \"PaleGoldenrod\";\n KnownColor[KnownColor[\"PaleGreen\"] = 131] = \"PaleGreen\";\n KnownColor[KnownColor[\"PaleTurquoise\"] = 132] = \"PaleTurquoise\";\n KnownColor[KnownColor[\"PaleVioletRed\"] = 133] = \"PaleVioletRed\";\n KnownColor[KnownColor[\"PapayaWhip\"] = 134] = \"PapayaWhip\";\n KnownColor[KnownColor[\"PeachPuff\"] = 135] = \"PeachPuff\";\n KnownColor[KnownColor[\"Peru\"] = 136] = \"Peru\";\n KnownColor[KnownColor[\"Pink\"] = 137] = \"Pink\";\n KnownColor[KnownColor[\"Plum\"] = 138] = \"Plum\";\n KnownColor[KnownColor[\"PowderBlue\"] = 139] = \"PowderBlue\";\n KnownColor[KnownColor[\"Purple\"] = 140] = \"Purple\";\n KnownColor[KnownColor[\"Red\"] = 141] = \"Red\";\n KnownColor[KnownColor[\"RosyBrown\"] = 142] = \"RosyBrown\";\n KnownColor[KnownColor[\"RoyalBlue\"] = 143] = \"RoyalBlue\";\n KnownColor[KnownColor[\"SaddleBrown\"] = 144] = \"SaddleBrown\";\n KnownColor[KnownColor[\"Salmon\"] = 145] = \"Salmon\";\n KnownColor[KnownColor[\"SandyBrown\"] = 146] = \"SandyBrown\";\n KnownColor[KnownColor[\"SeaGreen\"] = 147] = \"SeaGreen\";\n KnownColor[KnownColor[\"SeaShell\"] = 148] = \"SeaShell\";\n KnownColor[KnownColor[\"Sienna\"] = 149] = \"Sienna\";\n KnownColor[KnownColor[\"Silver\"] = 150] = \"Silver\";\n KnownColor[KnownColor[\"SkyBlue\"] = 151] = \"SkyBlue\";\n KnownColor[KnownColor[\"SlateBlue\"] = 152] = \"SlateBlue\";\n KnownColor[KnownColor[\"SlateGray\"] = 153] = \"SlateGray\";\n KnownColor[KnownColor[\"Snow\"] = 154] = \"Snow\";\n KnownColor[KnownColor[\"SpringGreen\"] = 155] = \"SpringGreen\";\n KnownColor[KnownColor[\"SteelBlue\"] = 156] = \"SteelBlue\";\n KnownColor[KnownColor[\"Tan\"] = 157] = \"Tan\";\n KnownColor[KnownColor[\"Teal\"] = 158] = \"Teal\";\n KnownColor[KnownColor[\"Thistle\"] = 159] = \"Thistle\";\n KnownColor[KnownColor[\"Tomato\"] = 160] = \"Tomato\";\n KnownColor[KnownColor[\"Turquoise\"] = 161] = \"Turquoise\";\n KnownColor[KnownColor[\"Violet\"] = 162] = \"Violet\";\n KnownColor[KnownColor[\"Wheat\"] = 163] = \"Wheat\";\n KnownColor[KnownColor[\"White\"] = 164] = \"White\";\n KnownColor[KnownColor[\"WhiteSmoke\"] = 165] = \"WhiteSmoke\";\n KnownColor[KnownColor[\"Yellow\"] = 166] = \"Yellow\";\n KnownColor[KnownColor[\"YellowGreen\"] = 167] = \"YellowGreen\";\n KnownColor[KnownColor[\"ButtonFace\"] = 168] = \"ButtonFace\";\n KnownColor[KnownColor[\"ButtonHighlight\"] = 169] = \"ButtonHighlight\";\n KnownColor[KnownColor[\"ButtonShadow\"] = 170] = \"ButtonShadow\";\n KnownColor[KnownColor[\"GradientActiveCaption\"] = 171] = \"GradientActiveCaption\";\n KnownColor[KnownColor[\"GradientInactiveCaption\"] = 172] = \"GradientInactiveCaption\";\n KnownColor[KnownColor[\"MenuBar\"] = 173] = \"MenuBar\";\n KnownColor[KnownColor[\"MenuHighlight\"] = 174] = \"MenuHighlight\";\n})(KnownColor || (KnownColor = {}));\n","import { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageRotateAngle } from './../pages/enum';\nimport { PdfDestinationMode } from './../general/enum';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDestination` class represents an anchor in the document\n * where bookmarks or annotations can direct when clicked.\n */\nvar PdfDestination = /** @class */ (function () {\n function PdfDestination(arg1, arg2) {\n // Fields\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Type of the `destination`.\n * @private\n */\n this.destinationMode = PdfDestinationMode.Location;\n /**\n * `Zoom` factor.\n * @private\n * @default 0\n */\n this.zoomFactor = 0;\n /**\n * `Location` of the destination.\n * @default new PointF() with 0 ,0 as co-ordinates\n * @private\n */\n this.destinationLocation = new PointF(0, 0);\n /**\n * `Bounds` of the destination as RectangleF.\n * @default RectangleF.Empty\n * @private\n */\n this.bounds = new RectangleF();\n /**\n * Pdf primitive representing `this` object.\n * @private\n */\n this.array = new PdfArray();\n var angle = PdfPageRotateAngle.RotateAngle0;\n this.destinationLocation = new PointF(0, this.destinationLocation.y);\n this.pdfPage = arg1;\n if (arg2 instanceof PointF) {\n this.destinationLocation = arg2;\n }\n else {\n this.bounds = arg2;\n }\n }\n Object.defineProperty(PdfDestination.prototype, \"zoom\", {\n // Properties\n /**\n * Gets and Sets the `zoom` factor.\n * @private\n */\n get: function () {\n return this.zoomFactor;\n },\n set: function (value) {\n this.zoomFactor = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"page\", {\n /**\n * Gets and Sets the `page` object.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"mode\", {\n /**\n * Gets and Sets the destination `mode`.\n * @private\n */\n get: function () {\n return this.destinationMode;\n },\n set: function (value) {\n this.destinationMode = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"location\", {\n /**\n * Gets and Sets the `location`.\n * @private\n */\n get: function () {\n return this.destinationLocation;\n },\n set: function (value) {\n this.destinationLocation = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Translates` co-ordinates to PDF co-ordinate system (lower/left).\n * @private\n */\n PdfDestination.prototype.pointToNativePdf = function (page, point) {\n var section = page.section;\n return section.pointToNativePdf(page, point);\n };\n /**\n * `In fills` array by correct values.\n * @private\n */\n PdfDestination.prototype.initializePrimitive = function () {\n this.array.clear();\n this.array.add(new PdfReferenceHolder(this.pdfPage));\n switch (this.destinationMode) {\n case PdfDestinationMode.Location:\n var simplePage = this.pdfPage;\n var point = new PointF();\n point = this.pointToNativePdf(simplePage, this.destinationLocation);\n this.array.add(new PdfName(this.dictionaryProperties.xyz));\n this.array.add(new PdfNumber(point.x));\n this.array.add(new PdfNumber(point.y));\n this.array.add(new PdfNumber(this.zoomFactor));\n break;\n case PdfDestinationMode.FitToPage:\n this.array.add(new PdfName(this.dictionaryProperties.fit));\n break;\n }\n };\n Object.defineProperty(PdfDestination.prototype, \"element\", {\n /**\n * Gets the `element` representing this object.\n * @private\n */\n get: function () {\n this.initializePrimitive();\n return this.array;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDestination;\n}());\nexport { PdfDestination };\n","import { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nvar PdfFunction = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfFunction` class.\n * @public\n */\n function PdfFunction(dictionary) {\n //Field\n /**\n * Internal variable to store dictionary.\n * @private\n */\n this.mDictionary = null;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n this.mDictionary = dictionary;\n }\n Object.defineProperty(PdfFunction.prototype, \"domain\", {\n //Properties\n /**\n * Gets or sets the domain of the function.\n * @public\n */\n get: function () {\n var domain = this.mDictionary.items.getValue(this.mDictionaryProperties.domain);\n return domain;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.domain, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"range\", {\n /**\n * Gets or sets the range.\n * @public\n */\n get: function () {\n var range = (this.mDictionary.items.getValue(this.mDictionaryProperties.range));\n return range;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.range, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"dictionary\", {\n /**\n * Gets the dictionary.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"element\", {\n //IPdfWrapper Members\n /**\n * Gets the element.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFunction;\n}());\nexport { PdfFunction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSampledFunction.ts class for EJ2-PDF\n * Implements PDF Sampled Function.\n */\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfFunction } from './pdf-function';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfNumber } from './../../primitives/pdf-number';\nvar PdfSampledFunction = /** @class */ (function (_super) {\n __extends(PdfSampledFunction, _super);\n /**\n * Initializes a new instance of the `PdfSampledFunction` class.\n * @public\n */\n function PdfSampledFunction(domain, range, sizes, samples) {\n var _this = _super.call(this, new PdfStream()) || this;\n if (typeof domain === 'undefined') {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n }\n else {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n _this.checkParams(domain, range, sizes, samples);\n _this.setDomainAndRange(domain, range);\n _this.setSizeAndValues(sizes, samples);\n }\n return _this;\n }\n // Helper methods\n /**\n * Checks the input parameters.\n */\n PdfSampledFunction.prototype.checkParams = function (domain, range, sizes, samples) {\n var rLength = range.length;\n var dLength = domain.length;\n var sLength = samples.length;\n var frameLength = (rLength * (dLength / 4));\n };\n /**\n * Sets the domain and range.\n */\n PdfSampledFunction.prototype.setDomainAndRange = function (domain, range) {\n this.domain = new PdfArray(domain);\n this.range = new PdfArray(range);\n };\n /**\n * Sets the size and values.\n */\n PdfSampledFunction.prototype.setSizeAndValues = function (sizes, samples) {\n var s = (this.dictionary);\n s.isResource = true;\n this.dictionary.items.setValue(this.mDictionaryProperties.size, new PdfArray(sizes));\n this.dictionary.items.setValue(this.mDictionaryProperties.bitsPerSample, new PdfNumber(8));\n s.writeBytes(samples);\n };\n return PdfSampledFunction;\n}(PdfFunction));\nexport { PdfSampledFunction };\n","/**\n * PdfBrushes.ts class for EJ2-PDF\n */\nimport { PdfColor } from './../pdf-color';\nimport { Dictionary } from './../../collections/dictionary';\nimport { KnownColor } from './enum';\nimport { PdfSolidBrush } from './pdf-solid-brush';\n/**\n * `PdfBrushes` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrushes = /** @class */ (function () {\n function PdfBrushes() {\n }\n Object.defineProperty(PdfBrushes, \"AliceBlue\", {\n //Static Properties\n /**\n * Gets the AliceBlue brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AliceBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.AliceBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AliceBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"AntiqueWhite\", {\n /**\n * Gets the antique white brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AntiqueWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.AntiqueWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AntiqueWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aqua\", {\n /**\n * Gets the Aqua default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aqua)) {\n brush = (this.sBrushes.getValue(KnownColor.Aqua));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aqua);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aquamarine\", {\n /**\n * Gets the Aquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.Aquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Azure\", {\n /**\n * Gets the Azure default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Azure)) {\n brush = (this.sBrushes.getValue(KnownColor.Azure));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Azure);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Beige\", {\n /**\n * Gets the Beige default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Beige)) {\n brush = (this.sBrushes.getValue(KnownColor.Beige));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Beige);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Bisque\", {\n /**\n * Gets the Bisque default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Bisque)) {\n brush = (this.sBrushes.getValue(KnownColor.Bisque));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Bisque);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Black\", {\n /**\n * Gets the Black default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Black)) {\n brush = (this.sBrushes.getValue(KnownColor.Black));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Black);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlanchedAlmond\", {\n /**\n * Gets the BlanchedAlmond default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlanchedAlmond)) {\n brush = (this.sBrushes.getValue(KnownColor.BlanchedAlmond));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlanchedAlmond);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Blue\", {\n /**\n * Gets the Blue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Blue)) {\n brush = (this.sBrushes.getValue(KnownColor.Blue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Blue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlueViolet\", {\n /**\n * Gets the BlueViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlueViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.BlueViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlueViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Brown\", {\n /**\n * Gets the Brown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Brown)) {\n brush = (this.sBrushes.getValue(KnownColor.Brown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Brown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BurlyWood\", {\n /**\n * Gets the BurlyWood default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BurlyWood)) {\n brush = (this.sBrushes.getValue(KnownColor.BurlyWood));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BurlyWood);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CadetBlue\", {\n /**\n * Gets the CadetBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CadetBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CadetBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CadetBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chartreuse\", {\n /**\n * Gets the Chartreuse default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chartreuse)) {\n brush = (this.sBrushes.getValue(KnownColor.Chartreuse));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chartreuse);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chocolate\", {\n /**\n * Gets the Chocolate default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chocolate)) {\n brush = (this.sBrushes.getValue(KnownColor.Chocolate));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chocolate);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Coral\", {\n /**\n * Gets the Coral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Coral)) {\n brush = (this.sBrushes.getValue(KnownColor.Coral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Coral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CornflowerBlue\", {\n /**\n * Gets the CornflowerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CornflowerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CornflowerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CornflowerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cornsilk\", {\n /**\n * Gets the Corn silk default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cornsilk)) {\n brush = (this.sBrushes.getValue(KnownColor.Cornsilk));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cornsilk);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Crimson\", {\n /**\n * Gets the Crimson default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Crimson)) {\n brush = (this.sBrushes.getValue(KnownColor.Crimson));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Crimson);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cyan\", {\n /**\n * Gets the Cyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cyan)) {\n brush = (this.sBrushes.getValue(KnownColor.Cyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkBlue\", {\n /**\n * Gets the DarkBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkCyan\", {\n /**\n * Gets the DarkCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGoldenrod\", {\n /**\n * Gets the DarkGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGray\", {\n /**\n * Gets the DarkGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGreen\", {\n /**\n * Gets the DarkGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkKhaki\", {\n /**\n * Gets the DarkKhaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkKhaki)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkKhaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkKhaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkMagenta\", {\n /**\n * Gets the DarkMagenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkMagenta)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkMagenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkMagenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOliveGreen\", {\n /**\n * Gets the DarkOliveGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOliveGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOliveGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOliveGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrange\", {\n /**\n * Gets the DarkOrange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrange)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrchid\", {\n /**\n * Gets the DarkOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkRed\", {\n /**\n * Gets the DarkRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkRed)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSalmon\", {\n /**\n * Gets the DarkSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSeaGreen\", {\n /**\n * Gets the DarkSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateBlue\", {\n /**\n * Gets the DarkSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateGray\", {\n /**\n * Gets the DarkSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkTurquoise\", {\n /**\n * Gets the DarkTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkViolet\", {\n /**\n * Gets the DarkViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepPink\", {\n /**\n * Gets the DeepPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepPink)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepSkyBlue\", {\n /**\n * Gets the DeepSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DimGray\", {\n /**\n * Gets the DimGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DimGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DimGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DimGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DodgerBlue\", {\n /**\n * Gets the DodgerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DodgerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DodgerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DodgerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Firebrick\", {\n /**\n * Gets the Firebrick default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Firebrick)) {\n brush = (this.sBrushes.getValue(KnownColor.Firebrick));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Firebrick);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"FloralWhite\", {\n /**\n * Gets the FloralWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.FloralWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.FloralWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.FloralWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"ForestGreen\", {\n /**\n * Gets the ForestGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.ForestGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.ForestGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.ForestGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Fuchsia\", {\n /**\n * Gets the Fuchsia default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Fuchsia)) {\n brush = (this.sBrushes.getValue(KnownColor.Fuchsia));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Fuchsia);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gainsboro\", {\n /**\n * Gets the Gainsborough default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gainsboro)) {\n brush = (this.sBrushes.getValue(KnownColor.Gainsboro));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gainsboro);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GhostWhite\", {\n /**\n * Gets the GhostWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GhostWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.GhostWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GhostWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gold\", {\n /**\n * Gets the Gold default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gold)) {\n brush = (this.sBrushes.getValue(KnownColor.Gold));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gold);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Goldenrod\", {\n /**\n * Gets the Goldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Goldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.Goldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Goldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gray\", {\n /**\n * Gets the Gray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gray)) {\n brush = (this.sBrushes.getValue(KnownColor.Gray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Green\", {\n /**\n * Gets the Green default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Green)) {\n brush = (this.sBrushes.getValue(KnownColor.Green));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Green);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GreenYellow\", {\n /**\n * Gets the GreenYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GreenYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.GreenYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GreenYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Honeydew\", {\n /**\n * Gets the Honeydew default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Honeydew)) {\n brush = (this.sBrushes.getValue(KnownColor.Honeydew));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Honeydew);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"HotPink\", {\n /**\n * Gets the HotPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.HotPink)) {\n brush = (this.sBrushes.getValue(KnownColor.HotPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.HotPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"IndianRed\", {\n /**\n * Gets the IndianRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.IndianRed)) {\n brush = (this.sBrushes.getValue(KnownColor.IndianRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.IndianRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Indigo\", {\n /**\n * Gets the Indigo default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Indigo)) {\n brush = (this.sBrushes.getValue(KnownColor.Indigo));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Indigo);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Ivory\", {\n /**\n * Gets the Ivory default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Ivory)) {\n brush = (this.sBrushes.getValue(KnownColor.Ivory));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Ivory);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Khaki\", {\n /**\n * Gets the Khaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Khaki)) {\n brush = (this.sBrushes.getValue(KnownColor.Khaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Khaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lavender\", {\n /**\n * Gets the Lavender default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lavender)) {\n brush = (this.sBrushes.getValue(KnownColor.Lavender));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lavender);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LavenderBlush\", {\n /**\n * Gets the LavenderBlush default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LavenderBlush)) {\n brush = (this.sBrushes.getValue(KnownColor.LavenderBlush));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LavenderBlush);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LawnGreen\", {\n /**\n * Gets the LawnGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LawnGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LawnGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LawnGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LemonChiffon\", {\n /**\n * Gets the LemonChiffon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LemonChiffon)) {\n brush = (this.sBrushes.getValue(KnownColor.LemonChiffon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LemonChiffon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightBlue\", {\n /**\n * Gets the LightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCoral\", {\n /**\n * Gets the LightCoral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCoral)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCoral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCoral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCyan\", {\n /**\n * Gets the LightCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGoldenrodYellow\", {\n /**\n * Gets the LightGoldenrodYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGoldenrodYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGoldenrodYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGoldenrodYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGray\", {\n /**\n * Gets the LightGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGreen\", {\n /**\n * Gets the LightGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightPink\", {\n /**\n * Gets the LightPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightPink)) {\n brush = (this.sBrushes.getValue(KnownColor.LightPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSalmon\", {\n /**\n * Gets the LightSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSeaGreen\", {\n /**\n * Gets the LightSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSkyBlue\", {\n /**\n * Gets the LightSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSlateGray\", {\n /**\n * Gets the LightSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSteelBlue\", {\n /**\n * Gets the LightSteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightYellow\", {\n /**\n * Gets the LightYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lime\", {\n /**\n * Gets the Lime default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lime)) {\n brush = (this.sBrushes.getValue(KnownColor.Lime));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lime);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LimeGreen\", {\n /**\n * Gets the LimeGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LimeGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LimeGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LimeGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Linen\", {\n /**\n * Gets the Linen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Linen)) {\n brush = (this.sBrushes.getValue(KnownColor.Linen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Linen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Magenta\", {\n /**\n * Gets the Magenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Magenta)) {\n brush = (this.sBrushes.getValue(KnownColor.Magenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Magenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Maroon\", {\n /**\n * Gets the Maroon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Maroon)) {\n brush = (this.sBrushes.getValue(KnownColor.Maroon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Maroon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumAquamarine\", {\n /**\n * Gets the MediumAquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumAquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumAquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumAquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumBlue\", {\n /**\n * Gets the MediumBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumOrchid\", {\n /**\n * Gets the MediumOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumPurple\", {\n /**\n * Gets the MediumPurple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumPurple)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumPurple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumPurple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSeaGreen\", {\n /**\n * Gets the MediumSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSlateBlue\", {\n /**\n * Gets the MediumSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSpringGreen\", {\n /**\n * Gets the MediumSpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumTurquoise\", {\n /**\n * Gets the MediumTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumVioletRed\", {\n /**\n * Gets the MediumVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MidnightBlue\", {\n /**\n * Gets the MidnightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MidnightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MidnightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MidnightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MintCream\", {\n /**\n * Gets the MintCream default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MintCream)) {\n brush = (this.sBrushes.getValue(KnownColor.MintCream));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MintCream);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MistyRose\", {\n /**\n * Gets the MistyRose default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MistyRose)) {\n brush = (this.sBrushes.getValue(KnownColor.MistyRose));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MistyRose);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Moccasin\", {\n /**\n * Gets the Moccasin default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Moccasin)) {\n brush = (this.sBrushes.getValue(KnownColor.Moccasin));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Moccasin);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"NavajoWhite\", {\n /**\n * Gets the NavajoWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.NavajoWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.NavajoWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.NavajoWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Navy\", {\n /**\n * Gets the Navy default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Navy)) {\n brush = (this.sBrushes.getValue(KnownColor.Navy));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Navy);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OldLace\", {\n /**\n * Gets the OldLace default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OldLace)) {\n brush = (this.sBrushes.getValue(KnownColor.OldLace));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OldLace);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Olive\", {\n /**\n * Gets the Olive default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Olive)) {\n brush = (this.sBrushes.getValue(KnownColor.Olive));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Olive);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OliveDrab\", {\n /**\n * Gets the OliveDrab default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OliveDrab)) {\n brush = (this.sBrushes.getValue(KnownColor.OliveDrab));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OliveDrab);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orange\", {\n /**\n * Gets the Orange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orange)) {\n brush = (this.sBrushes.getValue(KnownColor.Orange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OrangeRed\", {\n /**\n * Gets the OrangeRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OrangeRed)) {\n brush = (this.sBrushes.getValue(KnownColor.OrangeRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OrangeRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orchid\", {\n /**\n * Gets the Orchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orchid)) {\n brush = (this.sBrushes.getValue(KnownColor.Orchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGoldenrod\", {\n /**\n * Gets the PaleGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGreen\", {\n /**\n * Gets the PaleGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleTurquoise\", {\n /**\n * Gets the PaleTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleVioletRed\", {\n /**\n * Gets the PaleVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PapayaWhip\", {\n /**\n * Gets the PapayaWhip default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PapayaWhip)) {\n brush = (this.sBrushes.getValue(KnownColor.PapayaWhip));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PapayaWhip);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PeachPuff\", {\n /**\n * Gets the PeachPuff default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PeachPuff)) {\n brush = (this.sBrushes.getValue(KnownColor.PeachPuff));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PeachPuff);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Peru\", {\n /**\n * Gets the Peru default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Peru)) {\n brush = (this.sBrushes.getValue(KnownColor.Peru));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Peru);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Pink\", {\n /**\n * Gets the Pink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Pink)) {\n brush = (this.sBrushes.getValue(KnownColor.Pink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Pink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Plum\", {\n /**\n * Gets the Plum default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Plum)) {\n brush = (this.sBrushes.getValue(KnownColor.Plum));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Plum);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PowderBlue\", {\n /**\n * Gets the PowderBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PowderBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.PowderBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PowderBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Purple\", {\n /**\n * Gets the Purple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Purple)) {\n brush = (this.sBrushes.getValue(KnownColor.Purple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Purple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Red\", {\n /**\n * Gets the Red default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Red)) {\n brush = (this.sBrushes.getValue(KnownColor.Red));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Red);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RosyBrown\", {\n /**\n * Gets the RosyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RosyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.RosyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RosyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RoyalBlue\", {\n /**\n * Gets the RoyalBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RoyalBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.RoyalBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RoyalBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SaddleBrown\", {\n /**\n * Gets the SaddleBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SaddleBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SaddleBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SaddleBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Salmon\", {\n /**\n * Gets the Salmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Salmon)) {\n brush = (this.sBrushes.getValue(KnownColor.Salmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Salmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SandyBrown\", {\n /**\n * Gets the SandyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SandyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SandyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SandyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaGreen\", {\n /**\n * Gets the SeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaShell\", {\n /**\n * Gets the SeaShell default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaShell)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaShell));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaShell);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Sienna\", {\n /**\n * Gets the Sienna default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Sienna)) {\n brush = (this.sBrushes.getValue(KnownColor.Sienna));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Sienna);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Silver\", {\n /**\n * Gets the Silver default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Silver)) {\n brush = (this.sBrushes.getValue(KnownColor.Silver));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Silver);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SkyBlue\", {\n /**\n * Gets the SkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateBlue\", {\n /**\n * Gets the SlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateGray\", {\n /**\n * Gets the SlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Snow\", {\n /**\n * Gets the Snow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Snow)) {\n brush = (this.sBrushes.getValue(KnownColor.Snow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Snow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SpringGreen\", {\n /**\n * Gets the SpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SteelBlue\", {\n /**\n * Gets the SteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tan\", {\n /**\n * Gets the Tan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tan)) {\n brush = (this.sBrushes.getValue(KnownColor.Tan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Teal\", {\n /**\n * Gets the Teal default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Teal)) {\n brush = (this.sBrushes.getValue(KnownColor.Teal));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Teal);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Thistle\", {\n /**\n * Gets the Thistle default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Thistle)) {\n brush = (this.sBrushes.getValue(KnownColor.Thistle));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Thistle);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tomato\", {\n /**\n * Gets the Tomato default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tomato)) {\n brush = (this.sBrushes.getValue(KnownColor.Tomato));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tomato);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Transparent\", {\n /**\n * Gets the Transparent default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Transparent)) {\n brush = (this.sBrushes.getValue(KnownColor.Transparent));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Transparent);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Turquoise\", {\n /**\n * Gets the Turquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Turquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.Turquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Turquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Violet\", {\n /**\n * Gets the Violet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Violet)) {\n brush = (this.sBrushes.getValue(KnownColor.Violet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Violet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Wheat\", {\n /**\n * Gets the Wheat default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Wheat)) {\n brush = (this.sBrushes.getValue(KnownColor.Wheat));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Wheat);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"White\", {\n /**\n * Gets the White default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.White)) {\n brush = (this.sBrushes.getValue(KnownColor.White));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.White);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"WhiteSmoke\", {\n /**\n * Gets the WhiteSmoke default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.WhiteSmoke)) {\n brush = (this.sBrushes.getValue(KnownColor.WhiteSmoke));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.WhiteSmoke);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Yellow\", {\n /**\n * Gets the Yellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Yellow)) {\n brush = (this.sBrushes.getValue(KnownColor.Yellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Yellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"YellowGreen\", {\n /**\n * Gets the YellowGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.YellowGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.YellowGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.YellowGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the brush.\n */\n PdfBrushes.getBrush = function (colorName) {\n var pdfColor = this.getColorValue(colorName);\n var brush = new PdfSolidBrush(pdfColor);\n this.sBrushes.setValue(colorName, brush);\n return brush;\n };\n /**\n * Get the color value.\n * @param colorName The KnownColor name.\n */\n /* tslint:disable */\n PdfBrushes.getColorValue = function (colorName) {\n var color = new PdfColor();\n switch (colorName) {\n case KnownColor.Transparent:\n color = new PdfColor(0, 255, 255, 255);\n break;\n case KnownColor.AliceBlue:\n color = new PdfColor(255, 240, 248, 255);\n break;\n case KnownColor.AntiqueWhite:\n color = new PdfColor(255, 250, 235, 215);\n break;\n case KnownColor.Aqua:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.Aquamarine:\n color = new PdfColor(255, 127, 255, 212);\n break;\n case KnownColor.Azure:\n color = new PdfColor(255, 240, 255, 255);\n break;\n case KnownColor.Beige:\n color = new PdfColor(255, 245, 245, 220);\n break;\n case KnownColor.Bisque:\n color = new PdfColor(255, 255, 228, 196);\n break;\n case KnownColor.Black:\n color = new PdfColor(255, 0, 0, 0);\n break;\n case KnownColor.BlanchedAlmond:\n color = new PdfColor(255, 255, 235, 205);\n break;\n case KnownColor.Blue:\n color = new PdfColor(255, 0, 0, 255);\n break;\n case KnownColor.BlueViolet:\n color = new PdfColor(255, 138, 43, 226);\n break;\n case KnownColor.Brown:\n color = new PdfColor(255, 165, 42, 42);\n break;\n case KnownColor.BurlyWood:\n color = new PdfColor(255, 222, 184, 135);\n break;\n case KnownColor.CadetBlue:\n color = new PdfColor(255, 95, 158, 160);\n break;\n case KnownColor.Chartreuse:\n color = new PdfColor(255, 127, 255, 0);\n break;\n case KnownColor.Chocolate:\n color = new PdfColor(255, 210, 105, 30);\n break;\n case KnownColor.Coral:\n color = new PdfColor(255, 255, 127, 80);\n break;\n case KnownColor.CornflowerBlue:\n color = new PdfColor(255, 100, 149, 237);\n break;\n case KnownColor.Cornsilk:\n color = new PdfColor(255, 255, 248, 220);\n break;\n case KnownColor.Crimson:\n color = new PdfColor(255, 220, 20, 60);\n break;\n case KnownColor.Cyan:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.DarkBlue:\n color = new PdfColor(255, 0, 0, 139);\n break;\n case KnownColor.DarkCyan:\n color = new PdfColor(255, 0, 139, 139);\n break;\n case KnownColor.DarkGoldenrod:\n color = new PdfColor(255, 184, 134, 11);\n break;\n case KnownColor.DarkGray:\n color = new PdfColor(255, 169, 169, 169);\n break;\n case KnownColor.DarkGreen:\n color = new PdfColor(255, 0, 100, 0);\n break;\n case KnownColor.DarkKhaki:\n color = new PdfColor(255, 189, 183, 107);\n break;\n case KnownColor.DarkMagenta:\n color = new PdfColor(255, 139, 0, 139);\n break;\n case KnownColor.DarkOliveGreen:\n color = new PdfColor(255, 85, 107, 47);\n break;\n case KnownColor.DarkOrange:\n color = new PdfColor(255, 255, 140, 0);\n break;\n case KnownColor.DarkOrchid:\n color = new PdfColor(255, 153, 50, 204);\n break;\n case KnownColor.DarkRed:\n color = new PdfColor(255, 139, 0, 0);\n break;\n case KnownColor.DarkSalmon:\n color = new PdfColor(255, 233, 150, 122);\n break;\n case KnownColor.DarkSeaGreen:\n color = new PdfColor(255, 143, 188, 139);\n break;\n case KnownColor.DarkSlateBlue:\n color = new PdfColor(255, 72, 61, 139);\n break;\n case KnownColor.DarkSlateGray:\n color = new PdfColor(255, 47, 79, 79);\n break;\n case KnownColor.DarkTurquoise:\n color = new PdfColor(255, 0, 206, 209);\n break;\n case KnownColor.DarkViolet:\n color = new PdfColor(255, 148, 0, 211);\n break;\n case KnownColor.DeepPink:\n color = new PdfColor(255, 255, 20, 147);\n break;\n case KnownColor.DeepSkyBlue:\n color = new PdfColor(255, 0, 191, 255);\n break;\n case KnownColor.DimGray:\n color = new PdfColor(255, 105, 105, 105);\n break;\n case KnownColor.DodgerBlue:\n color = new PdfColor(255, 30, 144, 255);\n break;\n case KnownColor.Firebrick:\n color = new PdfColor(255, 178, 34, 34);\n break;\n case KnownColor.FloralWhite:\n color = new PdfColor(255, 255, 250, 240);\n break;\n case KnownColor.ForestGreen:\n color = new PdfColor(255, 34, 139, 34);\n break;\n case KnownColor.Fuchsia:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Gainsboro:\n color = new PdfColor(255, 220, 220, 220);\n break;\n case KnownColor.GhostWhite:\n color = new PdfColor(255, 248, 248, 255);\n break;\n case KnownColor.Gold:\n color = new PdfColor(255, 255, 215, 0);\n break;\n case KnownColor.Goldenrod:\n color = new PdfColor(255, 218, 165, 32);\n break;\n case KnownColor.Gray:\n color = new PdfColor(255, 128, 128, 128);\n break;\n case KnownColor.Green:\n color = new PdfColor(255, 0, 128, 0);\n break;\n case KnownColor.GreenYellow:\n color = new PdfColor(255, 173, 255, 47);\n break;\n case KnownColor.Honeydew:\n color = new PdfColor(255, 240, 255, 240);\n break;\n case KnownColor.HotPink:\n color = new PdfColor(255, 255, 105, 180);\n break;\n case KnownColor.IndianRed:\n color = new PdfColor(255, 205, 92, 92);\n break;\n case KnownColor.Indigo:\n color = new PdfColor(255, 75, 0, 130);\n break;\n case KnownColor.Ivory:\n color = new PdfColor(255, 255, 255, 240);\n break;\n case KnownColor.Khaki:\n color = new PdfColor(255, 240, 230, 140);\n break;\n case KnownColor.Lavender:\n color = new PdfColor(255, 230, 230, 250);\n break;\n case KnownColor.LavenderBlush:\n color = new PdfColor(255, 255, 240, 245);\n break;\n case KnownColor.LawnGreen:\n color = new PdfColor(255, 124, 252, 0);\n break;\n case KnownColor.LemonChiffon:\n color = new PdfColor(255, 255, 250, 205);\n break;\n case KnownColor.LightBlue:\n color = new PdfColor(255, 173, 216, 230);\n break;\n case KnownColor.LightCoral:\n color = new PdfColor(255, 240, 128, 128);\n break;\n case KnownColor.LightCyan:\n color = new PdfColor(255, 224, 255, 255);\n break;\n case KnownColor.LightGoldenrodYellow:\n color = new PdfColor(255, 250, 250, 210);\n break;\n case KnownColor.LightGreen:\n color = new PdfColor(255, 144, 238, 144);\n break;\n case KnownColor.LightGray:\n color = new PdfColor(255, 211, 211, 211);\n break;\n case KnownColor.LightPink:\n color = new PdfColor(255, 255, 182, 193);\n break;\n case KnownColor.LightSalmon:\n color = new PdfColor(255, 255, 160, 122);\n break;\n case KnownColor.LightSeaGreen:\n color = new PdfColor(255, 32, 178, 170);\n break;\n case KnownColor.LightSkyBlue:\n color = new PdfColor(255, 135, 206, 250);\n break;\n case KnownColor.LightSlateGray:\n color = new PdfColor(255, 119, 136, 153);\n break;\n case KnownColor.LightSteelBlue:\n color = new PdfColor(255, 176, 196, 222);\n break;\n case KnownColor.LightYellow:\n color = new PdfColor(255, 255, 255, 224);\n break;\n case KnownColor.Lime:\n color = new PdfColor(255, 0, 255, 0);\n break;\n case KnownColor.LimeGreen:\n color = new PdfColor(255, 50, 205, 50);\n break;\n case KnownColor.Linen:\n color = new PdfColor(255, 250, 240, 230);\n break;\n case KnownColor.Magenta:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Maroon:\n color = new PdfColor(255, 128, 0, 0);\n break;\n case KnownColor.MediumAquamarine:\n color = new PdfColor(255, 102, 205, 170);\n break;\n case KnownColor.MediumBlue:\n color = new PdfColor(255, 0, 0, 205);\n break;\n case KnownColor.MediumOrchid:\n color = new PdfColor(255, 186, 85, 211);\n break;\n case KnownColor.MediumPurple:\n color = new PdfColor(255, 147, 112, 219);\n break;\n case KnownColor.MediumSeaGreen:\n color = new PdfColor(255, 60, 179, 113);\n break;\n case KnownColor.MediumSlateBlue:\n color = new PdfColor(255, 123, 104, 238);\n break;\n case KnownColor.MediumSpringGreen:\n color = new PdfColor(255, 0, 250, 154);\n break;\n case KnownColor.MediumTurquoise:\n color = new PdfColor(255, 72, 209, 204);\n break;\n case KnownColor.MediumVioletRed:\n color = new PdfColor(255, 199, 21, 133);\n break;\n case KnownColor.MidnightBlue:\n color = new PdfColor(255, 25, 25, 112);\n break;\n case KnownColor.MintCream:\n color = new PdfColor(255, 245, 255, 250);\n break;\n case KnownColor.MistyRose:\n color = new PdfColor(255, 255, 228, 225);\n break;\n case KnownColor.Moccasin:\n color = new PdfColor(255, 255, 228, 181);\n break;\n case KnownColor.NavajoWhite:\n color = new PdfColor(255, 255, 222, 173);\n break;\n case KnownColor.Navy:\n color = new PdfColor(255, 0, 0, 128);\n break;\n case KnownColor.OldLace:\n color = new PdfColor(255, 253, 245, 230);\n break;\n case KnownColor.Olive:\n color = new PdfColor(255, 128, 128, 0);\n break;\n case KnownColor.OliveDrab:\n color = new PdfColor(255, 107, 142, 35);\n break;\n case KnownColor.Orange:\n color = new PdfColor(255, 255, 165, 0);\n break;\n case KnownColor.OrangeRed:\n color = new PdfColor(255, 255, 69, 0);\n break;\n case KnownColor.Orchid:\n color = new PdfColor(255, 218, 112, 214);\n break;\n case KnownColor.PaleGoldenrod:\n color = new PdfColor(255, 238, 232, 170);\n break;\n case KnownColor.PaleGreen:\n color = new PdfColor(255, 152, 251, 152);\n break;\n case KnownColor.PaleTurquoise:\n color = new PdfColor(255, 175, 238, 238);\n break;\n case KnownColor.PaleVioletRed:\n color = new PdfColor(255, 219, 112, 147);\n break;\n case KnownColor.PapayaWhip:\n color = new PdfColor(255, 255, 239, 213);\n break;\n case KnownColor.PeachPuff:\n color = new PdfColor(255, 255, 218, 185);\n break;\n case KnownColor.Peru:\n color = new PdfColor(255, 205, 133, 63);\n break;\n case KnownColor.Pink:\n color = new PdfColor(255, 255, 192, 203);\n break;\n case KnownColor.Plum:\n color = new PdfColor(255, 221, 160, 221);\n break;\n case KnownColor.PowderBlue:\n color = new PdfColor(255, 176, 224, 230);\n break;\n case KnownColor.Purple:\n color = new PdfColor(255, 128, 0, 128);\n break;\n case KnownColor.Red:\n color = new PdfColor(255, 255, 0, 0);\n break;\n case KnownColor.RosyBrown:\n color = new PdfColor(255, 188, 143, 143);\n break;\n case KnownColor.RoyalBlue:\n color = new PdfColor(255, 65, 105, 225);\n break;\n case KnownColor.SaddleBrown:\n color = new PdfColor(255, 139, 69, 19);\n break;\n case KnownColor.Salmon:\n color = new PdfColor(255, 250, 128, 114);\n break;\n case KnownColor.SandyBrown:\n color = new PdfColor(255, 244, 164, 96);\n break;\n case KnownColor.SeaGreen:\n color = new PdfColor(255, 46, 139, 87);\n break;\n case KnownColor.SeaShell:\n color = new PdfColor(255, 255, 245, 238);\n break;\n case KnownColor.Sienna:\n color = new PdfColor(255, 160, 82, 45);\n break;\n case KnownColor.Silver:\n color = new PdfColor(255, 192, 192, 192);\n break;\n case KnownColor.SkyBlue:\n color = new PdfColor(255, 135, 206, 235);\n break;\n case KnownColor.SlateBlue:\n color = new PdfColor(255, 106, 90, 205);\n break;\n case KnownColor.SlateGray:\n color = new PdfColor(255, 112, 128, 144);\n break;\n case KnownColor.Snow:\n color = new PdfColor(255, 255, 250, 250);\n break;\n case KnownColor.SpringGreen:\n color = new PdfColor(255, 0, 255, 127);\n break;\n case KnownColor.SteelBlue:\n color = new PdfColor(255, 70, 130, 180);\n break;\n case KnownColor.Tan:\n color = new PdfColor(255, 210, 180, 140);\n break;\n case KnownColor.Teal:\n color = new PdfColor(255, 0, 128, 128);\n break;\n case KnownColor.Thistle:\n color = new PdfColor(255, 216, 191, 216);\n break;\n case KnownColor.Tomato:\n color = new PdfColor(255, 255, 99, 71);\n break;\n case KnownColor.Turquoise:\n color = new PdfColor(255, 64, 224, 208);\n break;\n case KnownColor.Violet:\n color = new PdfColor(255, 238, 130, 238);\n break;\n case KnownColor.Wheat:\n color = new PdfColor(255, 245, 222, 179);\n break;\n case KnownColor.White:\n color = new PdfColor(255, 255, 255, 255);\n break;\n case KnownColor.WhiteSmoke:\n color = new PdfColor(255, 245, 245, 245);\n break;\n case KnownColor.Yellow:\n color = new PdfColor(255, 255, 255, 0);\n break;\n case KnownColor.YellowGreen:\n color = new PdfColor(255, 154, 205, 50);\n break;\n }\n return color;\n };\n //Static Fields\n /**\n * Local variable to store the brushes.\n */\n PdfBrushes.sBrushes = new Dictionary();\n return PdfBrushes;\n}());\nexport { PdfBrushes };\n","/**\n * PdfBlend.ts class for EJ2-PDF\n */\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorBlend } from './pdf-color-blend';\n/**\n * `PdfBlend` Represents the blend color space\n * @private\n */\nvar PdfBlend = /** @class */ (function () {\n function PdfBlend(count) {\n //Constants\n /**\n * precision of the GCD calculations.\n * @private\n */\n this.precision = 1000;\n //\n }\n Object.defineProperty(PdfBlend.prototype, \"factors\", {\n //Properties\n /**\n * Gets or sets the array of factor to the blend.\n * @public\n */\n get: function () {\n return this.mFactors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Factors');\n }\n this.mFactors = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"positions\", {\n /**\n * 'positions' Gets or sets the array of positions\n * @public\n */\n get: function () {\n return this.mPositions;\n },\n set: function (value) {\n var positionarray = value;\n for (var i = 0; i < positionarray.length; i++) {\n if (((positionarray[i] < 0) || (positionarray[i] > 1))) {\n positionarray[i] = 0;\n }\n }\n this.mPositions = positionarray;\n this.mPositions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"count\", {\n /**\n * Gets the number of elements that specify the blend.\n * @protected\n */\n get: function () {\n return this.mCount;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Generates a correct color blend.\n * @param colours The colours.\n * @param colorSpace The color space.\n */\n PdfBlend.prototype.generateColorBlend = function (colours, colorSpace) {\n if ((colours == null)) {\n throw new Error('ArgumentNullException : colours');\n }\n if ((this.positions == null)) {\n this.positions = [0];\n }\n var cBlend = new PdfColorBlend(this.count);\n var positions = this.positions;\n var clrs = null;\n if ((positions.length === 1)) {\n positions = [3];\n positions[0] = 0;\n positions[1] = this.positions[0];\n positions[2] = 1;\n /* tslint:disable */\n clrs = new Array(3);\n clrs[0] = colours[0];\n clrs[1] = colours[0];\n clrs[2] = colours[1];\n }\n else {\n var c1 = colours[0];\n var c2 = colours[1];\n /* tslint:disable */\n clrs = new Array(this.count);\n var i = 0;\n var count = this.count;\n for (i = 0; i < count; ++i) {\n clrs[i] = this.interpolate(this.mFactors[i], c1, c2, colorSpace);\n }\n }\n cBlend.positions = positions;\n cBlend.colors = clrs;\n return cBlend;\n };\n /**\n * 'clonePdfBlend' Clones this instance.\n * @public\n */\n PdfBlend.prototype.clonePdfBlend = function () {\n var blend = this;\n if ((this.mFactors != null)) {\n blend.factors = (this.mFactors);\n }\n if ((this.positions != null)) {\n blend.positions = (this.positions);\n }\n return blend;\n };\n PdfBlend.prototype.gcd = function (u, v) {\n if (typeof u === 'number' && typeof v === 'number' && typeof v !== 'undefined') {\n if (((u < 0) || (u > 1))) {\n throw new Error('ArgumentOutOfRangeException : u');\n }\n if (((v < 0) || (v > 1))) {\n throw new Error('ArgumentOutOfRangeException : v');\n }\n var iU = (Math.max(1, (u * this.precision)));\n var iV = (Math.max(1, (v * this.precision)));\n var iResult = this.gcdInt(iU, iV);\n var result = ((iResult) / this.precision);\n return result;\n }\n else {\n var values = u;\n if ((values == null)) {\n throw new Error('ArgumentNullException : values');\n }\n if ((values.length < 1)) {\n throw new Error('ArgumentException : Not enough values in the array. - values');\n }\n var gcd = values[0];\n if ((values.length > 1)) {\n var count = values.length;\n for (var i = 1; i < count; ++i) {\n gcd = this.gcd(values[i], gcd);\n if ((gcd === (1 / this.precision))) {\n break;\n }\n }\n }\n return gcd;\n }\n };\n /**\n * Calculate the GCD int of the specified values.\n * @param u The u.\n * @param v The v.\n */\n PdfBlend.prototype.gcdInt = function (u, v) {\n if ((u <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + u + 'The arguments cannot be less or equal to zero.');\n }\n if ((v <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + v + 'The arguments cannot be less or equal to zero.');\n }\n if (((u === 1) || (v === 1))) {\n return 1;\n }\n var shift = 0;\n while (this.isEven(u, v)) {\n ++shift;\n u >>= 1;\n v >>= 1;\n }\n while (((u & 1) <= 0)) {\n u >>= 1;\n }\n do {\n while ((v & 1) <= 0) {\n v >>= 1;\n }\n if (u > v) {\n var t = v;\n v = u;\n u = t;\n }\n v = v - u;\n } while (v !== 0);\n return (u << shift);\n };\n PdfBlend.prototype.isEven = function (arg1, arg2) {\n if (typeof arg2 === 'number' && typeof arg2 !== 'undefined') {\n var result = true;\n result = (result && ((arg1 & 1) <= 0)); // Is u even?\n result = (result && ((arg2 & 1) <= 0)); // Is v even?\n return result;\n }\n else {\n return ((arg1 & 1) <= 0);\n }\n };\n PdfBlend.prototype.interpolate = function (t, color1, color2, colorSpace) {\n if (color1 instanceof PdfColor) {\n var color = new PdfColor();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n var red = (this.interpolate(t, color1.red, color2.red));\n var green = (this.interpolate(t, color1.green, color2.green));\n var blue = (this.interpolate(t, color1.blue, color2.blue));\n color = new PdfColor(red, green, blue);\n break;\n case PdfColorSpace.GrayScale:\n var gray = (this.interpolate(t, color1.gray, color2.gray));\n color = new PdfColor(gray);\n break;\n case PdfColorSpace.Cmyk:\n var cyan = (this.interpolate(t, color1.c, color2.c));\n var magenta = (this.interpolate(t, color1.m, color2.m));\n var yellow = (this.interpolate(t, color1.y, color2.y));\n var black = (this.interpolate(t, color1.k, color2.k));\n color = new PdfColor(cyan, magenta, yellow, black);\n break;\n }\n return color;\n }\n else {\n var t0 = 0;\n var t1 = 1;\n var result = 0;\n if ((t === t0)) {\n result = color1;\n }\n else if ((t === t1)) {\n result = color2;\n }\n else {\n result = (color1 + ((t - t0) * ((color2 - color1) / (t1 - t0))));\n }\n return result;\n }\n };\n return PdfBlend;\n}());\nexport { PdfBlend };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfColorBlend.ts class for EJ2-PDF\n */\nimport { PdfColorSpace } from './../enum';\nimport { PdfSampledFunction } from './../../general/functions/pdf-sampled-function';\nimport { PdfBlend } from './pdf-blend';\n/**\n * `PdfColorBlend` Represents the arrays of colors and positions used for\n * interpolating color blending in a multicolor gradient.\n * @private\n */\nvar PdfColorBlend = /** @class */ (function (_super) {\n __extends(PdfColorBlend, _super);\n function PdfColorBlend(count) {\n var _this = _super.call(this) || this;\n if (typeof count === 'number') {\n _this = _super.call(this, count) || this;\n }\n return _this;\n }\n Object.defineProperty(PdfColorBlend.prototype, \"colors\", {\n //Properties\n /**\n * Gets or sets the array of colors.\n * @public\n */\n get: function () {\n return this.mcolors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Colors');\n }\n this.mcolors = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Gets the function.\n * @param colorSpace The color space.\n * @public\n */\n PdfColorBlend.prototype.getFunction = function (colorSpace) {\n var domain = [0, 1];\n var colourComponents = this.getColorComponentsCount(colorSpace);\n var maxComponentValue = this.getMaxComponentValue(colorSpace);\n var range = this.setRange(colourComponents, maxComponentValue);\n var func = null;\n if ((this.mbrush == null && typeof this.mbrush === 'undefined')) {\n var sizes = [1];\n var samplesCount = void 0;\n var step = 1;\n if (this.positions.length === 2) {\n samplesCount = 2;\n }\n else {\n var positions = this.positions;\n var intervals = this.getIntervals(positions);\n var gcd = this.gcd(intervals);\n step = gcd;\n samplesCount = (((1 / gcd)) + 1);\n }\n sizes[0] = samplesCount;\n var samples = this.getSamplesValues(colorSpace, samplesCount, maxComponentValue, step);\n func = new PdfSampledFunction(domain, range, sizes, samples);\n return func;\n }\n return func;\n };\n /**\n * 'cloneColorBlend' Clones this instance.\n * @public\n */\n PdfColorBlend.prototype.cloneColorBlend = function () {\n var cBlend = this;\n if ((this.mcolors != null && typeof this.mcolors !== 'undefined')) {\n cBlend.colors = (this.mcolors);\n }\n if ((this.positions != null && typeof this.positions !== 'undefined')) {\n cBlend.positions = (this.positions);\n }\n return cBlend;\n };\n /**\n * Sets the range.\n * @param colourComponents The colour components.\n * @param maxValue The max value.\n */\n PdfColorBlend.prototype.setRange = function (colourComponents, maxValue) {\n var range = [(colourComponents * 2)];\n for (var i = 0; (i < colourComponents); ++i) {\n range[(i * 2)] = 0;\n range[((i * 2) + 1)] = 1;\n }\n return range;\n };\n /**\n * Calculates the color components count according to colour space.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getColorComponentsCount = function (colorSpace) {\n var count = 0;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n count = 3;\n break;\n case PdfColorSpace.Cmyk:\n count = 4;\n break;\n case PdfColorSpace.GrayScale:\n count = 1;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return count;\n };\n /**\n * Gets samples values for specified colour space.\n * @param colorSpace The color space.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getSamplesValues = function (colorSpace, sampleCount, maxComponentValue, step) {\n var values;\n switch (colorSpace) {\n case PdfColorSpace.GrayScale:\n values = this.getGrayscaleSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Cmyk:\n values = this.getCmykSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Rgb:\n values = this.getRgbSamples(sampleCount, maxComponentValue, step);\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return values;\n };\n /**\n * Gets the grayscale samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getGrayscaleSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 2)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.GrayScale);\n var index = (i * 2);\n }\n return values;\n };\n /**\n * Gets the RGB samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getRgbSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 3)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.Rgb);\n var index = (i * 3);\n values[index] = color.r;\n values[(index + 1)] = color.g;\n values[(index + 2)] = color.b;\n }\n return values;\n };\n /**\n * Gets the CMYK samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getCmykSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 4)];\n for (var i = 0; (i < sampleCount); i++) {\n var color = this.getNextColor(i, step, PdfColorSpace.Cmyk);\n var index = (i * 4);\n values[index] = ((color.c * maxComponentValue));\n values[(index + 1)] = ((color.m * maxComponentValue));\n values[(index + 2)] = ((color.y * maxComponentValue));\n values[(index + 3)] = ((color.k * maxComponentValue));\n }\n return values;\n };\n /**\n * Calculates the color that should be at the specified index.\n * @param index The index.\n * @param step The step.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getNextColor = function (index, step, colorSpace) {\n var position = (step * index);\n var indexHi;\n var indexLow;\n var result = this.getIndices(position, indexLow, indexHi);\n indexLow = result.indexLow;\n indexHi = result.indexHi;\n var color;\n if (indexLow === indexHi) {\n color = this.mcolors[indexLow];\n }\n else {\n var positionLow = this.positions[indexLow];\n var positionHi = this.positions[indexHi];\n var colorLow = this.mcolors[indexLow];\n var colorHi = this.mcolors[indexHi];\n var t = ((position - positionLow) / (positionHi - positionLow));\n color = this.interpolate(t, colorLow, colorHi, colorSpace);\n }\n return color;\n };\n /**\n * Gets the indices.\n * @param position The position.\n * @param indexLow The index low.\n * @param indexHi The index hi.\n */\n PdfColorBlend.prototype.getIndices = function (position, indexLow, indexHi) {\n var positions = this.positions;\n indexLow = 0;\n indexHi = 0;\n for (var i = 0; (i < this.mcolors.length); ++i) {\n var currPos = positions[i];\n if ((currPos === position)) {\n indexHi = i;\n indexLow = i;\n break;\n }\n else if ((currPos > position)) {\n indexHi = i;\n break;\n }\n indexLow = i;\n indexHi = i;\n }\n return { indexLow: indexLow, indexHi: indexHi };\n };\n /**\n * Calculates the max component value.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getMaxComponentValue = function (colorSpace) {\n var result = 0;\n switch (colorSpace) {\n case PdfColorSpace.Cmyk:\n case PdfColorSpace.Rgb:\n result = 255;\n break;\n case PdfColorSpace.GrayScale:\n result = 65535;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + 'colorSpace');\n }\n return result;\n };\n /**\n * Gets an intervals array from the positions array.\n * @param positions The positions array.\n */\n PdfColorBlend.prototype.getIntervals = function (positions) {\n var count = positions.length;\n var intervals = [(count - 1)];\n var prev = positions[0];\n for (var i = 1; (i < count); ++i) {\n var v = positions[i];\n intervals[(i - 1)] = (v - prev);\n prev = v;\n }\n return intervals;\n };\n return PdfColorBlend;\n}(PdfBlend));\nexport { PdfColorBlend };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfLinearGradientBrush.ts class for EJ2-PDF\n */\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PointF, Rectangle } from './../../drawing/pdf-drawing';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from '../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfColorBlend } from './pdf-color-blend';\nimport { PdfGradientBrush } from './pdf-gradient-brush';\nimport { PdfExtend, PdfLinearGradientMode, ShadingType } from './enum';\n/**\n * `PdfLinearGradientBrush` Implements linear gradient brush by using PDF axial shading pattern.\n * @private\n */\nvar PdfLinearGradientBrush = /** @class */ (function (_super) {\n __extends(PdfLinearGradientBrush, _super);\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfLinearGradientBrush(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PdfColor && arg4 instanceof PdfColor) {\n _this.initialize(arg3, arg4);\n _this.mPointStart = arg1;\n _this.mPointEnd = arg2;\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (arg1 instanceof Rectangle) {\n _this.initialize(arg2, arg3);\n /* tslint:disable-next-line:max-line-length */\n if ((arg4 === PdfLinearGradientMode.BackwardDiagonal || arg4 === PdfLinearGradientMode.ForwardDiagonal || arg4 === PdfLinearGradientMode.Horizontal || arg4 === PdfLinearGradientMode.Vertical)) {\n _this.mBoundaries = arg1;\n switch (arg4) {\n case PdfLinearGradientMode.BackwardDiagonal:\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n case PdfLinearGradientMode.ForwardDiagonal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.bottom);\n break;\n case PdfLinearGradientMode.Horizontal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n break;\n case PdfLinearGradientMode.Vertical:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n default:\n throw new Error('ArgumentException -- Unsupported linear gradient mode: ' + arg4 + ' mode');\n }\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (typeof arg4 === 'number' && typeof arg4 !== 'undefined') {\n _this.mBoundaries = arg1;\n arg4 = arg4 % 360;\n if ((arg4 === 0)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 90)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n }\n else if ((arg4 === 180)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 270)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.left, arg1.bottom);\n }\n else {\n var d2r = (Math.PI / 180);\n var radAngle = (arg4 * d2r);\n var k = Math.tan(radAngle);\n var x = (_this.mBoundaries.left\n + ((_this.mBoundaries.right - _this.mBoundaries.left) / 2));\n var y = (_this.mBoundaries.top\n + ((_this.mBoundaries.bottom - _this.mBoundaries.top) / 2));\n var centre = new PointF(x, y);\n x = (_this.mBoundaries.width / (2 * (Math.cos(radAngle))));\n y = ((k * x));\n x = (x + centre.x);\n y = (y + centre.y);\n var p1 = new PointF(x, y);\n var cp1 = _this.subPoints(p1, centre);\n // P1 - P0\n var p = _this.choosePoint(arg4);\n var coef = (_this.mulPoints(_this.subPoints(p, centre), cp1)\n / _this.mulPoints(cp1, cp1));\n _this.mPointEnd = _this.addPoints(centre, _this.mulPoint(cp1, coef));\n // Parametric line equation.\n _this.mPointStart = _this.addPoints(centre, _this.mulPoint(cp1, (coef * -1)));\n }\n _this.setPoints(_this.mPointEnd, _this.mPointStart);\n }\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @param color1 The starting color of the gradient.\n * @param color2 The end color of the gradient.\n */\n PdfLinearGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColours = [color1, color2];\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.positions = [0, 1];\n this.mColourBlend.colors = this.mColours;\n this.initShading();\n };\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions\n * and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColours == null)) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n // TODO: generate correct colour blend.\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor linear gradient.\n * @public\n */\n get: function () {\n return this.mColourBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColours = null;\n this.mColourBlend = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the gradient.\n * @public\n */\n get: function () {\n return this.mColours;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small - LinearColors');\n }\n if ((this.mColours == null && typeof this.mColours === 'undefined')) {\n this.mColours = [value[0], value[1]];\n }\n else {\n this.mColours[0] = value[0];\n this.mColours[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.colors = this.mColours;\n this.mColourBlend.positions = [0, 1];\n }\n else {\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets a rectangular region that defines the boundaries of the gradient.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient should extend starting and ending points.\n * @public\n */\n get: function () {\n var result = PdfExtend.None;\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if ((extend != null)) {\n var extStart = (extend.items(0));\n var extEnd = (extend.items(1));\n if (extStart.value) {\n result = (result | PdfExtend.Start);\n }\n if (extEnd.value) {\n result = (result | PdfExtend.End);\n }\n }\n return result;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd;\n if ((extend == null)) {\n extStart = new PdfBoolean(false);\n extEnd = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd = (extend.items(1));\n }\n // extStart.value = ((value && PdfExtend.Start) > 0);\n // extEnd.value = ((value && PdfExtend.End) > 0);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Adds two points to each other.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.addPoints = function (point1, point2) {\n var x = (point1.x + point2.x);\n var y = (point1.y + point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Subs the second point from the first one.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.subPoints = function (point1, point2) {\n var x = (point1.x - point2.x);\n var y = (point1.y - point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Makes scalar multiplication of two points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.mulPoints = function (point1, point2) {\n var result = ((point1.x * point2.x) + (point1.y * point2.y));\n return result;\n };\n /**\n * Multiplies the point by the value specified.\n * @param point The point1.\n * @param value The value.\n */\n PdfLinearGradientBrush.prototype.mulPoint = function (point, value) {\n point.x = (point.x * value);\n point.y = (point.y * value);\n return point;\n };\n /**\n * Choose the point according to the angle.\n * @param angle The angle.\n */\n PdfLinearGradientBrush.prototype.choosePoint = function (angle) {\n var point = new PointF(0, 0);\n // Choose the correct point.\n if ((angle < 90) && (angle > 0)) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.bottom);\n }\n else if ((angle < 180) && (angle > 90)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.bottom);\n }\n else if ((angle < 270) && (angle > 180)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.top);\n }\n else if (angle > 270) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.top);\n }\n else {\n throw new Error('PdfException - Internal error.');\n }\n return point;\n };\n /**\n * Sets the start and end points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.setPoints = function (point1, point2) {\n var points = new PdfArray();\n points.add(new PdfNumber(point1.x));\n points.add(new PdfNumber(this.updateY(point1.y)));\n points.add(new PdfNumber(point2.x));\n points.add(new PdfNumber(this.updateY(point2.y)));\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Updates y co-ordinate.\n * @param y Y co-ordinate..\n */\n PdfLinearGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n //Overrides\n /**\n * Initializes the shading dictionary.\n * @private\n */\n PdfLinearGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Axial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfLinearGradientBrush.prototype.clone = function () {\n var brush = this;\n brush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n brush.shading = new PdfDictionary();\n brush.initShading();\n brush.setPoints(brush.mPointStart, brush.mPointEnd);\n if (brush !== null && brush instanceof PdfLinearGradientBrush) {\n if ((this.matrix != null && typeof this.matrix !== 'undefined')) {\n brush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColours != null && typeof this.mColours !== 'undefined')) {\n brush.mColours = (this.mColours);\n }\n if ((this.blend != null && typeof this.blend !== 'undefined')) {\n brush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors != null && typeof this.interpolationColors !== 'undefined')) {\n brush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n brush.extend = this.extend;\n this.cloneBackgroundValue(brush);\n this.cloneAntiAliasingValue(brush);\n return brush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfLinearGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n };\n return PdfLinearGradientBrush;\n}(PdfGradientBrush));\nexport { PdfLinearGradientBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfRadialGradientBrush.ts class for EJ2-PDF\n */\nimport { PdfColorSpace } from './../enum';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from '../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfColorBlend } from './pdf-color-blend';\nimport { PdfGradientBrush } from './pdf-gradient-brush';\nimport { PdfExtend, ShadingType } from './enum';\n/**\n * `PdfRadialGradientBrush` Represent radial gradient brush.\n * @private\n */\nvar PdfRadialGradientBrush = /** @class */ (function (_super) {\n __extends(PdfRadialGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfRadialGradientBrush(centerStart, radiusStart, centerEnd, radiusEnd, colorStart, colorEnd) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local varaible to store the dictionary properties.\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n _this.initialize(colorStart, colorEnd);\n if (radiusStart < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusStart - The radius cannot be less then zero.');\n }\n if (radiusEnd < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusEnd - The radius cannpt be less then zero.');\n }\n _this.mPointEnd = centerEnd;\n _this.mPointStart = centerStart;\n _this.mRadiusStart = radiusStart;\n _this.mRadiusEnd = radiusEnd;\n _this.setPoints(_this.mPointStart, _this.mPointEnd, _this.mRadiusStart, _this.mRadiusEnd);\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @param color1 The color1.\n * @param color2 The color2.\n */\n PdfRadialGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColour = [color1, color2];\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.positions = [0, 1];\n this.mColourBlends.colors = this.mColour;\n this.initShading();\n };\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor radial gradient.\n * @public\n */\n get: function () {\n return this.mColourBlends;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColour = null;\n this.mColourBlends = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the radial gradient.\n * @public\n */\n get: function () {\n return this.mColour;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : radial LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small LinearColors');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n this.mColour = [value[0], value[1]];\n }\n else {\n this.mColour[0] = value[0];\n this.mColour[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.colors = this.mColour;\n this.mColourBlends.positions = [0, 1];\n }\n else {\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets or sets the rectangle.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n set: function (value) {\n this.mBoundaries = value;\n this.bBox = PdfArray.fromRectangle(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient\n * should extend starting and ending points.\n * @public\n */\n get: function () {\n var result1 = PdfExtend.None;\n var extend1 = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if (extend1 !== null && typeof extend1 !== 'undefined') {\n var extStart = (extend1.items(0));\n var extEnd = (extend1.items(1));\n if (extStart.value) {\n result1 = (result1 | PdfExtend.Start);\n }\n if (extEnd.value) {\n result1 = (result1 | PdfExtend.End);\n }\n }\n return result1;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd1;\n if (extend == null && typeof extend === 'undefined') {\n extStart = new PdfBoolean(false);\n extEnd1 = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd1);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd1 = (extend.items(1));\n }\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Sets the points.\n * @param pointStart The point start.\n * @param pointEnd The point end.\n * @param radiusStart The radius start.\n * @param radiusEnd The radius end.\n */\n PdfRadialGradientBrush.prototype.setPoints = function (pointStart, pointEnd, radiusStart, radiusEnd) {\n var points = new PdfArray();\n points.add(new PdfNumber(pointStart.x));\n points.add(new PdfNumber(this.updateY(pointStart.y)));\n points.add(new PdfNumber(radiusStart));\n points.add(new PdfNumber(pointEnd.x));\n points.add(new PdfNumber(this.updateY(pointEnd.y)));\n if ((radiusStart !== radiusEnd)) {\n points.add(new PdfNumber(radiusEnd));\n }\n else {\n points.add(new PdfNumber(0));\n }\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Update y co-ordinate.\n * @param y Y co-ordinate.\n */\n PdfRadialGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n /**\n * Initializess the shading dictionary.\n * @private\n */\n PdfRadialGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Radial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfRadialGradientBrush.prototype.clone = function () {\n var rBrush = this;\n rBrush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n rBrush.shading = new PdfDictionary();\n rBrush.initShading();\n rBrush.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);\n if (rBrush instanceof PdfRadialGradientBrush) {\n if ((this.matrix !== null && typeof this.matrix !== 'undefined')) {\n rBrush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColour !== null && typeof this.mColour !== 'undefined')) {\n rBrush.mColour = (this.mColour);\n }\n if ((this.blend !== null && typeof this.blend !== 'undefined')) {\n rBrush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors !== null && typeof this.interpolationColors !== 'undefined')) {\n rBrush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n rBrush.extend = this.extend;\n this.cloneBackgroundValue(rBrush);\n this.cloneAntiAliasingValue(rBrush);\n return rBrush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfRadialGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n };\n return PdfRadialGradientBrush;\n}(PdfGradientBrush));\nexport { PdfRadialGradientBrush };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\n };\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n if (typeof this._rowHeight !== 'undefined' && this._rowHeight !== null && innerLayoutArea.height > this._rowHeight) {\n innerLayoutArea.height = this._rowHeight;\n }\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n if (this.row.rowBreakHeightValue !== null && typeof this.row.rowBreakHeightValue !== 'undefined')\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255) as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.isHeaderRow = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n row.isHeaderRow = true;\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\nimport { PdfStringLayouter } from './../../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../../document/pdf-document';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = this.checkIsFisished(row);\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }*/\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex).returnValue) {\n break;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var section = this.currentPage.section;\n var startIndex = section.indexOf(startPage) + 1;\n var endIndex = section.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = section.getPages()[page].graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n if (cell.columnSpan > 1) {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(this.Grid.rows.getRow(this.Grid.rows.count - 1).width, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n if ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.y = format.paginateBounds.y;\n this.currentBounds.height = format.paginateBounds.height;\n }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (typeof page !== 'undefined' && document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = (typeof args.cancel === 'undefined' ? false : args.cancel);\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = false;\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = cell.value;\n var width = cell.width;\n var column = grid.columns.getColumn(i);\n if (column.isCustomWidth && cell.width > column.width) {\n width = column.width;\n }\n this.slr = layouter.layout(cell.value, font, cell.stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (cell.value !== '' && height === 0) {\n isFit = false;\n break;\n }\n if (cell.style !== null && cell.style.borders !== null && cell.style.borders.top !== null && cell.style.borders.bottom !== null) {\n height += (cell.style.borders.top.width + cell.style.borders.bottom.width) * 2;\n }\n if (this.slr.lineCount > 1 && cell.stringFormat != null && cell.stringFormat.lineSpacing != 0) {\n height += (this.slr.lineCount - 1) * (cell.style.stringFormat.lineSpacing);\n }\n if (cell.style.cellPadding === null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var gridColumnWidth = this.Grid.columns.getColumn(i).width;\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n if (!cancelSpans) {\n for (var k = 1; k < row.cells.getCell(i).columnSpan; k++) {\n row.cells.getCell(i + k).isCellMergeContinue = true;\n gridColumnWidth += this.Grid.columns.getColumn(i + k).width;\n }\n }\n var size = new SizeF(gridColumnWidth, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n row.cells.getCell(i)._rowHeight = row.height;\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null && typeof stringResult.remainder !== 'undefined') {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * ShapeLayouter.ts class for EJ2-PDF\n * @private\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfLayoutBreakType, PdfLayoutType } from './../../figures/enum';\nimport { BeginPageLayoutEventArgs, EndPageLayoutEventArgs } from './../../../structured-elements/grid/layout/grid-layouter';\n/**\n * ShapeLayouter class.\n * @private\n */\nvar ShapeLayouter = /** @class */ (function (_super) {\n __extends(ShapeLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `ShapeLayouter` class.\n * @private\n */\n function ShapeLayouter(element) {\n var _this = _super.call(this, element) || this;\n // Fields\n /**\n * Initializes the object to store `older form elements` of previous page.\n * @default 0\n * @private\n */\n _this.olderPdfForm = 0;\n /**\n * The `bounds` of the shape element.\n * * @default new RectangleF()\n * @private\n */\n _this.shapeBounds = new RectangleF();\n /**\n * Total Page size of the web page.\n * * @default 0\n * @private\n */\n _this.totalPageSize = 0;\n return _this;\n }\n Object.defineProperty(ShapeLayouter.prototype, \"element\", {\n // Properties\n /**\n * Gets shape element.\n * @private\n */\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Layouts the element.\n * @private\n */\n ShapeLayouter.prototype.layoutInternal = function (param) {\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var shapeLayoutBounds = this.element.getBounds();\n shapeLayoutBounds.x = 0;\n shapeLayoutBounds.y = 0;\n /* tslint:disable */\n var isEmpty = (this.shapeBounds.x === this.shapeBounds.y && this.shapeBounds.y === this.shapeBounds.width && this.shapeBounds.width === this.shapeBounds.height && this.shapeBounds.height === 0) ? true : false;\n /* tslint:enable */\n if ((this.isPdfGrid) && (!(isEmpty))) {\n shapeLayoutBounds = this.shapeBounds;\n }\n var result = null;\n var pageResult = new ShapeLayoutResult();\n pageResult.page = currentPage;\n /*tslint:disable:no-constant-condition */\n while (true) {\n // Raise event.\n var result1 = this.raiseBeforePageLayout(currentPage, currentBounds);\n currentBounds = result1.currentBounds;\n var endArgs = null;\n if (!result1.cancel) {\n pageResult = this.layoutOnPage(currentPage, currentBounds, shapeLayoutBounds, param);\n // Raise event.\n endArgs = this.raiseEndPageLayout(pageResult);\n result1.cancel = (endArgs === null) ? false : endArgs.cancel;\n }\n if (!pageResult.end && !result1.cancel) {\n currentBounds = this.getPaginateBounds(param);\n shapeLayoutBounds = this.getNextShapeBounds(shapeLayoutBounds, pageResult);\n currentPage = (endArgs === null || endArgs.nextPage === null) ?\n this.getNextPage(currentPage) : endArgs.nextPage;\n if (this.isPdfGrid) {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n else {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n return result;\n };\n /**\n * Raises BeforePageLayout event.\n * @private\n */\n ShapeLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds) {\n var cancel = false;\n if (this.element.raiseBeginPageLayout) {\n var args = new BeginPageLayoutEventArgs(currentBounds, currentPage);\n this.element.onBeginPageLayout(args);\n cancel = args.cancel;\n currentBounds = args.bounds;\n }\n return { currentBounds: currentBounds, cancel: cancel };\n };\n /**\n * Raises PageLayout event if needed.\n * @private\n */\n ShapeLayouter.prototype.raiseEndPageLayout = function (pageResult) {\n var args = null;\n if (this.element.raiseEndPageLayout) {\n var res = this.getLayoutResult(pageResult);\n args = new EndPageLayoutEventArgs(res);\n this.element.onEndPageLayout(args);\n }\n return args;\n };\n /**\n * Creates layout result.\n * @private\n */\n ShapeLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfLayoutResult(pageResult.page, pageResult.bounds);\n return result;\n };\n /**\n * Calculates the next active shape bounds.\n * @private\n */\n ShapeLayouter.prototype.getNextShapeBounds = function (shapeLayoutBounds, pageResult) {\n var layoutedBounds = pageResult.bounds;\n shapeLayoutBounds.y = (shapeLayoutBounds.y + layoutedBounds.height);\n shapeLayoutBounds.height = (shapeLayoutBounds.height - layoutedBounds.height);\n return shapeLayoutBounds;\n };\n /**\n * Layouts the element on the current page.\n * @private\n */\n ShapeLayouter.prototype.layoutOnPage = function (currentPage, curBounds, sBounds, param) {\n var result = new ShapeLayoutResult();\n curBounds = this.checkCorrectCurrentBounds(currentPage, curBounds, param);\n var fitToPage = this.fitsToBounds(curBounds, sBounds);\n var canDraw = !((param.format.break === PdfLayoutBreakType.FitElement)\n && (!fitToPage && (currentPage === param.page)));\n var shapeFinished = false;\n if (canDraw) {\n var drawRectangle = this.getDrawBounds(curBounds, sBounds);\n this.drawShape(currentPage.graphics, curBounds, drawRectangle);\n result.bounds = this.getPageResultBounds(curBounds, sBounds);\n shapeFinished = ((curBounds.height) >= (sBounds.height));\n }\n result.end = (shapeFinished || (param.format.layout === PdfLayoutType.OnePage));\n result.page = currentPage;\n return result;\n };\n /**\n * Returns Rectangle for element drawing on the page.\n * @private\n */\n ShapeLayouter.prototype.getDrawBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.y = (result.y - shapeLayoutBounds.y);\n result.height = (result.height + shapeLayoutBounds.y);\n return result;\n };\n /**\n * Draws the shape.\n * @private\n */\n ShapeLayouter.prototype.drawShape = function (g, currentBounds, drawRectangle) {\n var gState = g.save();\n try {\n g.setClip(currentBounds);\n this.element.drawGraphicsHelper(g, new PointF(drawRectangle.x, drawRectangle.y));\n }\n finally {\n g.restore(gState);\n }\n };\n /**\n * Corrects current bounds on the page.\n * @protected\n */\n ShapeLayouter.prototype.checkCorrectCurrentBounds = function (currentPage, curBounds, param) {\n var pageSize = currentPage.graphics.clientSize;\n curBounds.width = (curBounds.width > 0) ? curBounds.width : (pageSize.width - curBounds.x);\n curBounds.height = (curBounds.height > 0) ? curBounds.height : (pageSize.height - curBounds.y);\n if (this.isPdfGrid) {\n curBounds.height = (curBounds.height - this.bottomCellPadding);\n }\n return curBounds;\n };\n /**\n * Calculates bounds where the shape was layout on the page.\n * @private\n */\n ShapeLayouter.prototype.getPageResultBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.height = Math.min(result.height, shapeLayoutBounds.height);\n return result;\n };\n /**\n * Checks whether shape rectangle fits to the lay outing bounds.\n * @private\n */\n ShapeLayouter.prototype.fitsToBounds = function (currentBounds, shapeLayoutBounds) {\n var fits = (shapeLayoutBounds.height <= currentBounds.height);\n return fits;\n };\n /**\n * Initializes the offset `index`.\n * * @default 0\n * @private\n */\n ShapeLayouter.index = 0;\n /**\n * Initializes the `difference in page height`.\n * * @default 0\n * @private\n */\n ShapeLayouter.splitDiff = 0;\n /**\n * Determines the `end of Vertical offset` values.\n * * @default false\n * @private\n */\n ShapeLayouter.last = false;\n /**\n * Determines the document link annotation `border width`.\n * * @default 0\n * @private\n */\n ShapeLayouter.borderWidth = 0;\n return ShapeLayouter;\n}(ElementLayouter));\nexport { ShapeLayouter };\n/**\n * Contains lay outing result settings.\n * @private\n */\nvar ShapeLayoutResult = /** @class */ (function () {\n function ShapeLayoutResult() {\n }\n return ShapeLayoutResult;\n}());\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLayoutElement } from './../layout-element';\nimport { ShapeLayouter } from './shape-layouter';\n/**\n * Base class for the main shapes.\n * @private\n */\nvar PdfShapeElement = /** @class */ (function (_super) {\n __extends(PdfShapeElement, _super);\n function PdfShapeElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // methods\n /**\n * Gets the bounds.\n * @private\n */\n PdfShapeElement.prototype.getBounds = function () {\n var rect = this.getBoundsInternal();\n return rect;\n };\n /**\n * `drawGraphicsHelper` the graphics.\n * @public\n */\n PdfShapeElement.prototype.drawGraphicsHelper = function (graphics, location) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n this.drawShapeHelper(graphics, location.x, location.y);\n };\n /**\n * `drawShapeHelper` the graphics.\n * @private\n */\n PdfShapeElement.prototype.drawShapeHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0.5 || y !== 0.5);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n /**\n * Layouts the element.\n * @private\n */\n PdfShapeElement.prototype.layout = function (param) {\n var layouter = new ShapeLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n return PdfShapeElement;\n}(PdfLayoutElement));\nexport { PdfShapeElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfDrawElement.ts class for EJ2-PDF\n */\nimport { PdfShapeElement } from './pdf-shape-element';\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfDrawElement = /** @class */ (function (_super) {\n __extends(PdfDrawElement, _super);\n /**\n * Initializes a new instance of the `PdfDrawElement` class.\n * @protected\n */\n function PdfDrawElement(pen) {\n var _this = _super.call(this) || this;\n if (typeof pen !== 'undefined') {\n _this.mpen = pen;\n }\n return _this;\n }\n Object.defineProperty(PdfDrawElement.prototype, \"pen\", {\n // Properties\n /**\n * Gets or sets a pen that will be used to draw the element.\n * @public\n */\n get: function () {\n return this.mpen;\n },\n set: function (value) {\n this.mpen = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDrawElement;\n}(PdfShapeElement));\nexport { PdfDrawElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfFillElement.ts class for EJ2-PDF\n */\nimport { PdfDrawElement } from './draw-element';\nimport { PdfPen } from './../../pdf-pen';\nimport { PdfColor } from './../../pdf-color';\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfFillElement = /** @class */ (function (_super) {\n __extends(PdfFillElement, _super);\n /**\n * Initializes a new instance of the `PdfFillElement` class.\n * @protected\n */\n function PdfFillElement(arg1, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store pen.\n * @private\n */\n _this.mbrush = null;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n }\n else {\n _this.mbrush = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfFillElement.prototype, \"brush\", {\n // Properties\n /**\n * Gets or sets a brush of the element.\n * @public\n */\n get: function () {\n return this.mbrush;\n },\n set: function (value) {\n this.mbrush = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets the pen. If both pen and brush are not explicitly defined, default pen will be used.\n * @protected\n */\n PdfFillElement.prototype.obtainPen = function () {\n return ((this.mbrush == null) && (this.pen == null)) ? new PdfPen(new PdfColor(0, 0, 0)) : this.pen;\n };\n return PdfFillElement;\n}(PdfDrawElement));\nexport { PdfFillElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Path.ts class for EJ2-PDF\n */\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutFormat } from './../figures/base/element-layouter';\nimport { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PathPointType } from './enum';\nimport { PdfFillElement } from './../figures/base/fill-element';\nimport { PdfFillMode } from './../enum';\n/**\n * `PdfPath` class Implements graphics path, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfPath = /** @class */ (function (_super) {\n __extends(PdfPath, _super);\n /**\n * Initializes a new instance of the `PdfPath` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfPath(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the points.\n * @private\n */\n _this.mpoints = null;\n /**\n * Local variable to store the path Types.\n * @private\n */\n _this.mpathTypes = null;\n /**\n * Local variable to store the Start Figure.\n * @private\n */\n _this.mStartFigure = true;\n /**\n * Local variable to store the fill Mode.\n * @private\n */\n _this.mfillMode = PdfFillMode.Alternate;\n /**\n * Local variable to store the Beziers.\n * @private\n */\n _this.isBeziers3 = false;\n /**\n * Local variable to store the xps.\n * @private\n */\n _this.isXps = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n if (arg2 instanceof PdfBrush) {\n _this = _super.call(this, arg1, arg2) || this;\n _this.fillMode = arg3;\n }\n else if (arg2 !== null && typeof arg2 !== 'undefined' && arg3 !== null && typeof arg3 !== 'undefined') {\n _this.addPath(arg2, arg3);\n }\n }\n else if (arg1 instanceof PdfBrush) {\n _this = _super.call(this, arg1) || this;\n if (arg2 !== null && typeof arg2 !== 'undefined') {\n _this.fillMode = arg2;\n }\n if (arg3 !== null && typeof arg3 !== 'undefined' && arg4 !== null && typeof arg4 !== 'undefined') {\n _this.addPath(arg3, arg4);\n }\n }\n else {\n _this.addPath(arg1, arg2);\n }\n return _this;\n }\n Object.defineProperty(PdfPath.prototype, \"fillMode\", {\n // Properties\n /**\n * Gets or sets the fill mode.\n * @public\n */\n get: function () {\n return this.mfillMode;\n },\n set: function (value) {\n this.mfillMode = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathPoints\", {\n /**\n * Gets the path points.\n * @public\n */\n get: function () {\n return this.points;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathTypes\", {\n /**\n * Gets the path point types.\n * @public\n */\n get: function () {\n return this.types;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pointCount\", {\n /**\n * Gets the point count.\n * @public\n */\n get: function () {\n var count = 0;\n if ((this.mpoints != null)) {\n count = this.mpoints.length;\n }\n return count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"lastPoint\", {\n /**\n * Gets the last points.\n * @public\n */\n get: function () {\n return this.getLastPoint();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"points\", {\n /**\n * Gets the points list.\n * @private\n */\n get: function () {\n if ((this.mpoints == null)) {\n this.mpoints = [];\n }\n return this.mpoints;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"types\", {\n /**\n * Gets the types.\n * @private\n */\n get: function () {\n if ((this.mpathTypes == null)) {\n this.mpathTypes = [];\n }\n return this.mpathTypes;\n },\n enumerable: true,\n configurable: true\n });\n PdfPath.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (arg1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(arg1, layoutRect, arg4);\n }\n else if (arg2 instanceof RectangleF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2, arg3);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n PdfPath.prototype.addArc = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addArc(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n var points = this.getBezierArcPoints(arg1, arg2, (arg2 + arg3), (arg2 + arg4), arg5, arg6);\n for (var i = 0; i < points.length; i = i + 8) {\n /* tslint:disable-next-line:max-line-length */\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.addPoints(point, PathPointType.Bezier3);\n }\n }\n };\n /* tslint:disable-next-line:max-line-length */\n PdfPath.prototype.addBezier = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF && arg4 instanceof PointF) {\n this.addBezier(arg1.x, arg1.y, arg2.x, arg2.y, arg3.x, arg3.y, arg4.x, arg4.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n points.push(arg5);\n points.push(arg6);\n points.push(arg7);\n points.push(arg8);\n this.addPoints(points, PathPointType.Bezier3);\n }\n };\n PdfPath.prototype.addEllipse = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.addEllipse(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, 0, 360);\n this.closeFigure();\n }\n };\n PdfPath.prototype.addLine = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof PointF && arg2 instanceof PointF) {\n this.addLine(arg1.x, arg1.y, arg2.x, arg2.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n this.addPoints(points, PathPointType.Line);\n }\n };\n PdfPath.prototype.addPath = function (arg1, arg2) {\n if (arg1 instanceof PdfPath) {\n this.addPath(arg1.pathPoints, arg1.pathTypes);\n }\n else {\n if ((arg1 == null)) {\n throw new Error('ArgumentNullException:pathPoints');\n }\n if ((arg2 == null)) {\n throw new Error('ArgumentNullException:pathTypes');\n }\n var count = arg1.length;\n if ((count !== arg2.length)) {\n throw new Error('The argument arrays should be of equal length.');\n }\n }\n };\n PdfPath.prototype.addPie = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addPie(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, arg5, arg6);\n this.addPoint(new PointF((arg1 + (arg3 / 2)), (arg2 + (arg4 / 2))), PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * `add a polygon` specified by points.\n * @param points The points of the polygon\n */\n PdfPath.prototype.addPolygon = function (points) {\n var count = (points.length * 2);\n var p = [];\n this.startFigure();\n for (var i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n }\n this.addPoints(p, PathPointType.Line);\n this.closeFigure();\n };\n PdfPath.prototype.addRectangle = function (arg1, y, width, height) {\n if (arg1 instanceof RectangleF) {\n this.addRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n var points = [];\n this.startFigure();\n points.push(arg1);\n points.push(y);\n points.push((arg1 + width));\n points.push(y);\n points.push((arg1 + width));\n points.push((y + height));\n points.push(arg1);\n points.push((y + height));\n this.addPoints(points, PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * Starts a new figure.\n * @public\n */\n PdfPath.prototype.startFigure = function () {\n this.mStartFigure = true;\n };\n /**\n * Closed all non-closed figures.\n * @public\n */\n PdfPath.prototype.closeAllFigures = function () {\n var startPath = this.pathPoints[0];\n for (var i = 0; i < this.mpathTypes.length; i++) {\n var pt = ((this.types[i]));\n var flag = false;\n if (((i !== 0) && (pt === PathPointType.Start))) {\n this.closeFigure((i - 1));\n flag = true;\n }\n else if (((i === (this.mpathTypes.length - 1)) && (!flag && this.isXps))) {\n if ((startPath.x === this.pathPoints[i].y)) {\n this.closeFigure(i);\n }\n }\n }\n };\n /**\n * Gets the last point.\n * @public\n */\n PdfPath.prototype.getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this.pointCount;\n if (((count > 0) && (this.mpoints != null))) {\n lastPoint.x = this.mpoints[(count - 1)].x;\n lastPoint.y = this.mpoints[(count - 1)].y;\n }\n return lastPoint;\n };\n /**\n * Gets the bezier points for arc constructing.\n * @public\n */\n PdfPath.prototype.getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n /**\n * `getBoundsInternal` Returns a rectangle that bounds this element.\n * @public\n */\n PdfPath.prototype.getBoundsInternal = function () {\n var points = this.pathPoints;\n var bounds = new RectangleF(0, 0, 0, 0);\n if ((points.length > 0)) {\n var xmin = points[0].x;\n var xmax = points[0].x;\n var ymin = points[0].y;\n var ymax = points[0].y;\n for (var i = 1; i < points.length; i++) {\n var point = points[i];\n xmin = Math.min(point.x, xmin);\n xmax = Math.max(point.x, xmax);\n ymin = Math.min(point.y, ymin);\n ymax = Math.max(point.y, ymax);\n }\n bounds = new RectangleF(xmin, ymin, (xmax - xmin), (ymax - ymin));\n }\n return bounds;\n };\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n * @public\n */\n PdfPath.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n graphics.drawPath(this.obtainPen(), this.brush, this);\n };\n PdfPath.prototype.addPoints = function (points, pointType, startIndex, endIndex) {\n if (typeof startIndex === 'undefined' && typeof endIndex === 'undefined') {\n this.addPoints(points, pointType, 0, points.length);\n }\n else {\n for (var i = startIndex; i < endIndex; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if ((i === startIndex)) {\n if (((this.pointCount <= 0) || this.mStartFigure)) {\n this.addPoint(point, PathPointType.Start);\n this.mStartFigure = false;\n }\n else if (((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y) && !this.isBeziers3)) {\n this.addPoint(point, PathPointType.Line);\n }\n else if ((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y)) {\n this.addPoint(point, PathPointType.Bezier3);\n }\n }\n else {\n this.addPoint(point, pointType);\n }\n i++;\n }\n }\n };\n /**\n * `add a point` Adds the point and its type\n * @param points The points.\n * @param pointType Type of the points.\n * @private\n */\n PdfPath.prototype.addPoint = function (point, pointType) {\n this.points.push(point);\n this.types.push((pointType));\n };\n PdfPath.prototype.closeFigure = function (index) {\n if (typeof index === 'undefined') {\n if ((this.pointCount > 0)) {\n this.closeFigure(this.pointCount - 1);\n }\n this.startFigure();\n }\n else {\n if ((index < 0)) {\n throw new Error('IndexOutOfRangeException()');\n }\n var pt = ((this.types[index]));\n pt = (pt | PathPointType.CloseSubpath);\n this.types[index] = (pt);\n }\n };\n return PdfPath;\n}(PdfFillElement));\nexport { PdfPath };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPen } from './../pdf-pen';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { PdfFillElement } from './../figures/base/fill-element';\n/**\n * `PdfRectangleArea` class Implements graphics rectangle area, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfRectangleArea = /** @class */ (function (_super) {\n __extends(PdfRectangleArea, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfRectangleArea(arg1, arg2, arg3, arg4, arg5, arg6) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * public variable to store the rectangle.\n * @public\n */\n _this.bounds = new RectangleF(0, 0, 0, 0);\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1, arg2) || this;\n if (arg3 instanceof RectangleF) {\n _this.bounds = arg3;\n }\n else {\n _this.bounds = new RectangleF(arg3, arg4, arg5, arg6);\n }\n }\n else if (arg1 instanceof RectangleF) {\n _this.bounds = arg1;\n }\n else {\n _this.bounds = new RectangleF(arg1, arg2, arg3, arg4);\n }\n return _this;\n }\n Object.defineProperty(PdfRectangleArea.prototype, \"x\", {\n //Properties\n /**\n * Gets or sets the X co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.x;\n },\n set: function (value) {\n this.bounds.x = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"y\", {\n /**\n * Gets or sets the Y co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.y;\n },\n set: function (value) {\n this.bounds.y = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"width\", {\n /**\n * Gets or sets the width of this element.\n * @public\n */\n get: function () {\n return this.bounds.width;\n },\n set: function (value) {\n this.bounds.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"height\", {\n /**\n * Gets or sets the height of this element.\n * @public\n */\n get: function () {\n return this.bounds.height;\n },\n set: function (value) {\n this.bounds.height = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n PdfRectangleArea.prototype.getBoundsInternal = function () {\n return this.bounds;\n };\n return PdfRectangleArea;\n}(PdfFillElement));\nexport { PdfRectangleArea };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPen } from './../pdf-pen';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { PdfRectangleArea } from './rectangle-area';\n/**\n * `PdfEllipsePart` class Implements graphics ellipse part, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfEllipsePart = /** @class */ (function (_super) {\n __extends(PdfEllipsePart, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfEllipsePart(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * public variable to store the start angle.\n * @public\n */\n _this.startAngle = 0;\n /**\n * public variable to store the sweep angle.\n * @public\n */\n _this.sweepAngle = 0;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof RectangleF && typeof arg2 !== 'undefined' && typeof arg3 !== 'undefined') {\n _this = _super.call(this, arg1) || this;\n _this.startAngle = arg2;\n _this.sweepAngle = arg3;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg3 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n _this.startAngle = arg4;\n _this.sweepAngle = arg5;\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n _this.startAngle = arg7;\n _this.sweepAngle = arg8;\n }\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4) || this;\n _this.startAngle = arg5;\n _this.sweepAngle = arg6;\n }\n return _this;\n }\n return PdfEllipsePart;\n}(PdfRectangleArea));\nexport { PdfEllipsePart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * arc.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutFormat } from './../figures/base/element-layouter';\nimport { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfEllipsePart } from './../figures/ellipse-part';\n/**\n * `PdfArc` class Implements graphics arc, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfArc = /** @class */ (function (_super) {\n __extends(PdfArc, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfArc(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n var _this = this;\n if (typeof arg1 === 'undefined') {\n _this = _super.call(this) || this;\n }\n else if (arg1 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg2 instanceof RectangleF) {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4) || this;\n }\n else if (typeof arg6 === 'undefined' && typeof arg7 === 'undefined') {\n _this = _super.call(this, arg1, null, 0, 0, arg2, arg3, arg4, arg5) || this;\n }\n else if (typeof arg6 !== 'undefined' && typeof arg7 !== 'undefined') {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4, arg5, arg6, arg7) || this;\n }\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 === 'undefined' && typeof arg6 === 'undefined') {\n _this = _super.call(this, 0, 0, arg1, arg2, arg3, arg4) || this;\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 !== 'undefined' && typeof arg6 !== 'undefined') {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n }\n return _this;\n }\n PdfArc.prototype.draw = function (argu1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(argu1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(argu1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (argu1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(argu1, layoutRect, arg4);\n }\n else {\n return this.drawHelper(argu1, arg2, arg3);\n }\n };\n // Implementation\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n *\n */\n PdfArc.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException : graphics');\n }\n graphics.drawArc(this.obtainPen(), this.bounds, this.startAngle, this.sweepAngle);\n };\n return PdfArc;\n}(PdfEllipsePart));\nexport { PdfArc };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = this.convertSign(actualBounds.y);\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = this.convertSign(actualBounds.x);\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = this.convertSign(actualBounds.x);\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = actualSize.height - actualBounds.y;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Ignore value zero, otherwise convert sign.\n * @private\n */\n PdfPageTemplateElement.prototype.convertSign = function (value) {\n return (value !== 0 || (value === 0 && 1 / value === -Infinity)) ? -value : value;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n"],"names":["defaultToString","item","Object","prototype","toString","call","Dictionary","toStringFunction","this","table","nElements","toStr","getValue","key","pair","value","setValue","k","remove","previousElement","keys","keysArray","namesOfKeys","index1","length","pair1","push","values","valuesArray","namesOfValues","index2","pair2","containsKey","clear","size","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","defineProperty","get","status6","set","enumerable","configurable","index6","val","save","writer","write","escapeString","clone","crossTable","newName","stringValue","result","i","len_1","ch","delimiters","indexOf","c","replacements","Operators","forTest","obj","endObj","r","whiteSpace","slash","newLine","stream","endStream","xref","f","n","trailer","startxref","eof","header","beginText","endText","beginPath","appendLineSegment","stroke","fill","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","count","resources","type","mediaBox","parent","root","decodeParms","filter","font","type1","baseFont","encoding","subtype","contents","procset","colorSpace","extGState","pattern","xObject","width","height","bitsPerComponent","image","dctdecode","columns","blackIs1","s","predictor","deviceRgb","next","action","link","a","annot","p","rect","uri","annots","ca","CA","xyz","fit","dest","BM","flatedecode","rotate","bBox","form","w","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","fontName","flags","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","maxWidth","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","background","shading","matrix","antiAlias","function","extend","shadingType","coords","domain","range","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","viewerPreferences","centerWindow","displayTitle","fitWindow","hideMenuBar","hideToolBar","hideWindowUI","pageMode","pageLayout","duplex","printScaling","PdfDictionary","dictionary","position7","primitiveItems","prefix","suffix","object","archive","isResource","encrypt","dictionaryProperties","items","index","status","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","onBeginSave","beginSave","sender","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","state","bRaiseEvent","Count","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","integer","status5","isSaving5","index5","intValue","floatToString","number","returnString","toFixed","min","x","y","z","Math","PdfArray","array","startMark","endMark","position9","clonedObject9","isFont","internalElements","tempArray","elements","tempNumberArray","pdfNumber","add","status9","isSaving9","index9","pdfCrossTable","element","markedChange","contains","tempElement","inputElement","getItems","len","newArray","fromRectangle","bounds","insert","tempElements","markChanged","removeAt","__extends","extendStatics","setPrototypeOf","__proto__","Array","d","b","hasOwnProperty","__","constructor","create","PdfStream","_super","data","_this","dicPrefix","dicSuffix","clonedObject2","bCompress","dataStream2","bCompress2","clearStream","internalStream","text","Error","writeBytes","String","fromCharCode","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","charCodeAt","dataArray","Uint8Array","sw","CompressedStreamWriter","close","getCompressedString","addFilter","filterName","PdfReferenceHolder","name","bytesToString","output","SaveCmapEventHandler","SaveFontProgramEventHandler","InternalEnum","ForceEncoding","SourceType","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","bytes","undefined","encode","Ascii","pdfEncode","stringMark","escapeSymbols","currentData","CrossTable","newString","toUnicodeArray","bAddPrefix","code","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","Number","status3","isSaving3","obj1","obj2","index4","position4","objectIndex","initialize","status4","isSaving4","primitiveObject","pdfReference","tempObj","position","cTable","document","isSaving","getReference","PdfAction","pdfDictionary","PdfUriAction","uniformResourceIdentifier","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","g","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","isEmpty","str","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","m","toArray","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","left","top","right","bottom","topLeft","PdfBrush","PdfSolidBrush","color","pdfColor","monitorChanges","brush","streamWriter","getResources","saveChanges","currentColorSpace","diff","setColorAndSpace","resetChanges","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","textAlignment","verticalAlignment","direction","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","clip","pdfSubSuperScript","None","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","currentPosition","getCharsCount","symbols","numSymbols","curIndex","readLine","pos","substr","text2","peekLine","line","readWord","peekWord","word","read","end","num","builder","peek","readToEnd","symbol","tab","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","layout","arg5","arg6","arg7","clientSize","doLayout","format","rectSize","pageHeight","rectangle","reader","PdfStringLayoutResult","lineResult","lines","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","success","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineWidth","lineType","LineType","FirstParagraphLine","round","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","substring","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","info","LineInfo","actualSize","max","allowPartialLines","lineLimit","maxHeight","expHeight","lineHeight","trimLine","size1","rightToLeft","trim","empty","content","PdfFont","style","fontStyle","Regular","fontSize","setStyle","metrics","getHeight","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","temparg2","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","wordSpacing","charSizeMultiplier","syncObject","PdfWriter","pdfDocument","buffer","overload","tempOverload","ObjectStatus","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","reference","wasNew","trySetReference","found","setReference","destroy","_i","_a","pdfObject","objectCollectionIndex","PdfDocumentBase","isStreamCopied","PdfDocument","objects","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","setCatalog","catalog","filename","Encoding","SW","StreamWriter","encoding_1","SW_1","Promise","resolve","reject","blobData","Blob","docSave","ObjectType","PdfBoolean","objectStatus","saving","boolToStr","PdfViewerPreferences","_dictionaryProperties","_centerWindow","_fitWindow","_displayTitle","_splitWindow","_hideMenuBar","_hideToolBar","_hideWindowUI","_pageMode","PdfPageMode","UseNone","_pageLayout","PdfPageLayout","SinglePage","_dictionary","_duplex","DuplexMode","_catalog","_mapPageMode","_mapDuplexMode","_mapPageLayout","_pageScaling","PageScalingMode","AppDefault","mode","Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","UseOutlines","UseThumbs","FullScreen","UseOC","UseAttachments","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","PdfCatalog","sections","tempDictionaryProperties","_viewerPreferences","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","getItem","offset","generation","isFree","addOffsetLength","addGenNumberLength","total","split","version","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","RegisteredObject","dereference","rh","tempOffset","offsetNumber","tempReference","Normal","PdfPageSize","letter","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","pageSize","rotateAngle","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","orientation","updateSize","Landscape","settings","getActualSize","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","showNextLineText","setColorSpace","temparg1","op","opcode","start","updateY","arg","string","writeComment","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","returnValue","appendBezierSegment","setColourWithPattern","colours","patternName","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","pen","getPattern","dashOffset","dashPattern","PdfTransformationMatrix","radDegFactor","PI","transformationMatrix","Matrix","translate","offsetX","offsetY","scale","scaleX","scaleY","angle","cos","sin","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","radians","metrixElements","transform","point","x2","y2","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","ReferenceError","RangeError","splice","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","restore","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","location","scalingX","scalingY","getFont","stringFormat","draw","location_1","PdfAutomaticFieldInfo","getSize","getBrush","defaultFont","getPageFromGraphics","page","currentPage","field","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","DataView","readByte","getBuffer","writeFromBase64String","base64","arr","encodedString","input","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","replace","charAt","byteLength","readNextTwoBytes","ImageFormat","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","Unknown","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","internalBuffer","checkIfJpeg","TypeError","Jpeg","parseJpegImage","reset","imgData","isLengthExceed","skip","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","imageStream","tempString","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","temp","marker","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","from","to","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","TtfTableInfo","checksum","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","charCode","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","length_1","internalPosition","writeShort","flush","writeInt","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","MAX_VALUE","tableKeys","shift","tableInfo","getTable","formatSelector","readUInt16","recordsCount","nameRecords","record","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","created","readInt64","modified","xMin","yMin","xMax","yMax","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","floor","readCmapTable","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","getWidth","macintosh","addGlyph","collection","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","j","id","Symbol","firstCode","entryCount","fontFamily","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","factor","winAscent","macAscent","winDescent","macDescent","ceil","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","space","getString","getDefaultGlyph","readLocaTable","bShort","offsets","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","sort","glyphSize","glyphSizeAligned","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","tableName","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","i_1","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","chars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result1","result2","convertString","getCharWidth","isUnicode","i1","i2","i3","i4","low","written","PdfFontMetrics","getAscent","getDescent","getLineGap","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","swt","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","random","formatName","ret","createFontDescriptor","systemInfo","createSystemInfo","descriptor","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","first","last","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","abs","isCaseChange","toUpperCase","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","shape","level","str2","st","doShape","previous","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Value","append","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexes","indexLevels","mirroringShapeCharacters","update","doMirrorShaping","res","getLogicalToVisualString","inputText","isRtl","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","reArrange","pstart","pend","types","textOrder","rtlCharacterTypes","L","LRE","LRO","R","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","B","S","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","l","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","t","byte","lt","tt","rt","RtlRenderer","openBracket","closeBracket","rtl","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","custom","fontInternal","Uint16Array","textDirection","layouted","txt","words","addChars","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","name_1","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","baseDictionary","properties","getNames","primitive","names","sName","generateName","PdfTilingBrush","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","values_1","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","box","mGraphics","name1","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","template","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","xOffset","yOffset","layer","drawPathHelper","drawRoundedRectangle","radius","diameter","arc","_pathPoints","_pathTypes","startFigure","_addArc","CloseSubpath","_drawPath","Alternate","startAngle","sweepAngle","points","_getBezierArcPoints","_addArcPoints","Bezier3","pointType","_addPoint","Start","_getLastPoint","Line","lastPoint","x1","y1","s1","e1","tmp","fragAngle","numFragments","xcen","ycen","rx","ry","halfAng","kappa","pointList","theta0","theta1","cos0","cos1","sin0","sin1","Winding","isPen","isBrush","isEvenOdd","drawImage","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","textSize","layoutedRectangle","alignment","Center","Right","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","getPages","setClip","tm","getTextRenderingMode","cs","ws","textHeight","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","tokens","token","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","underline","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","Left","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","td","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","pop","drawPath","path","pathPoints","pathTypes","fillMode","buildUpPath","drawArc","constructArcPath","cnt","typeValue","p2","p3","getBezierPoints","checkFlags","pathTypesValuesMask","startAng","getBezierArc","pt","numX1","numY1","numX2","numY2","fragAngle1","pointsList","thetaValue0","thetaValue1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","elements_1","forEach","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","isVisible","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","sign","oPage","sc","isSame","origin","clipRect","getActualBounds","pageSettings","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","list","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","destination","setPage","layoutResult","lastPosition","setColor","annotationCollection","defaultLayer","parentDocument","annotations","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","templateElement","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","pageCount","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","args","onPageAdded","document_1","getLeftIndentWidth","top_1","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","container","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","pageIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","search","group","getGroup","createNewGroup","tGroup","representative","removeGroup","slice","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","PdfStandardFont","Helvetica","isCacheEnabled","checkPagesPresence","cache","PdfStandardFontMetricsFactory","getMetrics","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","convert","getCharWidthInternal","equal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","PdfAnnotation","textBrush","textFont","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfDocumentLinkAnnotation","pdfDestination","ElementLayouter","layoutElement","getElement","param","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","default","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","remainder","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","FitElement","PdfTextWebLink","getTextPageBounds","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","elementValue","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","url","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","toLowerCase","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","stack","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","pdfTemplate","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","arguments","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfDestinationMode","PdfExtend","PdfDestination","destinationMode","Location","zoomFactor","destinationLocation","initializePrimitive","simplePage","FitToPage","PdfFunction","mDictionary","PdfSampledFunction","sizes","samples","checkParams","setDomainAndRange","setSizeAndValues","PdfLinearGradientMode","ShadingType","KnownColor","PdfBrushes","sBrushes","AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenrod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DodgerBlue","Firebrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","Goldenrod","Gray","Green","GreenYellow","Honeydew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenrodYellow","LightGray","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquamarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenrod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Transparent","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen","colorName","getColorValue","PdfBlend","precision","mFactors","mPositions","positionarray","mCount","generateColorBlend","positions","cBlend","PdfColorBlend","clrs","c1","c2","interpolate","colors","clonePdfBlend","blend","factors","gcd","u","v","iU","iV","gcdInt","mcolors","getFunction","colourComponents","getColorComponentsCount","maxComponentValue","getMaxComponentValue","setRange","func","mbrush","samplesCount","step","intervals","getIntervals","getSamplesValues","cloneColorBlend","maxValue","sampleCount","getGrayscaleSamples","getCmykSamples","getRgbSamples","getNextColor","indexHi","indexLow","getIndices","positionLow","positionHi","colorLow","colorHi","currPos","prev","PdfLinearGradientBrush","mPointStart","mPointEnd","setPoints","BackwardDiagonal","ForwardDiagonal","Horizontal","Vertical","mBoundaries","radAngle","tan","centre","p1","cp1","subPoints","choosePoint","coef","mulPoints","addPoints","mulPoint","mColours","mColourBlend","initShading","mBlend","extStart","extEnd","End","point1","point2","interpolationColors","PdfRadialGradientBrush","centerStart","radiusStart","centerEnd","radiusEnd","colorStart","colorEnd","mRadiusStart","mRadiusEnd","mColour","mColourBlends","extend1","extEnd1","pointStart","pointEnd","rBrush","PdfBorderOverlapStyle","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","PdfHorizontalOverflowType","LastPage","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","cells","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","borders","setParent","gridRowBackgroundImage","setBackgroundImage","PdfGridCell","row","cellWidth","cellHeight","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","isFinish","gridRowSpan","colSpan","gridRow","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","remaining","objectValue","PdfGrid","grid","isSingleGrid","ParentCell","isChildGrid","rowCount","rows","getRow","colCount","rowSpanExists","hasRowSpanSpan","cellStyle","measureHeight","columnSpanExists","isComplete","measureWidth","layouter","getTextFont","webLink","cellPadding","cellSpacing","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","rowSpan","cancelSubsequentSpans","allowHorizontalOverflow","rowOverflowIndex","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","allowRowBreakAcrossPages","_rowHeight","splitChildRowIndex","rowFontSplit","repeatFlag","childGrid","layoutRect","PdfGridLayouter","PdfGridLayoutFormat","LayoutFormat","Paginate","setSpan","checkSpan","childGridResult","rowBreakHeightValue","rowBreakHeight","NestedGridLayoutResult","imageBounds","drawCellBorders","borderOverlapStyle","Inside","Square","isHeader","currentColIndex","columnSpan","isCellMergeContinue","span","totalWidth","compWidth","getColumn","currentRowIndex","rowCollection","headers","totalHeight","getHeader","rowMergeComplete","calculateWidth","currentValue","cellIndex","internalWidth","tempWidth","PdfGridCellCollection","cell","tempcell","PdfGridColumn","columnWidth","isCustomWidth","PdfGridColumnCollection","internalColumns","measureColumnsWidth","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","rowHeight","rowWidth","isrowFinish","isRowSpanRowHeightSet","noOfPageCount","isRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","isHeaderRow","pdfGrid","bRowSpanExists","gridCells","rowStyle","border","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","addRow","temprow","PdfGridHeaderCollection","gridSize","isGridSplit","isRearranged","pageBounds","listOfNavigatePages","parentCellIndex","breakRow","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridColumns","gridRows","gridHeaders","gridInitialWidth","gridStyle","ispageWidth","ischildGrid","measure","parentCell","onBeginCellDraw","raiseBeginCellDraw","onEndCellDraw","raiseEndCellDraw","hasChanged","currentRow","gridLocation","currentCellIndex","maxSpan","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","padding","columnCount","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","colWidth","childGridColWidth","childheight","flag","columnRanges","currentLocation","slr","isPaginate","getFormat","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","Grid","startLocation","hType","horizontalOverflowType","determineColumnDrawRanges","startColumn","endColumn","cellWidths","availableWidth","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","drawHeader","headerHeight","headerResult","drawRow","repeatRowIndex","OnePage","getNextPageformat","repeatRow","originalHeight","rowResult","rowIndex","tempResult","raisePageLayouted","cancel","isRowBreaksNextPage","i_2","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","checkIsFisished","i_4","i_5","recalHeight","ReCalculateHeight","startIndex","endIndex","pageGraphics","location_2","totalwidth","i_6","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","NextPage","reArrangePages","FinishedDrawingCell","nextPage","pageindex","CheckIfDefaultFormat","defaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","PdfGridBeginCellDrawEventArgs","raiseAfterCellDraw","cellstyle","PdfGridEndCellDrawEventArgs","count_1","isChanged","PdfGridLayoutResult","newHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","result_1","RowLayoutResult","rowHeightWithSpan","currRowIndex","calculatedHeight","FitPage","drawRowWithBreak","repeatRowNumber","isFit","isFitToCell","location_4","cancelSpans","tempValue","currentHeight","column","calculateHeight","gridHeight","gridColumnWidth","cellstyle1","rowBreakPageHeightCellIndex","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","isCancel","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","layoutedBounds","bIsFinished","ShapeLayouter","olderPdfForm","shapeBounds","totalPageSize","shapeLayoutBounds","getBounds","ShapeLayoutResult","endArgs","getNextShapeBounds","curBounds","sBounds","checkCorrectCurrentBounds","fitToPage","fitsToBounds","shapeFinished","getDrawBounds","drawShape","getPageResultBounds","drawGraphicsHelper","bottomCellPadding","splitDiff","borderWidth","PdfShapeElement","apply","getBoundsInternal","drawShapeHelper","PdfDrawElement","mpen","PdfFillElement","obtainPen","PdfPath","mpoints","mpathTypes","mStartFigure","mfillMode","isBeziers3","isXps","addPath","getLastPoint","widthValue","addArc","getBezierArcPoints","addBezier","addEllipse","closeFigure","addLine","addPie","addPoint","addPolygon","addRectangle","closeAllFigures","startPath","pointCount","xmin","xmax","ymin","ymax","PdfRectangleArea","PdfEllipsePart","PdfArc","argu1","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","enableCache","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","convertSign","getSimpleDockBounds","getTemplateDockBounds","Infinity"],"mappings":"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CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,OAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAE7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,KAAM,MAC7CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,MAC9CR,KAAKoiD,yBAAyB5hD,SAAS,KAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD,yBAAyB5hD,SAAS,MAAO,OAC9CR,KAAKoiD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,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTjD,EAA8ByC,4BAC1B,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTzC,EAA8ByD,aAC1B,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxCzD,EAA8B6D,mBAC1B,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtB7D,KCllBPhzD,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAgCnFmyD,GAAiC,SAAU/xD,GAE3C,QAAS+xD,GAAgBmE,EAAqBjqE,EAAMonB,GAChD,GAAInT,GAAQF,EAAO5V,KAAKG,KAAM0B,MAAwB,KAAVonB,EAA2B6iD,YAA+BnE,GAAmBmE,EAAoB7iD,MAAQ/H,eAAaiI,QAAWF,IAAU9oB,IAwBvL,OAnBA2V,GAAMrG,qBAAuB,GAAItH,GAMjC2N,EAAMi2D,WAAa,UAAW,mBAAoB,mBAAoB,oBAClE,kBAAmB,iBAAkB,aAErCj2D,EAAMk2D,kBADyB,KAAxBF,EACe3qD,gBAAcymD,UAE9BkE,YAA+BnE,GACfmE,EAAoBz3B,WAGpBy3B,EAE1Bh2D,EAAMm2D,aACNn2D,EAAMo2D,sBACCp2D,EA8HX,MAxJAd,IAAU2yD,EAAiB/xD,GA4B3B/V,OAAOuC,eAAeulE,EAAgB7nE,UAAW,cAO7CuC,IAAK,WACD,MAAOlC,MAAK6rE,eAEhBxpE,YAAY,EACZC,cAAc,IAOlBklE,EAAgB7nE,UAAUmsE,WAAa,WACnC,GAAI9rE,KAAKk0C,aAAelzB,gBAAc+yB,QAAU/zC,KAAKk0C,aAAelzB,gBAAcqnD,aAAc,CAC5F,GAAIv/C,GAAQ9oB,KAAK8oB,KACjBA,MAAW/H,eAAasI,KAAOtI,eAAauI,QAC5CtpB,KAAKkpB,SAASJ,KAOtB0+C,EAAgB7nE,UAAU4mB,aAAe,SAAU3C,EAAMsB,GACrD,GAAY,MAARtB,EACA,KAAM,IAAIvN,OAAM,6BAKpB,KAAK,GAHD/M,GAAQ,EAGHpG,GAFElD,KAAKyX,KAEH,GAAGpD,GADhBuP,EAAO4jD,EAAgBwE,QAAQpoD,IACJ5iB,OAAQkC,EAAImR,EAAKnR,IAAK,CAC7C,GAAIE,GAAKwgB,EAAK1gB,EAEdoG,IADgBtJ,KAAKisE,qBAAqB7oE,EAAI8hB,GAGlD,GAAIxjB,GAAO1B,KAAKmpB,QAAQoX,QAAQrb,EAGhC,OAFA5b,IAAUuf,EAAQ2B,mBAAqB9oB,EACvC4H,EAAQtJ,KAAKoqB,oBAAoBxG,EAAMsB,EAAQ5b,IAOnDk+D,EAAgB7nE,UAAUqqB,aAAe,SAAUrhB,GAC/C,GAAIujE,IAAQ,EACRC,EAASxjE,CACb,IAAc,MAAVwjE,EAAgB,CAChB,GAAIC,GAAmBpsE,KAAKk0C,aAAei4B,EAAOj4B,WAC9Cm4B,IAAiBtrD,eAAayI,UAAYzI,eAAawI,WACvD+iD,GAActsE,KAAK8oB,MAAQujD,KAAkBF,EAAOrjD,MAAQujD,EAChEH,GAASE,GAAmBE,EAEhC,MAAOJ,IAMX1E,EAAgB7nE,UAAUosE,oBAAsB,WAGhC1/C,GAAYu7C,MAAMlB,OAAO1mE,KAErC,IAAImqB,GAAY,KAGZhB,EAAU0+C,GAA8BC,WAAW9nE,KAAK6rE,cAAe7rE,KAAK8oB,MAAO9oB,KAAK0B,KAC5F1B,MAAKmpB,QAAUA,EACfgB,EAAYnqB,KAAKq5C,kBACjBr5C,KAAKkqB,aAAaC,IAMtBq9C,EAAgB7nE,UAAU05C,gBAAkB,WACxC,GAAIxqC,GAAa,GAAID,EAIrB,IAHAC,EAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBjH,KAAM,GAAI1G,GAAQ3B,KAAKsP,qBAAqB3G,OAChGkG,EAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBvG,QAAS,GAAIpH,GAAQ3B,KAAKsP,qBAAqB1G,QACnGiG,EAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBzG,SAAU,GAAIlH,GAAQ3B,KAAKmpB,QAAQgrB,iBACnFn0C,KAAKk0C,aAAelzB,gBAAc+yB,QAAU/zC,KAAKk0C,aAAelzB,gBAAcqnD,aAAc,CAC5F,GAAIv/D,GAAW9I,KAAK4rE,UAAUxqD,eAAamrD,gBAC3C19D,GAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBxG,SAAU,GAAInH,GAAQmH,IAE9E,MAAO+F,IAMX24D,EAAgB7nE,UAAUssE,qBAAuB,SAAU1jC,EAAUrjB,GACjE,GACItL,GAAO,CAUX,OATAA,GAAO2uB,EAASxxB,WAAW,GACT,MAAd/W,KAAKyX,MAA8B,MAAdzX,KAAKyX,MAA8B,MAAdzX,KAAKyX,MACjC,MAAdzX,KAAKyX,MAA8B,MAAdzX,KAAKyX,OAC1BmC,GAAc4tD,EAAgBgF,YAElC5yD,EAAQA,GAAQ,GAAc,MAATA,EAAgBA,EAAO,EAC9B5Z,KAAKmpB,QACMosB,WACNhmC,MAAMqK,IAO7B4tD,EAAgBwE,QAAU,SAAU51D,GAChC,MAAOA,IAOXoxD,EAAgBgF,WAAa,GACtBhF,GACT3+C,GC/KE4jD,GAA+B,WAC/B,QAASA,GAAcntD,GAMnBtf,KAAKsP,qBAAuB,GAAItH,GAKhChI,KAAKqgB,SAAW,GAAI5D,GAAS,IAAK,IAAK,KAKvCzc,KAAKqlB,UAAY,GAAIhG,GAAW,EAAG,EAAG,EAAG,GAKzCrf,KAAKy8D,QAAU,KAMfz8D,KAAK0sE,UAAY,GAAIvsD,GAAc,GAAI1D,GAAS,EAAG,EAAG,IAMtDzc,KAAK2sE,SAAW,GAAInF,IAAgBxmD,gBAAcknD,WAAY,IAM9DloE,KAAKklB,OAAS,GAAItD,GAAgB9F,mBAAiBq8C,MAKnDn4D,KAAK4oB,QAAU,GAKf5oB,KAAKyb,cAAgB,GAAI7M,GAKzB5O,KAAK4sE,cAAgB,GAAInwD,GAMzBzc,KAAK6sE,SAAW,MACI,KAATvtD,EACPtf,KAAK6a,cAGL7a,KAAK6a,aACL7a,KAAKwU,OAAS8K,GAsLtB,MAnLA5f,QAAOuC,eAAewqE,EAAc9sE,UAAW,SAM3CuC,IAAK,WACD,MAAOlC,MAAKqgB,UAEhBje,IAAK,SAAU7B,GACXP,KAAKqgB,SAAW9f,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,cAK3CuC,IAAK,WACD,MAAOlC,MAAK4sE,eAEhBxqE,IAAK,SAAU7B,GACXP,KAAK4sE,cAAgBrsE,GAEzB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,UAK3CuC,IAAK,WACD,MAAOlC,MAAKqlB,WAEhBjjB,IAAK,SAAU7B,GACXP,KAAKqlB,UAAY9kB,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,QAK3CuC,IAAK,WACD,MAAOlC,MAAKy8D,SAEhBp6D,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,QAK3CuC,IAAK,WACD,MAAOlC,MAAK2sE,UAEhBvqE,IAAK,SAAU7B,GACXP,KAAK2sE,SAAWpsE,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,gBAK3CuC,IAAK,WACD,MAAOlC,MAAKklB,QAEhB9iB,IAAK,SAAU7B,GACXP,KAAKklB,OAAS3kB,GAElB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,SAK3CuC,IAAK,WACD,MAAOlC,MAAK0sE,WAEhBtqE,IAAK,SAAU7B,GACXP,KAAK0sE,UAAYnsE,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,QAK3CuC,IAAK,WACD,MAAOlC,MAAK4oB,SAEhBxmB,IAAK,SAAU7B,GACXP,KAAK4oB,QAAUroB,EACfP,KAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBtG,SAAU,GAAIiP,GAAUjY,KAAK4oB,WAE1FvmB,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewqE,EAAc9sE,UAAW,cAK3CuC,IAAK,WACD,MAAOlC,MAAKyb,eAEhBrZ,IAAK,SAAU7B,GACXP,KAAKyb,cAAgBlb,GAEzB8B,YAAY,EACZC,cAAc,IAOlBmqE,EAAc9sE,UAAUkb,WAAa,WACjC7a,KAAKyb,cAAczK,oBAAsB,GAAIW,GAA2B3R,MACxEA,KAAKyb,cAAclM,MAAM/O,SAASR,KAAKsP,qBAAqBjH,KAAM,GAAI1G,GAAQ3B,KAAKsP,qBAAqBlF,SAM5GqiE,EAAc9sE,UAAUy/D,QAAU,SAAUz+B,GACxC3gC,KAAKy8D,QAAU97B,EACf3gC,KAAKyb,cAAclM,MAAM/O,SAASR,KAAKsP,qBAAqBjF,EAAG,GAAImN,GAAmBxX,KAAKy8D,WAM/FgQ,EAAc9sE,UAAU2Q,UAAY,WAChCtQ,KAAKyC,QAOTgqE,EAAc9sE,UAAU8C,KAAO,WAC3B,GAAIqqE,GAAkB,GAAIztD,GAAWrf,KAAKqlB,UAAU3S,EAAG1S,KAAKqlB,UAAU1S,EAAG3S,KAAKqlB,UAAU/b,MAAOtJ,KAAKqlB,UAAU9b,QAC1GyrD,EAAUh1D,KAAKy8D,QAAQzH,QACvB+X,EAAgBD,EAAgBvjE,OAChCyjE,EAAgBhY,EAAQmO,iBAAiBnjE,KAAK2gC,KAAM,GAAIxhB,GAAO2tD,EAAgBp6D,EAAGo6D,EAAgBn6D,GACtGm6D,GAAgBp6D,EAAIs6D,EAAct6D,EAClCo6D,EAAgBxjE,MAAQ0jE,EAAct6D,EAAIo6D,EAAgBxjE,MAC1DwjE,EAAgBn6D,EAAKq6D,EAAcr6D,EAAI3S,KAAK2gC,KAAKtlB,SAASiiD,aAAa1mC,QAAQ9W,IAC/EgtD,EAAgBvjE,OAASujE,EAAgBn6D,EAAIo6D,EAC7C/sE,KAAKyb,cAAclM,MAAM/O,SAASR,KAAKsP,qBAAqBhF,KAAMwI,EAASyB,cAAcu4D,IACzF9sE,KAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqB7E,GAAI,GAAIqH,GAAU9R,KAAK6sE,YAEpFntE,OAAOuC,eAAewqE,EAAc9sE,UAAW,WAO3CuC,IAAK,WACD,MAAOlC,MAAKyb,eAEhBpZ,YAAY,EACZC,cAAc,IAEXmqE,KC3QP53D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QASnF43D,GAAmC,SAAUx3D,GAE7C,QAASw3D,GAAkB5nD,GACvB,MAAO5P,GAAO5V,KAAKG,KAAMqlB,IAAcrlB,KAW3C,MAbA6U,IAAUo4D,EAAmBx3D,GAS7Bw3D,EAAkBttE,UAAUkb,WAAa,WACrCpF,EAAO9V,UAAUkb,WAAWhb,KAAKG,MACjCA,KAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBvG,QAAS,GAAIpH,GAAQ3B,KAAKsP,qBAAqBpF,QAErG+iE,GACTR,IC/BE53D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAQnF63D,GAAyC,SAAUz3D,GAOnD,QAASy3D,GAAwB7nD,GAC7B,GAAI1P,GAAQF,EAAO5V,KAAKG,KAAMqlB,IAAcrlB,IAQ5C,OADA2V,GAAMw3D,UAAY,KACXx3D,EAeX,MA9BAd,IAAUq4D,EAAyBz3D,GAsBnCy3D,EAAwBvtE,UAAUytE,aAAe,SAAU7sE,GACvD,OAAqB,KAAVA,EACP,MAAOP,MAAKmtE,SAGZntE,MAAKmtE,UAAY5sE,GAGlB2sE,GACTD,IC/CEp4D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAgCnFg4D,GAA2C,SAAU53D,GAErD,QAAS43D,GAA0BhoD,EAAW85C,GAC1C,GAAIxpD,GAAQF,EAAO5V,KAAKG,KAAMqlB,IAAcrlB,IAW5C,OAJA2V,GAAM23D,eAAiB,SACI,KAAhBnO,IACPxpD,EAAMwpD,YAAcA,GAEjBxpD,EAmEX,MAhFAd,IAAUw4D,EAA2B53D,GAerC/V,OAAOuC,eAAeorE,EAA0B1tE,UAAW,eA+BvDuC,IAAK,WACD,MAAOlC,MAAKstE,gBAEhBlrE,IAAK,SAAU7B,GAEXP,KAAKstE,eAAiB/sE,GAG1B8B,YAAY,EACZC,cAAc,IAOlB+qE,EAA0B1tE,UAAU8C,KAAO,WACvCgT,EAAO9V,UAAU8C,KAAK5C,KAAKG,MACA,MAAvBA,KAAKstE,gBACLttE,KAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBzE,KAAM7K,KAAKstE,eAAev5D,UAO3Fs5D,EAA0B1tE,UAAUkD,MAAQ,WACxC,GAAIuH,GAAQ,GAAIijE,GAA0BrtE,KAAKwU,OAAQxU,KAAKm/D,YAK5D,OAJA/0D,GAAMgW,MAAQpgB,KAAKogB,MACnBhW,EAAMmW,MAAQvgB,KAAKugB,MACnBnW,EAAM+0D,YAAcn/D,KAAKm/D,YACzB/0D,EAAMzB,KAAO3I,KAAK2I,KACXyB,GAEJijE,GACTJ,ICjHEM,GAAiC,WAMjC,QAASA,GAAgBx5D,GACrB/T,KAAKwtE,cAAgBz5D,EAiDzB,MA/CArU,QAAOuC,eAAesrE,EAAgB5tE,UAAW,YAM7CuC,IAAK,WACD,MAAOlC,MAAKwtE,eAEhBnrE,YAAY,EACZC,cAAc,IAMlBirE,EAAgB5tE,UAAU8tE,WAAa,WACnC,MAAOztE,MAAKwtE,eAOhBD,EAAgB5tE,UAAUilB,OAAS,SAAU8oD,GACzC,MAAO1tE,MAAK2tE,eAAeD,IAE/BH,EAAgB5tE,UAAUiuE,SAAW,SAAUF,GAC3C,MAAO1tE,MAAK2tE,eAAeD,IAM/BH,EAAgB5tE,UAAUo1D,YAAc,SAAUn0B,GAG9C,MAFcA,GAAYo0B,QACHthD,OAG3B65D,EAAgB5tE,UAAUkuE,kBAAoB,SAAUH,GACpD,GAAc,MAATA,EACD,KAAM,IAAIr3D,OAAM,gCAIpB,OAFaq3D,GAAMxoD,OAAO4oD,kBAAoBJ,EAAMxoD,OAAO6oD,eACrD,GAAI1uD,GAAWquD,EAAMl5D,OAAO9B,EAAG,EAAGg7D,EAAMl5D,OAAOlL,MAAOokE,EAAMl5D,OAAOjL,SAGtEgkE,KAGPS,GAAiC,WACjC,QAASA,GAAgBC,OACK,KAAfA,IAIPjuE,KAAKkuE,MAAQD,EAAWC,MACxBluE,KAAK4kB,OAASqpD,EAAWrpD,OACzB5kB,KAAK+tE,eAAiBE,EAAWF,eACjC/tE,KAAKmuE,UAAYF,EAAWH,mBAsEpC,MAnEApuE,QAAOuC,eAAe+rE,EAAgBruE,UAAW,UAM7CuC,IAAK,WAID,MAAOlC,MAAKouE,YAEhBhsE,IAAK,SAAU7B,GACXP,KAAKouE,WAAa7tE,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe+rE,EAAgBruE,UAAW,SAK7CuC,IAAK,WAID,MAAOlC,MAAK6nB,WAEhBzlB,IAAK,SAAU7B,GACXP,KAAK6nB,UAAYtnB,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe+rE,EAAgBruE,UAAW,kBAK7CuC,IAAK,WAID,WAHyC,KAA9BlC,KAAKquE,sBAAqE,MAA7BruE,KAAKquE,uBACzDruE,KAAKquE,qBAAuB,GAAIhvD,GAAW,EAAG,EAAG,EAAG,IAEjDrf,KAAKquE,sBAEhBjsE,IAAK,SAAU7B,GACXP,KAAKquE,qBAAuB9tE,EAC5BP,KAAKmuE,WAAY,GAErB9rE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe+rE,EAAgBruE,UAAW,qBAK7CuC,IAAK,WAID,MAAOlC,MAAKmuE,WAEhB9rE,YAAY,EACZC,cAAc,IAEX0rE,KAGPM,GAAiC,WACjC,QAASA,MA6CT,MA3CA5uE,QAAOuC,eAAeqsE,EAAgB3uE,UAAW,QAM7CuC,IAAK,WACD,MAAOlC,MAAKy8D,SAEhBr6D,IAAK,SAAU7B,GACXP,KAAKy8D,QAAUl8D,GAEnB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqsE,EAAgB3uE,UAAW,UAK7CuC,IAAK,WACD,MAAO,IAAImd,GAAWrf,KAAKi4D,aAAavlD,EAAG1S,KAAKi4D,aAAatlD,EAAG3S,KAAKi4D,aAAa3uD,MAAOtJ,KAAKi4D,aAAa1uD,SAE/GnH,IAAK,SAAU7B,GACXP,KAAKi4D,aAAe13D,GAExB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqsE,EAAgB3uE,UAAW,UAK7CuC,IAAK,WACD,MAAOlC,MAAKuuE,cAEhBnsE,IAAK,SAAU7B,GACXP,KAAKuuE,aAAehuE,GAExB8B,YAAY,EACZC,cAAc,IAEXgsE,KAGPE,GAAiC,WAMjC,QAASA,GAAgB7tC,EAAMnsB,GAC3BxU,KAAKy8D,QAAU97B,EACf3gC,KAAKi4D,aAAezjD,EAyBxB,MAvBA9U,QAAOuC,eAAeusE,EAAgB7uE,UAAW,QAM7CuC,IAAK,WACD,MAAOlC,MAAKy8D,SAEhBp6D,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeusE,EAAgB7uE,UAAW,UAK7CuC,IAAK,WACD,MAAOlC,MAAKi4D,cAEhB51D,YAAY,EACZC,cAAc,IAEXksE,KC9NPC,GAA4B,WAM5B,QAASA,KACL,GAAIC,GAAuB,GAAI/zC,IAAO,GAAIle,GAAS,EAAG,EAAG,GACzDiyD,GAAqBC,UAAYzyD,eAAa6e,KAC9C,IAAI6zC,GAAwB,GAAIj0C,IAAO,GAAIle,GAAS,EAAG,EAAG,GAC1DmyD,GAAsBD,UAAYzyD,eAAa6e,KAC/C,IAAI8zC,GAAsB,GAAIl0C,IAAO,GAAIle,GAAS,EAAG,EAAG,GACxDoyD,GAAoBF,UAAYzyD,eAAa6e,KAC7C,IAAI+zC,GAAyB,GAAIn0C,IAAO,GAAIle,GAAS,EAAG,EAAG,GAC3DqyD,GAAuBH,UAAYzyD,eAAa6e,MAChD/6B,KAAK+uE,QAAUL,EACf1uE,KAAKgvE,SAAWJ,EAChB5uE,KAAKivE,OAASJ,EACd7uE,KAAKkvE,UAAYJ,EA4FrB,MA1FApvE,QAAOuC,eAAewsE,EAAW9uE,UAAW,QAMxCuC,IAAK,WACD,MAAOlC,MAAK+uE,SAEhB3sE,IAAK,SAAU7B,GACXP,KAAK+uE,QAAUxuE,GAEnB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAW9uE,UAAW,SAKxCuC,IAAK,WACD,MAAOlC,MAAKgvE,UAEhB5sE,IAAK,SAAU7B,GACXP,KAAKgvE,SAAWzuE,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAW9uE,UAAW,OAKxCuC,IAAK,WACD,MAAOlC,MAAKivE,QAEhB7sE,IAAK,SAAU7B,GACXP,KAAKivE,OAAS1uE,GAElB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAW9uE,UAAW,UAKxCuC,IAAK,WACD,MAAOlC,MAAKkvE,WAEhB9sE,IAAK,SAAU7B,GACXP,KAAKkvE,UAAY3uE,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAW9uE,UAAW,OAKxCyC,IAAK,SAAU7B,GACXP,KAAK+uE,QAAU/uE,KAAKgvE,SAAWhvE,KAAKivE,OAASjvE,KAAKkvE,UAAY3uE,GAElE8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAW9uE,UAAW,SAKxCuC,IAAK,WACD,MAASlC,MAAK+uE,UAAY/uE,KAAKgvE,UAAchvE,KAAK+uE,UAAY/uE,KAAKivE,QAAYjvE,KAAK+uE,UAAY/uE,KAAKkvE,WAEzG7sE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewsE,EAAY,WAK9BvsE,IAAK,WACD,MAAO,IAAIusE,IAEfpsE,YAAY,EACZC,cAAc,IAEXmsE,KAGPU,GAA6B,WAC7B,QAASA,GAAYtvD,EAAME,EAAOD,EAAKE,GAKnChgB,KAAKovE,YAAa,EAKlBpvE,KAAKqvE,aAAc,EAKnBrvE,KAAKsvE,WAAY,EAKjBtvE,KAAKuvE,cAAe,MACA,KAAT1vD,GAEP7f,KAAKwvE,QAAUxvE,KAAKyvE,SAAW,KAE/BzvE,KAAK0vE,UAAY1vE,KAAK2vE,OAAS,KAG/B3vE,KAAKwvE,QAAU3vD,EACf7f,KAAKyvE,SAAW1vD,EAChB/f,KAAK2vE,OAAS7vD,EACd9f,KAAK0vE,UAAY1vD,EACjBhgB,KAAKovE,YAAa,EAClBpvE,KAAKqvE,aAAc,EACnBrvE,KAAKsvE,WAAY,EACjBtvE,KAAKuvE,cAAe,GA+E5B,MA5EA7vE,QAAOuC,eAAektE,EAAYxvE,UAAW,QAMzCuC,IAAK,WACD,MAAOlC,MAAKwvE,SAEhBptE,IAAK,SAAU7B,GACXP,KAAKwvE,QAAUjvE,EACfP,KAAKovE,YAAa,GAEtB/sE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektE,EAAYxvE,UAAW,SAKzCuC,IAAK,WACD,MAAOlC,MAAKyvE,UAEhBrtE,IAAK,SAAU7B,GACXP,KAAKyvE,SAAWlvE,EAChBP,KAAKqvE,aAAc,GAEvBhtE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektE,EAAYxvE,UAAW,OAKzCuC,IAAK,WACD,MAAOlC,MAAK2vE,QAEhBvtE,IAAK,SAAU7B,GACXP,KAAK2vE,OAASpvE,EACdP,KAAKsvE,WAAY,GAErBjtE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektE,EAAYxvE,UAAW,UAKzCuC,IAAK,WACD,MAAOlC,MAAK0vE,WAEhBttE,IAAK,SAAU7B,GACXP,KAAK0vE,UAAYnvE,EACjBP,KAAKuvE,cAAe,GAExBltE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektE,EAAYxvE,UAAW,OAKzCyC,IAAK,SAAU7B,GACXP,KAAKwvE,QAAUxvE,KAAKyvE,SAAWzvE,KAAK2vE,OAAS3vE,KAAK0vE,UAAYnvE,EAC9DP,KAAKovE,YAAa,EAClBpvE,KAAKqvE,aAAc,EACnBrvE,KAAKsvE,WAAY,EACjBtvE,KAAKuvE,cAAe,GAExBltE,YAAY,EACZC,cAAc,IAEX6sE,KCtOPS,GAAkC,WAClC,QAASA,MAiFT,MA/EAlwE,QAAOuC,eAAe2tE,EAAiBjwE,UAAW,wBAM9CuC,IAAK,WACD,WAAwC,KAAzBlC,KAAK6vE,iBAExBxtE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe2tE,EAAiBjwE,UAAW,sBAK9CuC,IAAK,WACD,WAAsC,KAAvBlC,KAAK8vE,eAExBztE,YAAY,EACZC,cAAc,IAGlBstE,EAAiBjwE,UAAUowE,kBAAoB,SAAU3L,GACjDpkE,KAAK6vE,iBACL7vE,KAAK6vE,gBAAgB7vE,KAAMokE,IAGnCwL,EAAiBjwE,UAAUqwE,gBAAkB,SAAU5L,GAC/CpkE,KAAK8vE,eACL9vE,KAAK8vE,cAAc9vE,KAAMokE,IAGjCwL,EAAiBjwE,UAAUq/B,WAAa,SAAUzf,EAAMC,EAAMC,EAAMoF,GAChE,GAAIrF,YAAgBL,QAAgC,KAAfK,EAAKlW,WAAyC,KAATmW,EACtE,MAAOzf,MAAKg/B,WAAWzf,EAAMC,EAAK9M,EAAG8M,EAAK7M,EAEzC,IAAoB,gBAAT6M,IAAqC,gBAATC,QAAqC,KAAToF,EACpE,MAAO7kB,MAAKg/B,WAAWzf,EAAMC,EAAMC,EAAM,KAExC,IAAID,YAAgBH,QAAoC,KAAfG,EAAKlW,WAAyC,KAATmW,EAC/E,MAAOzf,MAAKg/B,WAAWzf,EAAMC,EAAM,KAElC,IAAIA,YAAgBL,QAAgC,KAAfK,EAAKlW,OAAyBmW,YAAgBuuD,IACpF,MAAOhuE,MAAKg/B,WAAWzf,EAAMC,EAAK9M,EAAG8M,EAAK7M,EAAG8M,EAE5C,IAAoB,gBAATD,IAAqC,gBAATC,KAAsBoF,YAAgBmpD,KAA2B,MAARnpD,GAAe,CAChH,GAAIvb,GAASiW,EAAK0f,SAASja,WAAW1b,MAAQkW,EAC1Cg0C,EAAkB,GAAIn0C,GAAWG,EAAMC,EAAMnW,EAAO,EACxD,OAAOtJ,MAAKg/B,WAAWzf,EAAMi0C,EAAiB3uC,GAE7C,GAAIrF,YAAgBH,QAAoC,KAAfG,EAAKlW,OAAyC,iBAATmW,GAE/E,MADAzf,MAAKiwE,YAAcxwD,EACZzf,KAAKg/B,WAAWzf,EAAMC,EAAM,KAGnC,IAAIkuD,GAAQ,GAAIY,IACZxkD,EAAWtK,EACX2vC,EAAW1vC,CAGf,IAFAiuD,EAAM/sC,KAAOphB,EACbmuD,EAAMl5D,OAASsV,EACF,MAAT4jD,EAAe,CACf,GAAIh7D,GAAIg7D,EAAMl5D,OAAO9B,EACjBC,EAAI+6D,EAAMl5D,OAAO7B,CACE,KAAnB+6D,EAAMl5D,OAAO9B,IACbA,EAAI+7D,GAAWyB,QAAQnwD,MAAMzW,MAAQ,GAElB,IAAnBokE,EAAMl5D,OAAO7B,IACbA,EAAI87D,GAAWyB,QAAQpwD,IAAIxW,MAAQ,EAEvC,IAAI6mE,GAAW,GAAI9wD,GAAW3M,EAAGC,EAAG+6D,EAAMl5D,OAAOlL,MAAOokE,EAAMl5D,OAAOjL,OACrEmkE,GAAMl5D,OAAS27D,EAInB,MAFAzC,GAAMxoD,OAAsB,MAAZiqC,EAAoBA,EAAW,GAAI6e,IACtChuE,KAAK4kB,OAAO8oD,IAI1BkC,KCzFP/6D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAgBnF+6D,GAA8B,SAAU36D,GAOxC,QAAS26D,GAAar8D,GAClB,MAAO0B,GAAO5V,KAAKG,KAAM+T,IAAY/T,KAuGzC,MA9GA6U,IAAUu7D,EAAc36D,GASxB/V,OAAOuC,eAAemuE,EAAazwE,UAAW,WAK1CuC,IAAK,WACD,MAAOuT,GAAO9V,UAAU8tE,WAAW5tE,KAAKG,OAE5CqC,YAAY,EACZC,cAAc,IAOlB8tE,EAAazwE,UAAUguE,eAAiB,SAAUD,GAE9C1tE,KAAKklB,OAAwC,OAA9BllB,KAAK+T,QAAQosB,kBAA8D,KAA9BngC,KAAK+T,QAAQosB,aAAgCngC,KAAK+T,QAAQosB,aAAe,IACrI,IAAIS,GAAc8sC,EAAM/sC,KACpB0vC,EAAgB3C,EAAMl5D,OACtB4B,EAAOpW,KAAK+T,QAAQxT,MACpB0C,EAAS,KACTqtE,EAAa,GAAIC,GAGrB,KAFAD,EAAW3vC,KAAOC,EAClB0vC,EAAWE,UAAYp6D,IACd,CACLk6D,EAAatwE,KAAKywE,aAAar6D,EAAMwqB,EAAayvC,EAAe3C,GACjEzqE,EAASjD,KAAK0wE,gBAAgBJ,EAC9B,OAGJ,MAAOrtE,IAMXmtE,EAAazwE,UAAU+wE,gBAAkB,SAAUJ,GAE/C,MADa,IAAIK,IAAoBL,EAAW3vC,KAAM2vC,EAAW97D,OAAQ87D,EAAWE,UAAWF,EAAWM,iBAQ9GR,EAAazwE,UAAU8wE,aAAe,SAAUr6D,EAAMwqB,EAAayvC,EAAe3C,GAC9E,GAAIzqE,GAAS,GAAIstE,GACjBttE,GAAOutE,UAAYp6D,EACnBnT,EAAO09B,KAAOC,EACdyvC,EAAgBrwE,KAAK6wE,mBAAmBjwC,EAAayvC,EACrD,IACIS,IADW,GAAIpsD,IACSE,OAAOxO,EAAMpW,KAAK+T,QAAQpL,KAAM3I,KAAKklB,OAAQmrD,EAAezvC,EAAYm/B,gBAAgBx2D,QAAQ,EAAO,GAAI6V,GAAM,EAAG,IAC5I2xD,EAA0C,MAA1BD,EAAaN,UAI7BvxC,GAHayuC,EAAMxoD,OAAOgpD,QAAUjmB,qBAAmB+oB,YAC9BF,EAAanoD,MAE3BiY,EAAY3B,UACvB1e,EAAQvgB,KAAK+T,QAAQysB,UACrBxgC,MAAK+T,kBAAmBk9D,MACxB1wD,EAAMH,MAAQ,GAAI3D,GAAS,EAAG,EAAG,MAErCwiB,EAASywB,uBAAuBohB,EAAc9wE,KAAK+T,QAAQpL,KAAM3I,KAAK+T,QAAQioB,IAAKzb,EAAO8vD,EAAerwE,KAAKklB,OAC/F4rD,GAAarrD,MAAMqrD,EAAard,UAAY,EAK3D,OAJAxwD,GAAO2tE,eAAiB3xC,EAASq0B,cAAcwd,EAAard,UAAY,EAAGqd,EAAc9wE,KAAK+T,QAAQpL,KAAM0nE,EAAerwE,KAAKklB,QAChIjiB,EAAOuR,OAASxU,KAAKkxE,kBAAkBtwC,EAAayvC,EAAeS,GACnE7tE,EAAOutE,UAAYM,EAAaN,UAChCvtE,EAAOghB,MACAhhB,GAOXmtE,EAAazwE,UAAUkxE,mBAAqB,SAAUjwC,EAAayvC,GAC/D,GAAIv5C,GAAW8J,EAAY3B,SAASja,UAEpC,OADAqrD,GAAc9mE,OAAU8mE,EAAc9mE,OAAS,EAAK8mE,EAAc9mE,OAASutB,EAASvtB,OAAS8mE,EAAc19D,EACpG09D,GAOXD,EAAazwE,UAAUuxE,kBAAoB,SAAUtwC,EAAayvC,EAAeS,GAC7E,GAAIhd,GAAWgd,EAAa9oD,WACxBtV,EAAI29D,EAAc39D,EAClBC,EAAI09D,EAAc19D,EAClBrJ,EAAS+mE,EAAc/mE,MAAQ,EAAK+mE,EAAc/mE,MAAQwqD,EAASxqD,MACnEC,EAASuqD,EAASvqD,MAGtBmJ,GAFkBkuB,EAAY3B,SAASwwB,4BAA4BqE,EAAUuc,EAAc39D,EAAG29D,EAAc19D,EAAG3S,KAAKklB,QAEpGxS,CAEhB,IAAIy+D,GAAgBvwC,EAAY3B,SAASy0B,0BAA0BI,EAASvqD,OAAQ8mE,EAAc9mE,OAAQvJ,KAAKklB,OAG/G,OADa,IAAI7F,GAAW3M,EAD5BC,GAAKw+D,EAC6B7nE,EAAOC,IAGtC6mE,GACT7C,IAEEgD,GAAsC,WACtC,QAASA,MAET,MAAOA,MAGPI,GAAqC,SAAUl7D,GAO/C,QAASk7D,GAAoBhwC,EAAMnsB,EAAQg8D,EAAWI,GAClD,GAAIj7D,GAAQF,EAAO5V,KAAKG,KAAM2gC,EAAMnsB,IAAWxU,IAG/C,OAFA2V,GAAMy7D,cAAgBZ,EACtB76D,EAAM07D,mBAAqBT,EACpBj7D,EAyBX,MAnCAd,IAAU87D,EAAqBl7D,GAY/B/V,OAAOuC,eAAe0uE,EAAoBhxE,UAAW,aAMjDuC,IAAK,WACD,MAAOlC,MAAKoxE,eAEhB/uE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0uE,EAAoBhxE,UAAW,kBAKjDuC,IAAK,WACD,MAAOlC,MAAKqxE,oBAEhBhvE,YAAY,EACZC,cAAc,IAEXquE,GACTnC,ICpLE35D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAwBnFi8D,GAAgC,SAAU77D,GAE1C,QAAS67D,GAAehyD,EAAMC,EAAMC,EAAMC,EAAMoF,GAC5C,GAAIlP,GAAQF,EAAO5V,KAAKG,OAASA,IAwDjC,OAlDA2V,GAAMiT,QAAU,GAKhBjT,EAAM47D,aAAe,GAMrB57D,EAAM67D,kBAAmB,EAMzB77D,EAAM87D,kBAAmB,MACL,KAATnyD,IAGc,gBAATA,QAAqC,KAATC,GACxC5J,EAAMiT,QAAUtJ,EAChB3J,EAAM47D,aAAejyD,GAEA,gBAATA,IAAqBC,YAAgBsJ,QAA2B,KAATrJ,GACnE7J,EAAMiT,QAAUtJ,EAChB3J,EAAM47D,aAAejyD,EACrB3J,EAAMqmD,QAAUz8C,GAEK,gBAATD,IAAqBC,YAAgBsJ,IAAWrJ,YAAgBmb,SAA0B,KAATlb,GAC7F9J,EAAMiT,QAAUtJ,EAChB3J,EAAM47D,aAAejyD,EACrB3J,EAAMqmD,QAAUz8C,EAChB5J,EAAMomD,OAASv8C,GAEM,gBAATF,IAAqBC,YAAgBsJ,IAAWrJ,YAAgBU,QAA4B,KAATT,GAC/F9J,EAAMiT,QAAUtJ,EAChB3J,EAAM47D,aAAejyD,EACrB3J,EAAMqmD,QAAUz8C,EAChB5J,EAAMgmB,SAAWnc,IAGjB7J,EAAMiT,QAAUtJ,EAChB3J,EAAM47D,aAAejyD,EACrB3J,EAAMqmD,QAAUz8C,EAChB5J,EAAMomD,OAASv8C,EACf7J,EAAMgmB,SAAWlc,EACjB9J,EAAMuP,OAASL,IAEZlP,EAiUX,MA3XAd,IAAUy8D,EAAgB77D,GA4D1B/V,OAAOuC,eAAeqvE,EAAe3xE,UAAW,QA6B5CuC,IAAK,WACD,MAAOlC,MAAK4oB,SAEhBxmB,IAAK,SAAU7B,GACXP,KAAKuxE,aAAehxE,EACpBP,KAAK4oB,QAAUroB,GAEnB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqvE,EAAe3xE,UAAW,SAM5CuC,IAAK,WACD,MAAOlC,MAAKuxE,cAEhBlvE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqvE,EAAe3xE,UAAW,OAM5CuC,IAAK,WACD,MAAOlC,MAAK+7D,QAGhB35D,IAAK,SAAU7B,GACXP,KAAK+7D,OAASx7D,GAElB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqvE,EAAe3xE,UAAW,SAM5CuC,IAAK,WACD,MAAOlC,MAAK27B,UAGhBv5B,IAAK,SAAU7B,GACXP,KAAK27B,SAAWp7B,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqvE,EAAe3xE,UAAW,QA6B5CuC,IAAK,WACD,MAAOlC,MAAKg8D,SAEhB55D,IAAK,SAAU7B,GACXP,KAAKg8D,QAAUz7D,EACXP,KAAKg8D,kBAAmBwL,KAAmC,MAAhBxnE,KAAK4oB,QAChD5oB,KAAKuxE,aAAe/J,GAAgBwE,QAAQhsE,KAAK4oB,SAGjD5oB,KAAKuxE,aAAevxE,KAAK4oB,SAGjCvmB,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqvE,EAAe3xE,UAAW,gBAK5CuC,IAAK,WACD,MAAOlC,MAAKklB,QAEhB9iB,IAAK,SAAU7B,GACXP,KAAKklB,OAAS3kB,GAElB8B,YAAY,EACZC,cAAc,IAOlBgvE,EAAe3xE,UAAU6gC,SAAW,WAChC,MAAyB,OAAjBxgC,KAAK27B,cAA6C,KAAlB37B,KAAK27B,SAA4B,GAAIxb,GAAc,GAAI1D,GAAS,EAAG,EAAG,IAAMzc,KAAK27B,UAa7H21C,EAAe3xE,UAAUilB,OAAS,SAAU8oD,GAGxC,MAFe,IAAI0C,IAAapwE,MACV4kB,OAAO8oD,IAGjC4D,EAAe3xE,UAAU+xE,SAAW,SAAUnyD,EAAMC,EAAMC,EAAMoF,GAC5D,GAAIrF,YAAgBL,QAAgC,KAAfK,EAAKlW,WAAyC,KAATmW,EAEtE,MADAzf,MAAKwxE,kBAAmB,EACjBxxE,KAAK0xE,SAASnyD,EAAMC,EAAK9M,EAAG8M,EAAK7M,EAEvC,IAAoB,gBAAT6M,IAAqC,gBAATC,QAAqC,KAAToF,EAEpE,MADA7kB,MAAKwxE,kBAAmB,EACjBxxE,KAAK0xE,SAASnyD,EAAMC,EAAMC,EAAM,KAEtC,IAAID,YAAgBH,QAAoC,KAAfG,EAAKlW,WAAyC,KAATmW,EAC/E,MAAOzf,MAAK0xE,SAASnyD,EAAMC,EAAM,KAEhC,IAAIA,YAAgBL,QAAgC,KAAfK,EAAKlW,OAAyBmW,YAAgBuuD,IAEpF,MADAhuE,MAAKwxE,kBAAmB,EACjBxxE,KAAK0xE,SAASnyD,EAAMC,EAAK9M,EAAG8M,EAAK7M,EAAG8M,EAE1C,IAAoB,gBAATD,IAAqC,gBAATC,KAAsBoF,YAAgBmpD,KAA2B,MAARnpD,GAAe,CAChH7kB,KAAKwxE,kBAAmB,CACxB,IAAIloE,GAASiW,EAAK0f,SAASja,WAAW1b,MAAQkW,EAC1Cg0C,EAAkB,GAAIn0C,GAAWG,EAAMC,EAAMnW,EAAO,EACxD,OAAOtJ,MAAK0xE,SAASnyD,EAAMi0C,EAAiB3uC,GAE3C,GAAIrF,YAAgBH,QAAoC,KAAfG,EAAKlW,OAAyC,iBAATmW,GAC/E,MAAOzf,MAAK0xE,SAASnyD,EAAMC,EAAM,KAGjC,IAAIoF,GAAS,GAAIF,EACjB,IAAI1kB,KAAKwxE,iBAAkB,CACvB,GAAIG,GAAqB/sD,EAAOA,OAAO5kB,KAAKO,MAAOP,KAAK2I,KAAM3I,KAAKmgC,aAAc,GAAI/gB,GAAOG,EAAK0f,SAASja,WAAW1b,MAAQkW,EAAK9M,EAAI,IAAI,EAAM6M,EAAK0f,SAASja,YAC1Jq6C,MAAe,GAEfv1C,EAAWtK,EACX2vC,EAAW1vC,CAKf,KAPIiuD,EAAQ,GAAIY,KAGV3tC,KAAOphB,EAEbmuD,EAAMl5D,OAASsV,EACf4jD,EAAMxoD,OAAsB,MAAZiqC,EAAoBA,EAAW,GAAI6e,IAC/C2D,EAAmBlsD,MAAMzkB,OAAS,EAAG,CAErC,GADAhB,KAAKoW,KAAOu7D,EAAmB/pD,YAAY,GAAGxR,KAC1Cs3D,EAAMl5D,OAAO7B,GAAK+6D,EAAM/sC,KAAK1B,SAASja,WAAWzb,OAAQ,CACrDqoE,EAAmB,GAAIzyD,GAAOuuD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,EAC/D0sD,GAAer/D,KAAK4kB,OAAO8oD,EAG3B,KAAK,GAFDl5D,GAAS,GAAI6K,GAAW,EAAGggD,EAAa7qD,OAAO7B,EAAIg/D,EAAmBrpD,WAAY/I,EAAK0f,SAASja,WAAW1b,MAAOqoE,EAAmBrpD,YAEhIplB,EAAI,EAAGA,EAAIyuE,EAAmBlsD,MAAMzkB,OAAQkC,IAgBjD,GAfAwqE,EAAM/sC,KAAO0+B,EAAa1+B,KAC1B+sC,EAAMl5D,OAAS,GAAI6K,GAAW,GAAIF,GAAO3K,EAAO9B,EAAG8B,EAAO7B,GAAI,GAAIyM,GAAM5K,EAAOlL,MAAOkL,EAAOjL,SAC7FvJ,KAAKoW,KAAOu7D,EAAmB/pD,YAAY1kB,GAAGkT,KAC1C5B,EAAO7B,EAAIg/D,EAAmBrpD,WAAa+2C,EAAa1+B,KAAK1B,SAASja,WAAWzb,SAEjFmkE,EAAM/sC,KAAO+sC,EAAM/sC,KAAK1B,SAAS81B,cAE7BvgD,EADAo9D,EAAiBj/D,EAAK0sD,EAAa1+B,KAAK1B,SAASja,WAAWzb,OAAS81D,EAAa7qD,OAAOjL,OAChF,GAAI8V,GAAW,EAAGggD,EAAa7qD,OAAOjL,OAAQ81D,EAAa1+B,KAAK1B,SAASja,WAAW1b,MAAOqoE,EAAmBrpD,YAG9G,GAAIjJ,GAAW,EAAG,EAAGggD,EAAa1+B,KAAK1B,SAASja,WAAW1b,MAAOqoE,EAAmBrpD,YAElGolD,EAAMl5D,OAASA,GAEnB6qD,EAAer/D,KAAK4kB,OAAO8oD,GACvBxqE,IAAOyuE,EAAmBlsD,MAAMzkB,OAAS,EACzCwT,EAAS,GAAI6K,GAAW,EAAGggD,EAAa7qD,OAAO7B,EAAIg/D,EAAmBrpD,WAAY+2C,EAAa1+B,KAAK1B,SAASja,WAAW1b,MAAOqoE,EAAmBrpD,gBAEjJ,CACG7B,EAAYzmB,KAAK2I,KAAKghB,cAAc3pB,KAAKoW,KAAMpW,KAAKklB,QAAQ5b,KAChE+1D,GAAer/D,KAAK6xE,sBAAsBxS,EAAc54C,EAAW44C,EAAa1+B,KAAK1B,SAASja,WAAW1b,MAAO,IAI5H,MAAO+1D,GAGHyS,EAAW9xE,KAAK2I,KAAKghB,cAAc3pB,KAAKoW,KAAMpW,KAAKklB,OAKvD,OAJIwoD,GAAMl5D,OAAO7B,GAAK+6D,EAAM/sC,KAAK1B,SAASja,WAAWzb,SACjD81D,EAAer/D,KAAK4kB,OAAO8oD,GAC3BrO,EAAer/D,KAAK6xE,sBAAsBxS,EAAcyS,EAASxoE,MAAO+1D,EAAa1+B,KAAK1B,SAASja,WAAW1b,MAAO,IAElH+1D,EAIX,GAAIA,GAAez6C,EAAOA,OAAO5kB,KAAKO,MAAOP,KAAK2I,KAAM3I,KAAKmgC,aAAc,GAAI/gB,GAAMI,EAAKlW,MAAO,IAAI,EAAOiW,EAAK0f,SAASja,YACtH/hB,MAAS,GACTyqE,EAAQ,GAAIY,IACZxkD,EAAWtK,EACX2vC,EAAW1vC,CAIf,IAHAiuD,EAAM/sC,KAAOphB,EACbmuD,EAAMl5D,OAASsV,EACf4jD,EAAMxoD,OAAsB,MAAZiqC,EAAoBA,EAAW,GAAI6e,IAC/C3O,EAAa55C,MAAMzkB,OAAS,EAAG,CAE/B,GADAhB,KAAKoW,KAAOipD,EAAaz3C,YAAY,GAAGxR,KACpCs3D,EAAMl5D,OAAO7B,GAAK+6D,EAAM/sC,KAAK1B,SAASja,WAAWzb,OAAQ,CACzD,GAAIqoE,GAAmB,GAAIzyD,GAAOuuD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,EAC/D1P,GAASjD,KAAK4kB,OAAO8oD,EAGrB,KAAK,GAFDl5D,GAAS,GAAI6K,GAAWyK,EAASpX,EAAGzP,EAAOuR,OAAO7B,EAAI0sD,EAAa/2C,WAAYwB,EAASxgB,MAAO+1D,EAAa/2C,YAEvGplB,EAAI,EAAGA,EAAIm8D,EAAa55C,MAAMzkB,OAAQkC,IAgB3C,GAfAwqE,EAAM/sC,KAAO19B,EAAO09B,KACpB+sC,EAAMl5D,OAAS,GAAI6K,GAAW7K,EAAO9B,EAAG8B,EAAO7B,EAAG6B,EAAOlL,MAAOkL,EAAOjL,QACvEvJ,KAAKoW,KAAOipD,EAAaz3C,YAAY1kB,GAAGkT,KACpC5B,EAAO7B,EAAI0sD,EAAa/2C,WAAarlB,EAAO09B,KAAK1B,SAASja,WAAWzb,SAErEmkE,EAAM/sC,KAAO+sC,EAAM/sC,KAAK1B,SAAS81B,cAE7BvgD,EADAo9D,EAAiBj/D,EAAK1P,EAAO09B,KAAK1B,SAASja,WAAWzb,OAAStG,EAAOuR,OAAOjL,OACpE,GAAI8V,GAAWyK,EAASpX,EAAG2sD,EAAa/2C,WAAYwB,EAASxgB,MAAO+1D,EAAa/2C,YAGjF,GAAIjJ,GAAWyK,EAASpX,EAAG,EAAGoX,EAASxgB,MAAO+1D,EAAa/2C,YAExEolD,EAAMl5D,OAASA,GAEnBvR,EAASjD,KAAK4kB,OAAO8oD,GACjBxqE,IAAOm8D,EAAa55C,MAAMzkB,OAAS,EACnCwT,EAAS,GAAI6K,GAAWyK,EAASpX,EAAGzP,EAAOuR,OAAO7B,EAAI0sD,EAAa/2C,WAAYwB,EAASxgB,MAAO+1D,EAAa/2C,gBAE3G,CACD,GAAI7B,GAAYzmB,KAAK2I,KAAKghB,cAAc3pB,KAAKoW,KAAMpW,KAAKklB,QAAQ5b,KAChErG,GAASjD,KAAK6xE,sBAAsB5uE,EAAQwjB,EAAWqD,EAASxgB,MAAOwgB,EAASpX,IAI5F,MAAOzP,GAGP,GAAI6uE,GAAW9xE,KAAK2I,KAAKghB,cAAc3pB,KAAKoW,KAAMpW,KAAKklB,OAKvD,OAJIwoD,GAAMl5D,OAAO7B,GAAK+6D,EAAM/sC,KAAK1B,SAASja,WAAWzb,SACjDtG,EAASjD,KAAK4kB,OAAO8oD,GACrBzqE,EAASjD,KAAK6xE,sBAAsB5uE,EAAQ6uE,EAASxoE,MAAOwgB,EAASxgB,MAAOwgB,EAASpX,IAElFzP,GAKvBquE,EAAe3xE,UAAUkyE,sBAAwB,SAAU5uE,EAAQwjB,EAAWsrD,EAAcC,GAkBxF,MAhByB,OAArBhyE,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBm4C,QAC1HhxD,EAAOuR,OAAO9B,EAAIs/D,GAAiBD,EAAetrD,GAAa,EAC/DxjB,EAAOuR,OAAOlL,MAAQmd,GAEI,MAArBzmB,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBo4C,OAC/HjxD,EAAOuR,OAAO9B,EAAIs/D,GAAiBD,EAAetrD,GAClDxjB,EAAOuR,OAAOlL,MAAQmd,GAEI,MAArBzmB,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBm6C,SAC/HhzD,EAAOuR,OAAO9B,EAAIs/D,EAClB/uE,EAAOuR,OAAOlL,MAAQyoE,IAGtB9uE,EAAOuR,OAAOlL,MAAQ0oE,EACtB/uE,EAAOuR,OAAOlL,MAAQmd,GAEnBxjB,GAEJquE,GACT1B,IC5ZE/6D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAUnF48D,GAAkC,SAAUx8D,GAE5C,QAASw8D,GAAiB5sD,EAAW9a,GACjC,GAAIoL,GAAQF,EAAO5V,KAAKG,KAAMqlB,IAAcrlB,IAI5C,YAHmB,KAARuK,IACPoL,EAAMpL,IAAMA,GAEToL,EA2DX,MAjEAd,IAAUo9D,EAAkBx8D,GAQ5B/V,OAAOuC,eAAegwE,EAAiBtyE,UAAW,aAK9CuC,IAAK,WAID,WAHiC,KAAtBlC,KAAKkyE,eACZlyE,KAAKkyE,aAAe,GAAIx2D,IAErB1b,KAAKkyE,cAEhB7vE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAegwE,EAAiBtyE,UAAW,OAM9CuC,IAAK,WACD,MAAOlC,MAAKmyE,UAAU5nE,KAE1BnI,IAAK,SAAU7B,GACPP,KAAKmyE,UAAU5nE,MAAQhK,IACvBP,KAAKmyE,UAAU5nE,IAAMhK,IAG7B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAegwE,EAAiBtyE,UAAW,UAK9CuC,IAAK,WACD,MAAOlC,MAAKotE,gBAEhBhrE,IAAK,SAAU7B,GACXP,KAAKotE,aAAa7sE,GAClBP,KAAKmyE,UAAUnoE,KAAOzJ,GAE1B8B,YAAY,EACZC,cAAc,IAOlB2vE,EAAiBtyE,UAAUkb,WAAa,WACpCpF,EAAO9V,UAAUkb,WAAWhb,KAAKG,MACjCA,KAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBvG,QAAS,GAAIpH,GAAQ3B,KAAKsP,qBAAqBpF,MACpFlK,MAAKmyE,UAAUp+D,OACnC/T,MAAK6O,WAAWU,MAAM/O,SAASR,KAAKsP,qBAAqBnF,EAAGnK,KAAKmyE,UAAUp+D,UAExEk+D,GACT/E,ICpFEr4D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAuCnF47D,GAAgC,SAAUx7D,GAO1C,QAASw7D,KACL,GAAIt7D,GAAQF,EAAO5V,KAAKG,OAASA,IAOjC2V,GAAMy8D,uBAAyB,GAM/Bz8D,EAAM08D,cAAgB,KAOtB18D,EAAM28D,mBAAoB,EAC1B38D,EAAM48D,cAAgB,GAAIz/D,EAC1B,KAAK,GAAI5P,GAAI,EAAGA,EAAI,EAAGA,IACnByS,EAAM48D,cAAc7+D,IAAI,GAAI5B,GAAU,GAE1C,OAAO6D,GAwLX,MAxNAd,IAAUo8D,EAAgBx7D,GAkC1B/V,OAAOuC,eAAegvE,EAAetxE,UAAW,OA6B5CuC,IAAK,WACD,MAAOlC,MAAKoyE,wBAEhBhwE,IAAK,SAAU7B,GACX,GAAqB,IAAjBA,EAAMS,OACN,KAAM,IAAIqV,OAAM,oDAEpBrW,MAAKoyE,uBAAyB7xE,GAElC8B,YAAY,EACZC,cAAc,IAElB2uE,EAAetxE,UAAUygC,KAAO,SAAU9gB,EAAMC,GAC5C,GAAID,YAAgBssC,IAAS,CACzB,GAAIhnC,GAAS,GAAIF,GACb8tD,EAAoBxyE,KAAK2I,KAAKmgB,KAClC,IAAIvJ,YAAgBJ,GAAQ,CAIxB,GAHAnf,KAAKsyE,mBAAoB,EACzBtyE,KAAK2I,KAAKmgB,MAAQ/H,eAAayI,UAEG,KAD9B61C,EAAez6C,EAAOA,OAAO5kB,KAAKO,MAAOP,KAAK2I,KAAM3I,KAAKmgC,aAAc,GAAI/gB,GAAOE,EAAK2f,SAASja,WAAW1b,MAAQiW,EAAK7M,EAAI,IAAI,EAAM4M,EAAK2f,SAASja,aACvIS,MAAMzkB,OAAc,CACjC,GAAI8yD,GAAW9zD,KAAK2I,KAAKghB,cAAc3pB,KAAKO,OACxC+J,EAAO,GAAI+U,GAAWE,EAAMu0C,EAChCxpD,GAAOtK,KAAKyyE,gBAAgBnoE,EAAMwpD,EAASxqD,MAAOgW,EAAK2f,SAASja,WAAW1b,MAAOiW,EAAK7M,GACvF1S,KAAKqyE,cAAgB,GAAIJ,IAAiB3nE,EAAMtK,KAAK0yE,KACrD1yE,KAAKqyE,cAAcxjE,WAAWU,MAAM/O,SAAS,SAAUR,KAAKuyE,eAC5DjzD,EAAKqgD,YAAYjsD,IAAI1T,KAAKqyE,cACtBpvE,GAASjD,KAAK0xE,SAASpyD,EAAMC,EAEjC,OADAvf,MAAK2I,KAAKmgB,MAAQ0pD,EACXvvE,EAGP,GAAIA,GAASjD,KAAK2yE,0BAA0BtT,EAAc//C,EAAMC,EAEhE,OADAvf,MAAK2I,KAAKmgB,MAAQ0pD,EACXvvE,EAIX,GAAIo8D,GAAez6C,EAAOA,OAAO5kB,KAAKO,MAAOP,KAAK2I,KAAM3I,KAAKmgC,aAAc,GAAI/gB,GAAMG,EAAKjW,MAAO,IAAI,EAAO,GAAI8V,GAAM,EAAG,GAEzH,IADApf,KAAK2I,KAAKmgB,MAAQ/H,eAAayI,UACG,IAA9B61C,EAAa55C,MAAMzkB,OAAc,CACjC,GAAI8yD,GAAW9zD,KAAK2I,KAAKghB,cAAc3pB,KAAKO,OACxC+J,EAAO,GAAI+U,GAAW,GAAIF,GAAOI,EAAK7M,EAAG6M,EAAK5M,GAAImhD,EACtDxpD,GAAOtK,KAAKyyE,gBAAgBnoE,EAAMwpD,EAASxqD,MAAOiW,EAAKjW,MAAOiW,EAAK7M,GACnE1S,KAAKqyE,cAAgB,GAAIJ,IAAiB3nE,EAAMtK,KAAK0yE,KACrD1yE,KAAKqyE,cAAcxjE,WAAWU,MAAM/O,SAAS,SAAUR,KAAKuyE,eAC5DjzD,EAAKqgD,YAAYjsD,IAAI1T,KAAKqyE,cACtB/3C,GAAct6B,KAAK0xE,SAASpyD,EAAMC,EAEtC,OADAvf,MAAK2I,KAAKmgB,MAAQ0pD,EACXl4C,EAGP,GAAIA,GAAct6B,KAAK4yE,2BAA2BvT,EAAc//C,EAAMC,EAEtE,OADAvf,MAAK2I,KAAKmgB,MAAQ0pD,EACXl4C,EAKf,GAAIqG,GAAO,GAAIirB,GAEf,OADAjrB,GAAOrhB,EAAKqhB,KACL3gC,KAAKogC,KAAKO,EAAMphB,IAS/B0xD,EAAetxE,UAAUgzE,0BAA4B,SAAU1vE,EAAQ09B,EAAMZ,GAEzE,IAAK,GADDs/B,GACKn8D,EAAI,EAAGA,EAAID,EAAO2kB,YAAY5mB,OAAQkC,IAAK,CAChD,GAAIxB,GAAO1B,KAAK2I,KAAKghB,cAAc1mB,EAAOwiB,MAAMviB,GAAGkT,MAC/C5B,EAAS,GAAI6K,GAAW0gB,EAAUr+B,EAKtC,IAJU,IAANwB,IACAsR,EAAO9B,EAAI,GAEf1S,KAAKoW,KAAOnT,EAAOwiB,MAAMviB,GAAGkT,KACxB5B,EAAO7B,EAAIjR,EAAK6H,OAASo3B,EAAK1B,SAASja,WAAWzb,OAAQ,CAC1D,GAAU,IAANrG,EAMA,KALAy9B,GAAOA,EAAK1B,SAAS81B,cACrBvgD,EAAS,GAAI6K,GAAW,EAAG,EAAGshB,EAAK1B,SAASja,WAAW1b,MAAO5H,EAAK6H,QACnEw2B,EAASptB,EAAI,EAMrB6B,EAASxU,KAAKyyE,gBAAgBj+D,EAAQ9S,EAAK4H,MAAOq3B,EAAK1B,SAASja,WAAW1b,MAAOkL,EAAO9B,GACzF1S,KAAKqyE,cAAgB,GAAIJ,IAAiBz9D,EAAQxU,KAAK0yE,KACvD1yE,KAAKqyE,cAAcxjE,WAAWU,MAAM/O,SAAS,SAAUR,KAAKuyE,eAC5D5xC,EAAKg/B,YAAYjsD,IAAI1T,KAAKqyE,eAEtBhT,EADM,IAANn8D,EACelD,KAAK0xE,SAAS/wC,EAAM,GAAIxhB,GAAO,EAAG3K,EAAO7B,IAGzC3S,KAAK0xE,SAAS/wC,EAAMnsB,EAAO9B,EAAG8B,EAAO7B,GAExDotB,EAASptB,GAAKjR,EAAK6H,OAEvB,MAAO81D,IAMX4R,EAAetxE,UAAUizE,2BAA6B,SAAU3vE,EAAQ09B,EAAMnsB,GAE1E,IAAK,GADD6qD,GACKn8D,EAAI,EAAGA,EAAID,EAAO2kB,YAAY5mB,OAAQkC,IAAK,CAChD,GAAIxB,GAAO1B,KAAK2I,KAAKghB,cAAc1mB,EAAOwiB,MAAMviB,GAAGkT,MAC/CopB,EAAiB,GAAIngB,GAAW,GAAIF,GAAO3K,EAAO9B,EAAG8B,EAAO7B,GAAIjR,EAGpE,IAFA89B,EAAiBx/B,KAAKyyE,gBAAgBjzC,EAAgB99B,EAAK4H,MAAOkL,EAAOlL,MAAOkL,EAAO9B,GACvF1S,KAAKoW,KAAOnT,EAAOwiB,MAAMviB,GAAGkT,KACxB5B,EAAO7B,EAAIjR,EAAK6H,OAASo3B,EAAK1B,SAASja,WAAWzb,OAAQ,CAC1D,GAAU,IAANrG,EAMA,KALAy9B,GAAOA,EAAK1B,SAAS81B,cACrBvgD,EAAS,GAAI6K,GAAW7K,EAAO9B,EAAG,EAAG8B,EAAOlL,MAAO5H,EAAK6H,QACxDi2B,EAAe7sB,EAAI,EAM3B3S,KAAKqyE,cAAgB,GAAIJ,IAAiBzyC,EAAgBx/B,KAAK0yE,KAC/D1yE,KAAKqyE,cAAcxjE,WAAWU,MAAM/O,SAAS,SAAUR,KAAKuyE,eAC5D5xC,EAAKg/B,YAAYjsD,IAAI1T,KAAKqyE,eAC1BhT,EAAer/D,KAAK0xE,SAAS/wC,EAAMnsB,GACnCA,EAAO7B,GAAKjR,EAAK6H,OAErB,MAAO81D,IAGX4R,EAAetxE,UAAU8yE,gBAAkB,SAAUpC,EAAe5pD,EAAWsrD,EAAcC,GAkBzF,MAhByB,OAArBhyE,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBm4C,QAC1Hoc,EAAc39D,EAAIs/D,GAAiBD,EAAetrD,GAAa,EAC/D4pD,EAAc/mE,MAAQmd,GAEI,MAArBzmB,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBo4C,OAC/Hmc,EAAc39D,EAAIs/D,GAAiBD,EAAetrD,GAClD4pD,EAAc/mE,MAAQmd,GAEI,MAArBzmB,KAAKmgC,kBAAqD,KAAtBngC,KAAKmgC,cAAgCngC,KAAKmgC,aAAa6zB,YAAcl4C,mBAAiBm6C,SAC/Hoa,EAAc39D,EAAIs/D,EAClB3B,EAAc/mE,MAAQyoE,IAGtB1B,EAAc/mE,MAAQ0oE,EACtB3B,EAAc/mE,MAAQmd,GAEnB4pD,GAEJY,GACTK,IC/PEuB,GAAqC,WACrC,QAASA,MAoJT,MA7IAA,GAAoB7G,QAAU,SAAU8G,EAAWC,GAC/C,GAAI9vE,GAAS,EACb,QAAQ8vE,GACJ,IAAKn9C,kBAAelT,KAChBzf,EAAS,EACT,MACJ,KAAK2yB,kBAAeo9C,QAChB/vE,EAAS6vE,EAAUlzE,UACnB,MACJ,KAAKg2B,kBAAeq9C,WAChBhwE,EAASjD,KAAKkzE,eAAeJ,GAAWK,aACxC,MACJ,KAAKv9C,kBAAew9C,WAChBnwE,EAASjD,KAAKqzE,cAAcP,GAAWK,aACvC,MACJ,KAAKv9C,kBAAe09C,WAChBrwE,EAASjD,KAAKkzE,eAAeJ,EAC7B,MACJ,KAAKl9C,kBAAe29C,WAChBtwE,EAASjD,KAAKqzE,cAAcP,GAGpC,MAAO7vE,IAMX4vE,EAAoBQ,cAAgB,SAAUP,GAC1C,GAAIU,GAAS,GACTC,EAAUzzE,KAAK0zE,eAAeZ,EAAW,IAAM,IACnDU,IAAUC,EAAQn5C,YAClBw4C,EAAYW,EAAQX,SACpB,IAAIa,GAAW3zE,KAAK0zE,eAAeZ,EAAW,IAAK,KACnDU,IAAUG,EAASr5C,YACnBw4C,EAAYa,EAASb,SACrB,IAAIc,GAAU5zE,KAAK0zE,eAAeZ,EAAW,IAAK,IAClDU,IAAUI,EAAQt5C,YAClBw4C,EAAYc,EAAQd,SACpB,IAAIe,GAAW7zE,KAAK0zE,eAAeZ,EAAW,IAAK,KACnDU,IAAUK,EAASv5C,YACnBw4C,EAAYe,EAASf,SACrB,IAAIgB,GAAU9zE,KAAK0zE,eAAeZ,EAAW,IAAK,IAClDU,IAAUM,EAAQx5C,YAClBw4C,EAAYgB,EAAQhB,SACpB,IAAIiB,GAAW/zE,KAAK0zE,eAAeZ,EAAW,GAAI,KAClDU,IAAUO,EAASz5C,YACnBw4C,EAAYiB,EAASjB,SACrB,IAAIkB,GAAUh0E,KAAK0zE,eAAeZ,EAAW,GAAI,IACjDU,IAAUQ,EAAQ15C,YAClBw4C,EAAYkB,EAAQlB,SACpB,IAAImB,GAAWj0E,KAAK0zE,eAAeZ,EAAW,GAAI,KAClDU,IAAUS,EAAS35C,YACnBw4C,EAAYmB,EAASnB,SACrB,IAAIoB,GAAUl0E,KAAK0zE,eAAeZ,EAAW,GAAI,IACjDU,IAAUU,EAAQ55C,YAClBw4C,EAAYoB,EAAQpB,SACpB,IAAIqB,GAAWn0E,KAAK0zE,eAAeZ,EAAW,EAAG,KACjDU,IAAUW,EAAS75C,YACnBw4C,EAAYqB,EAASrB,SACrB,IAAIsB,GAAUp0E,KAAK0zE,eAAeZ,EAAW,EAAG,IAChDU,IAAUY,EAAQ95C,YAClBw4C,EAAYsB,EAAQtB,SACpB,IAAIuB,GAAWr0E,KAAK0zE,eAAeZ,EAAW,EAAG,KACjDU,IAAUa,EAAS/5C,YACnBw4C,EAAYuB,EAASvB,SACrB,IAAIwB,GAAUt0E,KAAK0zE,eAAeZ,EAAW,EAAG,IAGhD,OAFAU,IAAUc,EAAQh6C,YAClBw4C,EAAYwB,EAAQxB,UACbU,EAAO5zE,YAMlBizE,EAAoBK,eAAiB,SAAUqB,GAG3C,IAFA,GAAIC,GAAQx0E,KAAKy0E,gBAAgBF,GAC7BtxE,EAAS,GACNuxE,EAAMxzE,OAAS,GAAG,CACrB,GAAIkjB,GAAMswD,EAAM1a,KAChB72D,GAASjD,KAAK00E,WAAWzxE,EAAQihB,GAErC,MAAOjhB,GAAOrD,YAMlBizE,EAAoBa,eAAiB,SAAUnzE,EAAOo0E,EAAW9gD,GAE7D,IADA,GAAI+gD,GAAe,GACZr0E,GAASo0E,GACZp0E,GAASo0E,EACTC,GAAgB/gD,CAEpB,QAASyG,YAAas6C,EAAah1E,WAAYkzE,UAAWvyE,IAM9DsyE,EAAoB4B,gBAAkB,SAAUF,GAC5C,GAAIA,GAAU,EACV,KAAMl+D,OAAM,8DAGhB,KADA,GAAIm+D,MACGD,EAASv0E,KAAK60E,aAAa,CAC9B,GAAIrE,GAAY+D,EAASv0E,KAAK60E,WACZ,KAAdrE,GACA+D,EAASA,EAASv0E,KAAK60E,YAAc,EACrCrE,EAAYxwE,KAAK60E,aAGjBN,GAAUv0E,KAAK60E,YAEnBL,EAAMtzE,KAAKsvE,GAGf,MADAgE,GAAMtzE,KAAKqzE,GACJC,GAMX3B,EAAoB6B,WAAa,SAAUvwD,EAAS5jB,GAGhD,MADA4jB,IADa5N,OAAOC,aAAaq8D,EAAoBiC,gBAAkBv0E,IAU3EsyE,EAAoBgC,YAAc,GAMlChC,EAAoBiC,mBACbjC,KC1JPkC,GAAsC,WACtC,QAASA,GAAqBpmB,EAAUpuD,GAOpCP,KAAKg1E,YAAc,KAKnBh1E,KAAK4oB,QAAU,OACS,KAAb+lC,IAIP3uD,KAAK2uD,SAAWA,EAChB3uD,KAAKO,MAAQA,GAgCrB,MA7BAb,QAAOuC,eAAe8yE,EAAqBp1E,UAAW,YAMlDuC,IAAK,WACD,MAAOlC,MAAKg1E,aAEhB5yE,IAAK,SAAU7B,GACXP,KAAKg1E,YAAcz0E,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8yE,EAAqBp1E,UAAW,SAKlDuC,IAAK,WACD,MAAOlC,MAAK4oB,SAEhBxmB,IAAK,SAAU7B,GACXP,KAAK4oB,QAAUroB,GAEnB8B,YAAY,EACZC,cAAc,IAEXyyE,KCvDPlgE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAcnF4/D,GAAuC,SAAUx/D,GAEjD,QAASw/D,KACL,GAAIt/D,GAAQF,EAAO5V,KAAKG,OAASA,IAOjC,OADA2V,GAAMkoD,KAAO,GAAIz/B,IACVzoB,EAeX,MAxBAd,IAAUogE,EAAuBx/D,GAajCw/D,EAAsBt1E,UAAU60D,YAAc,SAAUv1B,EAAUc,EAAUC,EAAUC,GAClFxqB,EAAO9V,UAAUmgC,kBAAkBjgC,KAAKG,KAAMi/B,EAAUc,EAAUC,EAAUC,EAC5E,IAAI1/B,GAAQP,KAAKI,SAAS6+B,GACtB0vB,EAAW,GAAIrF,IAAYtpD,KAAKugC,UACpCvgC,MAAK69D,KAAKr9D,SAASy+B,EAAU,GAAI81C,IAAqBpmB,EAAUpuD,GAEhE,IAAImB,GAAO1B,KAAKugC,SAChBouB,GAAS1vB,SAAS+vB,WAAWzuD,EAAOP,KAAKkgC,UAAWlgC,KAAKg8B,IAAKh8B,KAAKwgC,WAAY,EAAG,EAAG9+B,EAAK4H,MAAO5H,EAAK6H,OAAQvJ,KAAKmgC,aACnH,IAAI+0C,GAAe,GAAI/1D,GAAO4gB,EAASrtB,EAAI1S,KAAK+/B,SAASrtB,EAAGqtB,EAASptB,EAAI3S,KAAK+/B,SAASptB,EACvFssB,GAASyvB,gBAAgBC,EAAUumB,EAAc,GAAI91D,GAAMuvC,EAASrlD,MAAQ02B,EAAU2uB,EAASplD,OAAS02B,KAErGg1C,GACT11C,IC/CE1qB,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAWnF8/D,GAAoC,SAAU1/D,GAE9C,QAAS0/D,GAAmBxsE,EAAM4W,GAC9B,GAAI5J,GAAQF,EAAO5V,KAAKG,OAASA,IAkBjC,OAZA2V,GAAMy/D,oBAAsBx/C,iBAAeo9C,YACvB,KAATzzD,EACP5J,EAAMhN,KAAOA,EAER4W,YAAgBW,IACrBvK,EAAMhN,KAAOA,EACbgN,EAAM4K,MAAQhB,IAGd5J,EAAMhN,KAAOA,EACbgN,EAAMnB,OAAS+K,GAEZ5J,EAoCX,MAxDAd,IAAUsgE,EAAoB1/D,GAsB9B/V,OAAOuC,eAAekzE,EAAmBx1E,UAAW,eAMhDuC,IAAK,WACD,MAAOlC,MAAKo1E,qBAEhBhzE,IAAK,SAAU7B,GACXP,KAAKo1E,oBAAsB70E,GAE/B8B,YAAY,EACZC,cAAc,IAMlB6yE,EAAmBx1E,UAAUS,SAAW,SAAU6+B,GAC9C,GACI0B,GAAO3gC,KAAK0gC,oBAAoBzB,EAEpC,OADSj/B,MAAKq1E,iBAAiB10C,IAOnCw0C,EAAmBx1E,UAAU01E,iBAAmB,SAAU10C,GACtD,GACI0lC,GADW1lC,EAAKtlB,SACKpT,MAAM3E,QAAQq9B,GAAQ,CAC/C,OAAOkyC,IAAoB7G,QAAQ3F,EAAWrmE,KAAK+yE,cAEhDoC,GACTF,IC5EEpgE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAUnFigE,GAAmC,SAAU7/D,GAU7C,QAAS6/D,GAAkB3sE,EAAM4X,EAAOnK,GAEpC,IAAK,GADDynD,MACK9xC,EAAK,EAAGA,EAAKwpD,UAAUv0E,OAAQ+qB,IACpC8xC,EAAK9xC,EAAK,GAAKwpD,UAAUxpD,EAE7B,IAAIpW,GAAQF,EAAO5V,KAAKG,OAASA,IAgBjC,OAVA2V,GAAMk4C,wBAA0B,KAKhCl4C,EAAM6/D,aAAe,GACrB7/D,EAAMhN,KAAOA,EACbgN,EAAM4K,MAAQA,EACd5K,EAAMS,KAAOA,EACbT,EAAMmpB,gBAAkB++B,EACjBloD,EA+CX,MA7EAd,IAAUygE,EAAmB7/D,GAgC7B/V,OAAOuC,eAAeqzE,EAAkB31E,UAAW,QAM/CuC,IAAK,WACD,MAAOlC,MAAKw1E,cAEhBpzE,IAAK,SAAU7B,GACXP,KAAKw1E,aAAej1E,GAExB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeqzE,EAAkB31E,UAAW,mBAK/CuC,IAAK,WACD,MAAOlC,MAAK6tD,yBAEhBzrD,IAAK,SAAU7B,GACXP,KAAK6tD,wBAA0BttD,GAEnC8B,YAAY,EACZC,cAAc,IAOlBgzE,EAAkB31E,UAAUS,SAAW,SAAU6+B,GAE7C,GAAI7oB,GAAOpW,KAAKoW,KAAKxW,UACrB,QAAoC,KAAzBI,KAAK8+B,iBAA2D,MAAxB9+B,KAAK8+B,iBAA2B9+B,KAAK8+B,gBAAgB99B,OAAS,EAC7G,IAAK,GAAIkC,GAAI,EAAGA,EAAIlD,KAAK8+B,gBAAgB99B,OAAQkC,IAAK,CAClD,GAAIuyE,GAAiBz1E,KAAK8+B,gBAAgB57B,EAC1CkT,GAAOA,EAAK+rB,QAAQ,IAAMj/B,EAAI,IAAKuyE,EAAer1E,SAAS6+B,IAGnE,MAAO7oB,IAEJk/D,GACTL,IChGEpgE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAcnFqgE,GAAqC,SAAUjgE,GAG/C,QAASigE,KACL,GAAI//D,GAAQF,EAAO5V,KAAKG,OAASA,IAMjC,OAHA2V,GAAMkoD,KAAO,GAAIz/B,IAEjBzoB,EAAMggE,mBACChgE,EAyBX,MAlCAd,IAAU6gE,EAAqBjgE,GAW/BigE,EAAoB/1E,UAAU60D,YAAc,SAAUv1B,EAAUc,EAAUC,EAAUC,GAChFxqB,EAAO9V,UAAUmgC,kBAAkBjgC,KAAKG,KAAMi/B,EAAUc,EAAUC,EAAUC,EAC5E,IACI5kB,GADOrb,KAAK0gC,oBAAoBzB,GAChB5jB,SAChB4H,EAAYjjB,KAAKI,SAAS6+B,EAE9B,IAAIj/B,KAAK69D,KAAKr8D,YAAY6Z,GAAW,CACjC,GAAI/a,GAAON,KAAK69D,KAAKz9D,SAASib,GAC1B65D,EAAe,GAAI/1D,GAAO4gB,EAASrtB,EAAI1S,KAAK+/B,SAASrtB,EAAGqtB,EAASptB,EAAI3S,KAAK+/B,SAASptB,EACvFssB,GAASyvB,gBAAgBpuD,EAAKquD,SAAUumB,EAAc,GAAI91D,GAAM9e,EAAKquD,SAASrlD,MAAQ02B,EAAU1/B,EAAKquD,SAASplD,OAAS02B,IACvHjgC,KAAK21E,gBAAgBz0E,KAAK+9B,OAEzB,CACD,GAAIv9B,GAAO1B,KAAKugC,UACZouB,EAAW,GAAIrF,IAAY5nD,EAC/B1B,MAAK69D,KAAKr9D,SAAS6a,EAAU,GAAI05D,IAAqBpmB,EAAU1rC,IAChE0rC,EAAS1vB,SAAS+vB,WAAW/rC,EAAWjjB,KAAKkgC,UAAWlgC,KAAKg8B,IAAKh8B,KAAKwgC,WAAY,EAAG,EAAG9+B,EAAK4H,MAAO5H,EAAK6H,OAAQvJ,KAAKmgC,aACnH+0C,GAAe,GAAI/1D,GAAO4gB,EAASrtB,EAAI1S,KAAK+/B,SAASrtB,EAAGqtB,EAASptB,EAAI3S,KAAK+/B,SAASptB,EACvFssB,GAASyvB,gBAAgBC,EAAUumB,EAAc,GAAI91D,GAAMuvC,EAASrlD,MAAQ02B,EAAU2uB,EAASplD,OAAS02B,IACxGjgC,KAAK21E,gBAAgBz0E,KAAK+9B,KAI3By2C,GACTn2C,ICzDE1qB,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAanFugE,GAAmC,SAAUngE,GAE7C,QAASmgE,GAAkBjtE,EAAM4W,GAC7B,GAAI5J,GAAQF,EAAO5V,KAAKG,OAASA,IAkBjC,OAZA2V,GAAMy/D,oBAAsBx/C,iBAAeo9C,YACvB,KAATzzD,EACP5J,EAAMhN,KAAOA,EAER4W,YAAgBW,IACrBvK,EAAMhN,KAAOA,EACbgN,EAAM4K,MAAQhB,IAGd5J,EAAMhN,KAAOA,EACbgN,EAAMnB,OAAS+K,GAEZ5J,EA8BX,MAlDAd,IAAU+gE,EAAmBngE,GAsB7B/V,OAAOuC,eAAe2zE,EAAkBj2E,UAAW,eAM/CuC,IAAK,WACD,MAAOlC,MAAKo1E,qBAEhBhzE,IAAK,SAAU7B,GACXP,KAAKo1E,oBAAsB70E,GAE/B8B,YAAY,EACZC,cAAc,IAOlBszE,EAAkBj2E,UAAUS,SAAW,SAAU6+B,GAC7C,GAGI92B,GAFOnI,KAAK0gC,oBAAoBzB,GAChB+1B,QAAQzsD,OAAO8S,SACdpT,MAAME,KAE3B,OADS0qE,IAAoB7G,QAAQ7jE,EAAOnI,KAAK+yE,cAG9C6C,GACTF,KCnEF,SAAWG,GAKPA,EAAmBA,EAA6B,SAAI,GAAK,WAKzDA,EAAmBA,EAA8B,UAAI,GAAK,YAK1DA,EAAmBA,EAAyB,KAAI,GAAK,QACtDA,uBAAuBA,6BCjBfC,ICQPC,GAAgC,WAChC,QAASA,GAAez2D,EAAMC,GAM1Bvf,KAAKsP,qBAAuB,GAAItH,GAKhChI,KAAKg2E,gBAAkBH,qBAAmBI,SAM1Cj2E,KAAKk2E,WAAa,EAMlBl2E,KAAKm2E,oBAAsB,GAAIh3D,GAAO,EAAG,GAMzCnf,KAAKwU,OAAS,GAAI6K,GAKlBrf,KAAK+S,MAAQ,GAAID,EACL6iB,sBAAmBqB,YAC/Bh3B,MAAKm2E,oBAAsB,GAAIh3D,GAAO,EAAGnf,KAAKm2E,oBAAoBxjE,GAClE3S,KAAKy8D,QAAUn9C,EACXC,YAAgBJ,GAChBnf,KAAKm2E,oBAAsB52D,EAG3Bvf,KAAKwU,OAAS+K,EA0GtB,MAvGA7f,QAAOuC,eAAe8zE,EAAep2E,UAAW,QAM5CuC,IAAK,WACD,MAAOlC,MAAKk2E,YAEhB9zE,IAAK,SAAU7B,GACXP,KAAKk2E,WAAa31E,EAClBP,KAAKo2E,uBAET/zE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8zE,EAAep2E,UAAW,QAK5CuC,IAAK,WACD,MAAOlC,MAAKy8D,SAEhBr6D,IAAK,SAAU7B,GACXP,KAAKy8D,QAAUl8D,EACfP,KAAKo2E,uBAET/zE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8zE,EAAep2E,UAAW,QAK5CuC,IAAK,WACD,MAAOlC,MAAKg2E,iBAEhB5zE,IAAK,SAAU7B,GACXP,KAAKg2E,gBAAkBz1E,EACvBP,KAAKo2E,uBAET/zE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8zE,EAAep2E,UAAW,YAK5CuC,IAAK,WACD,MAAOlC,MAAKm2E,qBAEhB/zE,IAAK,SAAU7B,GACXP,KAAKm2E,oBAAsB51E,EAC3BP,KAAKo2E,uBAET/zE,YAAY,EACZC,cAAc,IAMlByzE,EAAep2E,UAAUwjE,iBAAmB,SAAUxiC,EAAMjD,GAExD,MADciD,GAAKq0B,QACJmO,iBAAiBxiC,EAAMjD,IAM1Cq4C,EAAep2E,UAAUy2E,oBAAsB,WAG3C,OAFAp2E,KAAK+S,MAAMtR,QACXzB,KAAK+S,MAAMW,IAAI,GAAI8D,GAAmBxX,KAAKy8D,UACnCz8D,KAAKg2E,iBACT,IAAKH,sBAAmBI,SACpB,GAAII,GAAar2E,KAAKy8D,QAClB/+B,EAAQ,GAAIve,EAChBue,GAAQ19B,KAAKmjE,iBAAiBkT,EAAYr2E,KAAKm2E,qBAC/Cn2E,KAAK+S,MAAMW,IAAI,GAAI/R,GAAQ3B,KAAKsP,qBAAqB3E,MACrD3K,KAAK+S,MAAMW,IAAI,GAAI5B,GAAU4rB,EAAMhrB,IACnC1S,KAAK+S,MAAMW,IAAI,GAAI5B,GAAU4rB,EAAM/qB,IACnC3S,KAAK+S,MAAMW,IAAI,GAAI5B,GAAU9R,KAAKk2E,YAClC,MACJ,KAAKL,sBAAmBS,UACpBt2E,KAAK+S,MAAMW,IAAI,GAAI/R,GAAQ3B,KAAKsP,qBAAqB1E,QAIjElL,OAAOuC,eAAe8zE,EAAep2E,UAAW,WAK5CuC,IAAK,WAED,MADAlC,MAAKo2E,sBACEp2E,KAAK+S,OAEhB1Q,YAAY,EACZC,cAAc,IAEXyzE,KChKPQ,GAA6B,WAM7B,QAASA,GAAY1nE,GAMjB7O,KAAKw2E,YAAc,KAKnBx2E,KAAK2rD,sBAAwB,GAAI3jD,GACjChI,KAAKw2E,YAAc3nE,EAsDvB,MApDAnP,QAAOuC,eAAes0E,EAAY52E,UAAW,UAMzCuC,IAAK,WAED,MADalC,MAAKw2E,YAAYjnE,MAAMnP,SAASJ,KAAK2rD,sBAAsBn+C,SAG5EpL,IAAK,SAAU7B,GACXP,KAAKw2E,YAAYjnE,MAAM/O,SAASR,KAAK2rD,sBAAsBn+C,OAAQjN,IAEvE8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAes0E,EAAY52E,UAAW,SAKzCuC,IAAK,WAED,MADalC,MAAKw2E,YAAYjnE,MAAMnP,SAASJ,KAAK2rD,sBAAsBl+C,QAG5ErL,IAAK,SAAU7B,GACXP,KAAKw2E,YAAYjnE,MAAM/O,SAASR,KAAK2rD,sBAAsBl+C,MAAOlN,IAEtE8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAes0E,EAAY52E,UAAW,cAIzCuC,IAAK,WACD,MAAOlC,MAAKw2E,aAEhBn0E,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAes0E,EAAY52E,UAAW,WAKzCuC,IAAK,WACD,MAAOlC,MAAKw2E,aAEhBn0E,YAAY,EACZC,cAAc,IAEXi0E,KCzEP1hE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAWnFohE,GAAoC,SAAUhhE,GAM9C,QAASghE,GAAmBjpE,EAAQC,EAAOipE,EAAOC,GAC9C,GAAIhhE,GAAQF,EAAO5V,KAAKG,KAAM,GAAIwV,KAAgBxV,IAUlD,YATsB,KAAXwN,EACPmI,EAAM9G,WAAWU,MAAM/O,SAASmV,EAAMg2C,sBAAsBj+C,aAAc,GAAIoE,GAAU,KAGxF6D,EAAM9G,WAAWU,MAAM/O,SAASmV,EAAMg2C,sBAAsBj+C,aAAc,GAAIoE,GAAU,IACxF6D,EAAMihE,YAAYppE,EAAQC,EAAOipE,EAAOC,GACxChhE,EAAMkhE,kBAAkBrpE,EAAQC,GAChCkI,EAAMmhE,iBAAiBJ,EAAOC,IAE3BhhE,EA6BX,MA7CAd,IAAU4hE,EAAoBhhE,GAsB9BghE,EAAmB92E,UAAUi3E,YAAc,SAAUppE,EAAQC,EAAOipE,EAAOC,GACzDlpE,EAAMzM,OACNwM,EAAOxM,OACP21E,EAAQ31E,QAM1By1E,EAAmB92E,UAAUk3E,kBAAoB,SAAUrpE,EAAQC,GAC/DzN,KAAKwN,OAAS,GAAIsF,GAAStF,GAC3BxN,KAAKyN,MAAQ,GAAIqF,GAASrF,IAK9BgpE,EAAmB92E,UAAUm3E,iBAAmB,SAAUJ,EAAOC,GAC7D,GAAI9sE,GAAK7J,KAAgB,UACzB6J,GAAEuF,YAAa,EACfpP,KAAK6O,WAAWU,MAAM/O,SAASR,KAAK2rD,sBAAsBjqD,KAAM,GAAIoR,GAAS4jE,IAC7E12E,KAAK6O,WAAWU,MAAM/O,SAASR,KAAK2rD,sBAAsBh+C,cAAe,GAAImE,GAAU,IACvFjI,EAAEyM,WAAWqgE,IAEVF,GACTF,KH5DF,SAAWT,GAIPA,EAAUA,EAAgB,KAAI,GAAK,OAInCA,EAAUA,EAAiB,MAAI,GAAK,QAIpCA,EAAUA,EAAe,IAAI,GAAK,MAIlCA,EAAUA,EAAgB,KAAI,GAAK,QACpCA,KAAcA,OAIV,IAAIiB,KACX,SAAWA,GAIPA,EAAsBA,EAAwC,iBAAI,GAAK,mBAIvEA,EAAsBA,EAAuC,gBAAI,GAAK,kBAItEA,EAAsBA,EAAkC,WAAI,GAAK,aAIjEA,EAAsBA,EAAgC,SAAI,GAAK,YAChEA,KAA0BA,OAItB,IAAIC,KACX,SAAWA,GAIPA,EAAYA,EAAsB,SAAI,GAAK,WAI3CA,EAAYA,EAAmB,MAAI,GAAK,QAIxCA,EAAYA,EAAoB,OAAI,GAAK,UAC1CA,KAAgBA,OACZ,IAAIC,KACX,SAAWA,GACPA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAA0B,cAAI,GAAK,gBAC9CA,EAAWA,EAA8B,kBAAI,GAAK,oBAClDA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAwB,YAAI,GAAK,cAC5CA,EAAWA,EAA4B,gBAAI,GAAK,kBAChDA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAA8B,kBAAI,GAAK,oBAClDA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAA2B,eAAI,IAAM,iBAChDA,EAAWA,EAA4B,gBAAI,IAAM,kBACjDA,EAAWA,EAAgC,oBAAI,IAAM,sBACrDA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAmB,OAAI,IAAM,SACxCA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAyB,aAAI,IAAM,eAC9CA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAmB,OAAI,IAAM,SACxCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAA2B,eAAI,IAAM,iBAChDA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAA2B,eAAI,IAAM,iBAChDA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAA2B,eAAI,IAAM,iBAChDA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAyB,aAAI,IAAM,eAC9CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAiB,KAAI,IAAM,OACtCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAAoB,QAAI,IAAM,UACzCA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAmB,OAAI,IAAM,SACxCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAkB,MAAI,IAAM,QACvCA,EAAWA,EAAqB,SAAI,IAAM,WAC1CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAyB,aAAI,IAAM,eAC9CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAiC,qBAAI,IAAM,uBACtDA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAuB,WAAI,IAAM,aAC5CA,EAAWA,EAAsB,UAAI,IAAM,YAC3CA,EAAWA,EAAwB,YAAI,IAAM,cAC7CA,EAAWA,EAA0B,cAAI,IAAM,gBAC/CA,EAAWA,EAAyB,aAAI,KAAO,eAC/CA,EAAWA,EAA2B,eAAI,KAAO,iBACjDA,EAAWA,EAA2B,eAAI,KAAO,iBACjDA,EAAWA,EAAwB,YAAI,KAAO,cAC9CA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAkB,MAAI,KAAO,QACxCA,EAAWA,EAAoB,QAAI,KAAO,UAC1CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAA6B,iBAAI,KAAO,mBACnDA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAAyB,aAAI,KAAO,eAC/CA,EAAWA,EAAyB,aAAI,KAAO,eAC/CA,EAAWA,EAA2B,eAAI,KAAO,iBACjDA,EAAWA,EAA4B,gBAAI,KAAO,kBAClDA,EAAWA,EAA8B,kBAAI,KAAO,oBACpDA,EAAWA,EAA4B,gBAAI,KAAO,kBAClDA,EAAWA,EAA4B,gBAAI,KAAO,kBAClDA,EAAWA,EAAyB,aAAI,KAAO,eAC/CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAqB,SAAI,KAAO,WAC3CA,EAAWA,EAAwB,YAAI,KAAO,cAC9CA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAoB,QAAI,KAAO,UAC1CA,EAAWA,EAAkB,MAAI,KAAO,QACxCA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAA0B,cAAI,KAAO,gBAChDA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAA0B,cAAI,KAAO,gBAChDA,EAAWA,EAA0B,cAAI,KAAO,gBAChDA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAgB,IAAI,KAAO,MACtCA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAwB,YAAI,KAAO,cAC9CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAAqB,SAAI,KAAO,WAC3CA,EAAWA,EAAqB,SAAI,KAAO,WAC3CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAoB,QAAI,KAAO,UAC1CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAwB,YAAI,KAAO,cAC9CA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAgB,IAAI,KAAO,MACtCA,EAAWA,EAAiB,KAAI,KAAO,OACvCA,EAAWA,EAAoB,QAAI,KAAO,UAC1CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAsB,UAAI,KAAO,YAC5CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAkB,MAAI,KAAO,QACxCA,EAAWA,EAAkB,MAAI,KAAO,QACxCA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAAmB,OAAI,KAAO,SACzCA,EAAWA,EAAwB,YAAI,KAAO,cAC9CA,EAAWA,EAAuB,WAAI,KAAO,aAC7CA,EAAWA,EAA4B,gBAAI,KAAO,kBAClDA,EAAWA,EAAyB,aAAI,KAAO,eAC/CA,EAAWA,EAAkC,sBAAI,KAAO,wBACxDA,EAAWA,EAAoC,wBAAI,KAAO,0BAC1DA,EAAWA,EAAoB,QAAI,KAAO,UAC1CA,EAAWA,EAA0B,cAAI,KAAO,iBACjDA,KAAeA,WInOdC,IAA4B,WAC5B,QAASA,MA66FT,MA36FAx3E,QAAOuC,eAAei1E,EAAY,aAM9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWG,aACrC72D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWG,YAEjC,MAAT72D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWG,YAE9B72D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWI,gBACrC92D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWI,eAEjC,MAAT92D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWI,eAE9B92D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWK,QACrC/2D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWK,OAEjC,MAAT/2D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWK,OAE9B/2D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWM,cACrCh3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWM,aAEjC,MAATh3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWM,aAE9Bh3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWO,SACrCj3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWO,QAEjC,MAATj3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWO,QAE9Bj3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWQ,SACrCl3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWQ,QAEjC,MAATl3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWQ,QAE9Bl3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWS,UACrCn3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWS,SAEjC,MAATn3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWS,SAE9Bn3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWU,SACrCp3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWU,QAEjC,MAATp3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWU,QAE9Bp3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWW,kBACrCr3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWW,iBAEjC,MAATr3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWW,iBAE9Br3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWY,QACrCt3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWY,OAEjC,MAATt3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWY,OAE9Bt3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWa,cACrCv3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWa,aAEjC,MAATv3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWa,aAE9Bv3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWc,SACrCx3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWc,QAEjC,MAATx3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWc,QAE9Bx3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWe,aACrCz3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWe,YAEjC,MAATz3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWe,YAE9Bz3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgB,aACrC13D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgB,YAEjC,MAAT13D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgB,YAE9B13D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiB,cACrC33D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiB,aAEjC,MAAT33D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiB,aAE9B33D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkB,aACrC53D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkB,YAEjC,MAAT53D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkB,YAE9B53D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmB,SACrC73D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmB,QAEjC,MAAT73D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmB,QAE9B73D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoB,kBACrC93D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoB,iBAEjC,MAAT93D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoB,iBAE9B93D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqB,YACrC/3D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqB,WAEjC,MAAT/3D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqB,WAE9B/3D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsB,WACrCh4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsB,UAEjC,MAATh4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsB,UAE9Bh4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuB,QACrCj4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuB,OAEjC,MAATj4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuB,OAE9Bj4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwB,YACrCl4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwB,WAEjC,MAATl4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwB,WAE9Bl4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyB,YACrCn4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyB,WAEjC,MAATn4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyB,WAE9Bn4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0B,iBACrCp4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0B,gBAEjC,MAATp4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0B,gBAE9Bp4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2B,YACrCr4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2B,WAEjC,MAATr4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2B,WAE9Br4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4B,aACrCt4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4B,YAEjC,MAATt4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4B,YAE9Bt4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6B,aACrCv4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6B,YAEjC,MAATv4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6B,YAE9Bv4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8B,eACrCx4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8B,cAEjC,MAATx4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8B,cAE9Bx4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+B,kBACrCz4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+B,iBAEjC,MAATz4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+B,iBAE9Bz4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgC,cACrC14D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgC,aAEjC,MAAT14D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgC,aAE9B14D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiC,cACrC34D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiC,aAEjC,MAAT34D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiC,aAE9B34D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkC,WACrC54D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkC,UAEjC,MAAT54D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkC,UAE9B54D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmC,cACrC74D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmC,aAEjC,MAAT74D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmC,aAE9B74D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoC,gBACrC94D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoC,eAEjC,MAAT94D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoC,eAE9B94D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqC,iBACrC/4D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqC,gBAEjC,MAAT/4D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqC,gBAE9B/4D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsC,iBACrCh5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsC,gBAEjC,MAATh5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsC,gBAE9Bh5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuC,iBACrCj5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuC,gBAEjC,MAATj5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuC,gBAE9Bj5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwC,cACrCl5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwC,aAEjC,MAATl5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwC,aAE9Bl5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyC,YACrCn5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyC,WAEjC,MAATn5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyC,WAE9Bn5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0C,eACrCp5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0C,cAEjC,MAATp5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0C,cAE9Bp5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2C,WACrCr5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2C,UAEjC,MAATr5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2C,UAE9Br5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4C,cACrCt5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4C,aAEjC,MAATt5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4C,aAE9Bt5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6C,aACrCv5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6C,YAEjC,MAATv5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6C,YAE9Bv5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8C,eACrCx5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8C,cAEjC,MAATx5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8C,cAE9Bx5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+C,eACrCz5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+C,cAEjC,MAATz5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+C,cAE9Bz5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgD,WACrC15D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgD,UAEjC,MAAT15D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgD,UAE9B15D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiD,aACrC35D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiD,YAEjC,MAAT35D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiD,YAE9B35D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkD,cACrC55D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkD,aAEjC,MAAT55D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkD,aAE9B55D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmD,QACrC75D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmD,OAEjC,MAAT75D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmD,OAE9B75D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoD,aACrC95D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoD,YAEjC,MAAT95D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoD,YAE9B95D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqD,QACrC/5D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqD,OAEjC,MAAT/5D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqD,OAE9B/5D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsD,SACrCh6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsD,QAEjC,MAATh6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsD,QAE9Bh6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuD,eACrCj6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuD,cAEjC,MAATj6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuD,cAE9Bj6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwD,YACrCl6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwD,WAEjC,MAATl6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwD,WAE9Bl6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyD,WACrCn6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyD,UAEjC,MAATn6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyD,UAE9Bn6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0D,aACrCp6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0D,YAEjC,MAATp6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0D,YAE9Bp6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2D,UACrCr6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2D,SAEjC,MAATr6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2D,SAE9Br6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4D,SACrCt6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4D,QAEjC,MAATt6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4D,QAE9Bt6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6D,SACrCv6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6D,QAEjC,MAATv6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6D,QAE9Bv6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8D,YACrCx6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8D,WAEjC,MAATx6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8D,WAE9Bx6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+D,iBACrCz6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+D,gBAEjC,MAATz6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+D,gBAE9Bz6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgE,aACrC16D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgE,YAEjC,MAAT16D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgE,YAE9B16D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiE,gBACrC36D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiE,eAEjC,MAAT36D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiE,eAE9B36D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkE,aACrC56D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkE,YAEjC,MAAT56D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkE,YAE9B56D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmE,cACrC76D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmE,aAEjC,MAAT76D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmE,aAE9B76D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoE,aACrC96D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoE,YAEjC,MAAT96D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoE,YAE9B96D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,wBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqE,wBACrC/6D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqE,uBAEjC,MAAT/6D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqE,uBAE9B/6D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsE,aACrCh7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsE,YAEjC,MAATh7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsE,YAE9Bh7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuE,cACrCj7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuE,aAEjC,MAATj7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuE,aAE9Bj7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwE,aACrCl7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwE,YAEjC,MAATl7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwE,YAE9Bl7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyE,eACrCn7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyE,cAEjC,MAATn7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyE,cAE9Bn7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0E,iBACrCp7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0E,gBAEjC,MAATp7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0E,gBAE9Bp7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2E,gBACrCr7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2E,eAEjC,MAATr7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2E,eAE9Br7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4E,kBACrCt7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4E,iBAEjC,MAATt7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4E,iBAE9Bt7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6E,kBACrCv7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6E,iBAEjC,MAATv7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6E,iBAE9Bv7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8E,eACrCx7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8E,cAEjC,MAATx7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8E,cAE9Bx7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+E,QACrCz7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+E,OAEjC,MAATz7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+E,OAE9Bz7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgF,aACrC17D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgF,YAEjC,MAAT17D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgF,YAE9B17D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiF,SACrC37D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiF,QAEjC,MAAT37D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiF,QAE9B37D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkF,WACrC57D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkF,UAEjC,MAAT57D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkF,UAE9B57D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmF,UACrC77D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmF,SAEjC,MAAT77D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmF,SAE9B77D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,oBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoF,oBACrC97D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoF,mBAEjC,MAAT97D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoF,mBAE9B97D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqF,cACrC/7D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqF,aAEjC,MAAT/7D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqF,aAE9B/7D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsF,gBACrCh8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsF,eAEjC,MAATh8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsF,eAE9Bh8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuF,gBACrCj8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuF,eAEjC,MAATj8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuF,eAE9Bj8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,kBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwF,kBACrCl8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwF,iBAEjC,MAATl8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwF,iBAE9Bl8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,mBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyF,mBACrCn8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyF,kBAEjC,MAATn8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyF,kBAE9Bn8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,qBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0F,qBACrCp8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0F,oBAEjC,MAATp8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0F,oBAE9Bp8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,mBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2F,mBACrCr8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2F,kBAEjC,MAATr8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2F,kBAE9Br8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,mBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4F,mBACrCt8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4F,kBAEjC,MAATt8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4F,kBAE9Bt8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,gBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6F,gBACrCv8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6F,eAEjC,MAATv8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6F,eAE9Bv8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8F,aACrCx8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8F,YAEjC,MAATx8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8F,YAE9Bx8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+F,aACrCz8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+F,YAEjC,MAATz8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+F,YAE9Bz8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgG,YACrC18D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgG,WAEjC,MAAT18D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgG,WAE9B18D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiG,eACrC38D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiG,cAEjC,MAAT38D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiG,cAE9B38D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkG,QACrC58D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkG,OAEjC,MAAT58D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkG,OAE9B58D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmG,WACrC78D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmG,UAEjC,MAAT78D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmG,UAE9B78D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoG,SACrC98D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoG,QAEjC,MAAT98D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoG,QAE9B98D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqG,aACrC/8D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqG,YAEjC,MAAT/8D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqG,YAE9B/8D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsG,UACrCh9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsG,SAEjC,MAATh9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsG,SAE9Bh9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuG,aACrCj9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuG,YAEjC,MAATj9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuG,YAE9Bj9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwG,UACrCl9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwG,SAEjC,MAATl9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwG,SAE9Bl9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyG,iBACrCn9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyG,gBAEjC,MAATn9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyG,gBAE9Bn9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0G,aACrCp9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0G,YAEjC,MAATp9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0G,YAE9Bp9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2G,iBACrCr9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2G,gBAEjC,MAATr9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2G,gBAE9Br9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,iBAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4G,iBACrCt9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4G,gBAEjC,MAATt9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4G,gBAE9Bt9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6G,cACrCv9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6G,aAEjC,MAATv9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6G,aAE9Bv9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8G,aACrCx9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8G,YAEjC,MAATx9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8G,YAE9Bx9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+G,QACrCz9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+G,OAEjC,MAATz9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+G,OAE9Bz9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgH,QACrC19D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgH,OAEjC,MAAT19D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgH,OAE9B19D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiH,QACrC39D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiH,OAEjC,MAAT39D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiH,OAE9B39D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkH,cACrC59D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkH,aAEjC,MAAT59D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkH,aAE9B59D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmH,UACrC79D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmH,SAEjC,MAAT79D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmH,SAE9B79D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,OAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoH,OACrC99D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoH,MAEjC,MAAT99D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoH,MAE9B99D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqH,aACrC/9D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqH,YAEjC,MAAT/9D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqH,YAE9B/9D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsH,aACrCh+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsH,YAEjC,MAATh+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsH,YAE9Bh+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuH,eACrCj+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuH,cAEjC,MAATj+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuH,cAE9Bj+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwH,UACrCl+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwH,SAEjC,MAATl+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwH,SAE9Bl+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyH,cACrCn+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyH,aAEjC,MAATn+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyH,aAE9Bn+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0H,YACrCp+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0H,WAEjC,MAATp+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0H,WAE9Bp+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,YAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2H,YACrCr+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2H,WAEjC,MAATr+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2H,WAE9Br+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4H,UACrCt+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4H,SAEjC,MAATt+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4H,SAE9Bt+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6H,UACrCv+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6H,SAEjC,MAATv+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6H,SAE9Bv+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8H,WACrCx+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8H,UAEjC,MAATx+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8H,UAE9Bx+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+H,aACrCz+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+H,YAEjC,MAATz+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+H,YAE9Bz+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWgI,aACrC1+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWgI,YAEjC,MAAT1+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWgI,YAE9B1+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWiI,QACrC3+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWiI,OAEjC,MAAT3+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWiI,OAE9B3+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWkI,eACrC5+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWkI,cAEjC,MAAT5+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWkI,cAE9B5+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWmI,aACrC7+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWmI,YAEjC,MAAT7+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWmI,YAE9B7+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,OAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWoI,OACrC9+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWoI,MAEjC,MAAT9+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWoI,MAE9B9+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,QAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWqI,QACrC/+D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWqI,OAEjC,MAAT/+D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWqI,OAE9B/+D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,WAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWsI,WACrCh/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWsI,UAEjC,MAATh/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWsI,UAE9Bh/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWuI,UACrCj/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWuI,SAEjC,MAATj/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWuI,SAE9Bj/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWwI,eACrCl/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWwI,cAEjC,MAATl/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWwI,cAE9Bl/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,aAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAWyI,aACrCn/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAWyI,YAEjC,MAATn/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAWyI,YAE9Bn/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW0I,UACrCp/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW0I,SAEjC,MAATp/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW0I,SAE9Bp/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW2I,SACrCr/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW2I,QAEjC,MAATr/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW2I,QAE9Br/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,SAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW4I,SACrCt/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW4I,QAEjC,MAATt/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW4I,QAE9Bt/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,cAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW6I,cACrCv/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW6I,aAEjC,MAATv/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW6I,aAE9Bv/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,UAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW8I,UACrCx/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW8I,SAEjC,MAATx/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW8I,SAE9Bx/D,GAEXle,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAei1E,EAAY,eAK9Bh1E,IAAK,WACD,GAAIqe,GAAQ,IAOZ,OANIvgB,MAAKm3E,SAAS31E,YAAYy1E,GAAW+I,eACrCz/D,EAASvgB,KAAKm3E,SAAS/2E,SAAS62E,GAAW+I,cAEjC,MAATz/D,IACDA,EAAQvgB,KAAKwgC,SAASy2C,GAAW+I,cAE9Bz/D,GAEXle,YAAY,EACZC,cAAc,IAKlB40E,EAAW12C,SAAW,SAAUy/C,GAC5B,GAAI5/D,GAAWrgB,KAAKkgF,cAAcD,GAC9B1/D,EAAQ,GAAIJ,GAAcE,EAE9B,OADArgB,MAAKm3E,SAAS32E,SAASy/E,EAAW1/D,GAC3BA,GAOX22D,EAAWgJ,cAAgB,SAAUD,GACjC,GAAI7/D,GAAQ,GAAI3D,EAChB,QAAQwjE,GACJ,IAAKhJ,IAAWwI,YACZr/D,EAAQ,GAAI3D,GAAS,EAAG,IAAK,IAAK,IAClC,MACJ,KAAKw6D,IAAWG,UACZh3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWI,aACZj3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWK,KACZl3D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAWM,WACZn3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWO,MACZp3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWQ,MACZr3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWS,OACZt3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWU,MACZv3D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,EAAG,EAChC,MACJ,KAAKw6D,IAAWW,eACZx3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWY,KACZz3D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,EAAG,IAChC,MACJ,KAAKw6D,IAAWa,WACZ13D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAWc,MACZ33D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAWe,UACZ53D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWgB,UACZ73D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAWiB,WACZ93D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWkB,UACZ/3D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWmB,MACZh4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWoB,eACZj4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWqB,SACZl4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWsB,QACZn4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAWuB,KACZp4D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAWwB,SACZr4D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,EAAG,IAChC,MACJ,KAAKw6D,IAAWyB,SACZt4D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAW0B,cACZv4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAW2B,SACZx4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4B,UACZz4D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,EAClC,MACJ,KAAKw6D,IAAW6B,UACZ14D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8B,YACZ34D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,IAClC,MACJ,KAAKw6D,IAAW+B,eACZ54D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,GACnC,MACJ,KAAKw6D,IAAWgC,WACZ74D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWiC,WACZ94D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAWkC,QACZ/4D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,EAClC,MACJ,KAAKw6D,IAAWmC,WACZh5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWoC,aACZj5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWqC,cACZl5D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,GAAI,IAClC,MACJ,KAAKw6D,IAAWsC,cACZn5D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,GAAI,GAClC,MACJ,KAAKw6D,IAAWuC,cACZp5D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAWwC,WACZr5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,IAClC,MACJ,KAAKw6D,IAAWyC,SACZt5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAW0C,YACZv5D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAW2C,QACZx5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4C,WACZz5D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAW6C,UACZ15D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAW8C,YACZ35D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+C,YACZ55D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,GACnC,MACJ,KAAKw6D,IAAWgD,QACZ75D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,IAClC,MACJ,KAAKw6D,IAAWiD,UACZ95D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkD,WACZ/5D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWmD,KACZh6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWoD,UACZj6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWqD,KACZl6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWsD,MACZn6D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,EAClC,MACJ,KAAKw6D,IAAWuD,YACZp6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWwD,SACZr6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWyD,QACZt6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW0D,UACZv6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAW2D,OACZx6D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,EAAG,IACjC,MACJ,KAAKw6D,IAAW4D,MACZz6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW6D,MACZ16D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8D,SACZ36D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+D,cACZ56D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWgE,UACZ76D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWiE,aACZ96D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkE,UACZ/6D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWmE,WACZh7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWoE,UACZj7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWqE,qBACZl7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWuE,WACZp7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWsE,UACZn7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWwE,UACZr7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWyE,YACZt7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW0E,cACZv7D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAW2E,aACZx7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4E,eACZz7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW6E,eACZ17D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8E,YACZ37D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+E,KACZ57D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,EAClC,MACJ,KAAKw6D,IAAWgF,UACZ77D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,GACnC,MACJ,KAAKw6D,IAAWiF,MACZ97D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkF,QACZ/7D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,IAClC,MACJ,KAAKw6D,IAAWmF,OACZh8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,EAClC,MACJ,KAAKw6D,IAAWoF,iBACZj8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWqF,WACZl8D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,EAAG,IAChC,MACJ,KAAKw6D,IAAWsF,aACZn8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAWuF,aACZp8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWwF,eACZr8D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAWyF,gBACZt8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW0F,kBACZv8D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAW2F,gBACZx8D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAW4F,gBACZz8D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAW6F,aACZ18D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,GAAI,IAClC,MACJ,KAAKw6D,IAAW8F,UACZ38D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+F,UACZ58D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWgG,SACZ78D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWiG,YACZ98D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkG,KACZ/8D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,EAAG,IAChC,MACJ,KAAKw6D,IAAWmG,QACZh9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWoG,MACZj9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWqG,UACZl9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWsG,OACZn9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAWuG,UACZp9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,EACnC,MACJ,KAAKw6D,IAAWwG,OACZr9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWyG,cACZt9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW0G,UACZv9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW2G,cACZx9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4G,cACZz9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW6G,WACZ19D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8G,UACZ39D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+G,KACZ59D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAWgH,KACZ79D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWiH,KACZ99D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkH,WACZ/9D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWmH,OACZh+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,IAClC,MACJ,KAAKw6D,IAAWoH,IACZj+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,EAAG,EAClC,MACJ,KAAKw6D,IAAWqH,UACZl+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWsH,UACZn+D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAWuH,YACZp+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAWwH,OACZr+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWyH,WACZt+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,GACpC,MACJ,KAAKw6D,IAAW0H,SACZv+D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,GACnC,MACJ,KAAKw6D,IAAW2H,SACZx+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4H,OACZz+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAW6H,OACZ1+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8H,QACZ3+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW+H,UACZ5+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,IACnC,MACJ,KAAKw6D,IAAWgI,UACZ7+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWiI,KACZ9+D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWkI,YACZ/+D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAWmI,UACZh/D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAWoI,IACZj/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWqI,KACZl/D,EAAQ,GAAI3D,GAAS,IAAK,EAAG,IAAK,IAClC,MACJ,KAAKw6D,IAAWsI,QACZn/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAWuI,OACZp/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,GAAI,GACnC,MACJ,KAAKw6D,IAAWyI,UACZt/D,EAAQ,GAAI3D,GAAS,IAAK,GAAI,IAAK,IACnC,MACJ,KAAKw6D,IAAW0I,OACZv/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW2I,MACZx/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW4I,MACZz/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW6I,WACZ1/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IACpC,MACJ,KAAKw6D,IAAW8I,OACZ3/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,EACpC,MACJ,KAAKw6D,IAAW+I,YACZ5/D,EAAQ,GAAI3D,GAAS,IAAK,IAAK,IAAK,IAG5C,MAAO2D,IAMX82D,EAAWC,SAAW,GAAIr3E,GACnBo3E,KCh7FPiJ,GAA0B,WAC1B,QAASA,GAASh4E,GAMdnI,KAAKogF,UAAY,IAwOrB,MArOA1gF,QAAOuC,eAAek+E,EAASxgF,UAAW,WAMtCuC,IAAK,WACD,MAAOlC,MAAKqgF,UAEhBj+E,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,kCAEpBrW,MAAKqgF,SAAW9/E,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+E,EAASxgF,UAAW,aAKtCuC,IAAK,WACD,MAAOlC,MAAKsgF,YAEhBl+E,IAAK,SAAU7B,GAEX,IAAK,GADDggF,GAAgBhgF,EACX2C,EAAI,EAAGA,EAAIq9E,EAAcv/E,OAAQkC,KAChCq9E,EAAcr9E,GAAK,GAAOq9E,EAAcr9E,GAAK,KAC/Cq9E,EAAcr9E,GAAK,EAG3BlD,MAAKsgF,WAAaC,EAClBvgF,KAAKsgF,WAAa//E,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+E,EAASxgF,UAAW,SAKtCuC,IAAK,WACD,MAAOlC,MAAKwgF,QAEhBn+E,YAAY,EACZC,cAAc,IAQlB69E,EAASxgF,UAAU8gF,mBAAqB,SAAUhmD,EAASvxB,GACvD,GAAgB,MAAXuxB,EACD,KAAM,IAAIpkB,OAAM,kCAEG,OAAlBrW,KAAK0gF,YACN1gF,KAAK0gF,WAAa,GAEtB,IAAIC,GAAS,GAAIC,IAAc5gF,KAAKmI,OAChCu4E,EAAY1gF,KAAK0gF,UACjBG,EAAO,IACX,IAA0B,IAArBH,EAAU1/E,QACX0/E,GAAa,IACH,GAAK,EACfA,EAAU,GAAK1gF,KAAK0gF,UAAU,GAC9BA,EAAU,GAAK,GAEfG,EAAO,GAAI5rE,OAAM,IACZ,GAAKwlB,EAAQ,GAClBomD,EAAK,GAAKpmD,EAAQ,GAClBomD,EAAK,GAAKpmD,EAAQ,OAEjB,CACD,GAAIqmD,GAAKrmD,EAAQ,GACbsmD,EAAKtmD,EAAQ,EAEjBomD,GAAO,GAAI5rE,OAAMjV,KAAKmI,MACtB,IAAIjF,GAAI,EACJiF,EAAQnI,KAAKmI,KACjB,KAAKjF,EAAI,EAAGA,EAAIiF,IAASjF,EACrB29E,EAAK39E,GAAKlD,KAAKghF,YAAYhhF,KAAKqgF,SAASn9E,GAAI49E,EAAIC,EAAI73E,GAK7D,MAFAy3E,GAAOD,UAAYA,EACnBC,EAAOM,OAASJ,EACTF,GAMXR,EAASxgF,UAAUuhF,cAAgB,WAC/B,GAAIC,GAAQnhF,IAOZ,OANsB,OAAjBA,KAAKqgF,WACNc,EAAMC,QAAWphF,KAAc,UAEZ,MAAlBA,KAAK0gF,YACNS,EAAMT,UAAa1gF,KAAe,WAE/BmhF,GAEXhB,EAASxgF,UAAU0hF,IAAM,SAAUC,EAAGC,GAClC,GAAiB,gBAAND,IAA+B,gBAANC,QAA+B,KAANA,EAAmB,CAC5E,GAAMD,EAAI,GAAOA,EAAI,EACjB,KAAM,IAAIjrE,OAAM,kCAEpB,IAAMkrE,EAAI,GAAOA,EAAI,EACjB,KAAM,IAAIlrE,OAAM,kCAEpB,IAAImrE,GAAM3uE,KAAKoV,IAAI,EAAIq5D,EAAIthF,KAAKogF,WAC5BqB,EAAM5uE,KAAKoV,IAAI,EAAIs5D,EAAIvhF,KAAKogF,UAGhC,OAFcpgF,MAAK0hF,OAAOF,EAAIC,GACJzhF,KAAKogF,UAI/B,GAAIj/E,GAASmgF,CACb,IAAe,MAAVngF,EACD,KAAM,IAAIkV,OAAM,iCAEpB,IAAKlV,EAAOH,OAAS,EACjB,KAAM,IAAIqV,OAAM,+DAEpB,IAAIgrE,GAAMlgF,EAAO,EACjB,IAAKA,EAAOH,OAAS,EAEjB,IAAK,GADDmH,GAAQhH,EAAOH,OACVkC,EAAI,EAAGA,EAAIiF,IAChBk5E,EAAMrhF,KAAKqhF,IAAIlgF,EAAO+B,GAAIm+E,MACZ,EAAIrhF,KAAKogF,YAFEl9E,GAOjC,MAAOm+E,IAQflB,EAASxgF,UAAU+hF,OAAS,SAAUJ,EAAGC,GACrC,GAAKD,GAAK,EACN,KAAM,IAAIjrE,OAAM,8BAAgCirE,EAAI,iDAExD,IAAKC,GAAK,EACN,KAAM,IAAIlrE,OAAM,8BAAgCkrE,EAAI,iDAExD,IAAY,IAAND,GAAmB,IAANC,EACf,MAAO,EAGX,KADA,GAAI31C,GAAQ,EACL5rC,KAAKuhE,OAAO+f,EAAGC,MAChB31C,EACF01C,IAAM,EACNC,IAAM,CAEV,OAAa,EAAJD,IAAU,GACfA,IAAM,CAEV,GAAG,CACC,MAAY,EAAJC,IAAU,GACdA,IAAM,CAEV,IAAID,EAAIC,EAAG,CACP,GAAI96B,GAAI86B,CACRA,GAAID,EACJA,EAAI76B,EAER86B,GAAQD,QACG,IAANC,EACT,OAAQD,IAAK11C,GAEjBu0C,EAASxgF,UAAU4hE,OAAS,SAAUjiD,EAAMC,GACxC,GAAoB,gBAATA,QAAqC,KAATA,EAAsB,CACzD,GAAItc,IAAS,CAGb,OAFAA,GAAUA,IAAmB,EAAPqc,IAAa,EACnCrc,EAAUA,IAAmB,EAAPsc,IAAa,EAInC,OAAgB,EAAPD,IAAa,GAG9B6gE,EAASxgF,UAAUqhF,YAAc,SAAUv6B,EAAG/pC,EAAQC,EAAQzT,GAC1D,GAAIwT,YAAkBD,GAAU,CAC5B,GAAI2D,GAAQ,GAAI3D,EAChB,QAAQvT,GACJ,IAAKkT,iBAAckC,IACf,GAAIT,GAAO7d,KAAKghF,YAAYv6B,EAAG/pC,EAAOmB,IAAKlB,EAAOkB,KAC9CC,EAAS9d,KAAKghF,YAAYv6B,EAAG/pC,EAAOoB,MAAOnB,EAAOmB,OAClDC,EAAQ/d,KAAKghF,YAAYv6B,EAAG/pC,EAAOqB,KAAMpB,EAAOoB,KACpDqC,GAAQ,GAAI3D,GAASoB,EAAKC,EAAOC,EACjC,MACJ,KAAK3B,iBAAcoC,UACf,GAAInB,GAAQrd,KAAKghF,YAAYv6B,EAAG/pC,EAAOW,KAAMV,EAAOU,KACpD+C,GAAQ,GAAI3D,GAASY,EACrB,MACJ,KAAKjB,iBAAcsC,KACf,GAAIT,GAAQje,KAAKghF,YAAYv6B,EAAG/pC,EAAOnZ,EAAGoZ,EAAOpZ,GAC7C2a,EAAWle,KAAKghF,YAAYv6B,EAAG/pC,EAAOuC,EAAGtC,EAAOsC,GAChDd,EAAUne,KAAKghF,YAAYv6B,EAAG/pC,EAAO/J,EAAGgK,EAAOhK,GAC/CqL,EAAShe,KAAKghF,YAAYv6B,EAAG/pC,EAAOjc,EAAGkc,EAAOlc,EAClD2f,GAAQ,GAAI3D,GAASwB,EAAMC,EAASC,EAAQH,GAGpD,MAAOoC,GAeP,MAZS,KAGJqmC,EACQ/pC,EAHJ,IAKC+pC,EACG9pC,EAGCD,GAAuBC,EAASD,MAArB+pC,EAVhB,IAeV05B,KCzPPtrE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAcnFurE,GAA+B,SAAUnrE,GAEzC,QAASmrE,GAAcz4E,GACnB,GAAIwN,GAAQF,EAAO5V,KAAKG,OAASA,IAIjC,OAHqB,gBAAVmI,KACPwN,EAAQF,EAAO5V,KAAKG,KAAMmI,IAAUnI,MAEjC2V,EAqQX,MA3QAd,IAAU+rE,EAAenrE,GAQzB/V,OAAOuC,eAAe2+E,EAAcjhF,UAAW,UAM3CuC,IAAK,WACD,MAAOlC,MAAK2hF,SAEhBv/E,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,iCAEpBrW,MAAK2hF,QAAUphF,GAEnB8B,YAAY,EACZC,cAAc,IAQlBs+E,EAAcjhF,UAAUiiF,YAAc,SAAU14E,GAC5C,GAAIsE,IAAU,EAAG,GACbq0E,EAAmB7hF,KAAK8hF,wBAAwB54E,GAChD64E,EAAoB/hF,KAAKgiF,qBAAqB94E,GAC9CuE,EAAQzN,KAAKiiF,SAASJ,EAAkBE,GACxCG,EAAO,IACX,IAAoB,MAAfliF,KAAKmiF,YAAyC,KAAhBniF,KAAKmiF,OAAyB,CAC7D,GAAIzL,IAAS,GACT0L,MAAe,GACfC,EAAO,CACX,IAA8B,IAA1BriF,KAAK0gF,UAAU1/E,OACfohF,EAAe,MAEd,CACD,GAAI1B,GAAY1gF,KAAK0gF,UACjB4B,EAAYtiF,KAAKuiF,aAAa7B,GAC9BW,EAAMrhF,KAAKqhF,IAAIiB,EACnBD,GAAOhB,EACPe,EAAkB,EAAIf,EAAQ,EAElC3K,EAAM,GAAK0L,CACX,IAAIzL,GAAU32E,KAAKwiF,iBAAiBt5E,EAAYk5E,EAAcL,EAAmBM,EAEjF,OADAH,GAAO,GAAIzL,IAAmBjpE,EAAQC,EAAOipE,EAAOC,GAGxD,MAAOuL,IAMXtB,EAAcjhF,UAAU8iF,gBAAkB,WACtC,GAAI9B,GAAS3gF,IAOb,OANqB,OAAhBA,KAAK2hF,aAA2C,KAAjB3hF,KAAK2hF,UACrChB,EAAOM,OAAUjhF,KAAa,SAEX,MAAlBA,KAAK0gF,eAA+C,KAAnB1gF,KAAK0gF,YACvCC,EAAOD,UAAa1gF,KAAe,WAEhC2gF,GAOXC,EAAcjhF,UAAUsiF,SAAW,SAAUJ,EAAkBa,GAE3D,IAAK,GADDj1E,IAA6B,EAAnBo0E,GACL3+E,EAAI,EAAIA,EAAI2+E,IAAqB3+E,EACtCuK,EAAW,EAAJvK,GAAU,EACjBuK,EAAY,EAAJvK,EAAS,GAAM,CAE3B,OAAOuK,IAMXmzE,EAAcjhF,UAAUmiF,wBAA0B,SAAU54E,GACxD,GAAIf,GAAQ,CACZ,QAAQe,GACJ,IAAKkT,iBAAckC,IACfnW,EAAQ,CACR,MACJ,KAAKiU,iBAAcsC,KACfvW,EAAQ,CACR,MACJ,KAAKiU,iBAAcoC,UACfrW,EAAQ,CACR,MACJ,SACI,KAAM,IAAIkO,OAAM,gDAAkDnN,EAAa,eAEvF,MAAOf,IASXy4E,EAAcjhF,UAAU6iF,iBAAmB,SAAUt5E,EAAYy5E,EAAaZ,EAAmBM,GAC7F,GAAIlhF,EACJ,QAAQ+H,GACJ,IAAKkT,iBAAcoC,UACfrd,EAASnB,KAAK4iF,oBAAoBD,EAAaZ,EAAmBM,EAClE,MACJ,KAAKjmE,iBAAcsC,KACfvd,EAASnB,KAAK6iF,eAAeF,EAAaZ,EAAmBM,EAC7D,MACJ,KAAKjmE,iBAAckC,IACfnd,EAASnB,KAAK8iF,cAAcH,EAAaZ,EAAmBM,EAC5D,MACJ,SACI,KAAM,IAAIhsE,OAAM,gDAAkDnN,EAAa,eAEvF,MAAO/H,IAQXy/E,EAAcjhF,UAAUijF,oBAAsB,SAAUD,EAAaZ,EAAmBM,GAEpF,IAAK,GADDlhF,IAAyB,EAAdwhF,GACNz/E,EAAI,EAAIA,EAAIy/E,IAAgBz/E,EACrBlD,KAAK+iF,aAAa7/E,EAAGm/E,EAAMjmE,gBAAcoC,UAGzD,OAAOrd,IAQXy/E,EAAcjhF,UAAUmjF,cAAgB,SAAUH,EAAaZ,EAAmBM,GAE9E,IAAK,GADDlhF,IAAyB,EAAdwhF,GACNz/E,EAAI,EAAIA,EAAIy/E,IAAgBz/E,EAAG,CACpC,GAAIkd,GAAQpgB,KAAK+iF,aAAa7/E,EAAGm/E,EAAMjmE,gBAAckC,KACjD9O,EAAa,EAAJtM,CACb/B,GAAOqO,GAAS4Q,EAAMvc,EACtB1C,EAAQqO,EAAQ,GAAM4Q,EAAMlD,EAC5B/b,EAAQqO,EAAQ,GAAM4Q,EAAMjL,EAEhC,MAAOhU,IAQXy/E,EAAcjhF,UAAUkjF,eAAiB,SAAUF,EAAaZ,EAAmBM,GAE/E,IAAK,GADDlhF,IAAyB,EAAdwhF,GACNz/E,EAAI,EAAIA,EAAIy/E,EAAcz/E,IAAK,CACpC,GAAIkd,GAAQpgB,KAAK+iF,aAAa7/E,EAAGm/E,EAAMjmE,gBAAcsC,MACjDlP,EAAa,EAAJtM,CACb/B,GAAOqO,GAAW4Q,EAAM7c,EAAIw+E,EAC5B5gF,EAAQqO,EAAQ,GAAQ4Q,EAAMnB,EAAI8iE,EAClC5gF,EAAQqO,EAAQ,GAAQ4Q,EAAMzN,EAAIovE,EAClC5gF,EAAQqO,EAAQ,GAAQ4Q,EAAM3f,EAAIshF,EAEtC,MAAO5gF,IAQXy/E,EAAcjhF,UAAUojF,aAAe,SAAUvzE,EAAO6yE,EAAMn5E,GAC1D,GACI85E,GACAC,EAIA7iE,EANAjF,EAAYknE,EAAO7yE,EAGnBvM,EAASjD,KAAKkjF,WAAW/nE,EAAU8nE,EAAUD,EAIjD,KAHAC,EAAWhgF,EAAOggF,aAClBD,EAAU//E,EAAO+/E,SAGb5iE,EAAQpgB,KAAK2hF,QAAQsB,OAEpB,CACD,GAAIE,GAAcnjF,KAAK0gF,UAAUuC,GAC7BG,EAAapjF,KAAK0gF,UAAUsC,GAC5BK,EAAWrjF,KAAK2hF,QAAQsB,GACxBK,EAAUtjF,KAAK2hF,QAAQqB,GACvBv8B,GAAMtrC,EAAWgoE,IAAgBC,EAAaD,EAClD/iE,GAAQpgB,KAAKghF,YAAYv6B,EAAG48B,EAAUC,EAASp6E,GAEnD,MAAOkX,IAQXwgE,EAAcjhF,UAAUujF,WAAa,SAAU/nE,EAAU8nE,EAAUD,GAC/D,GAAItC,GAAY1gF,KAAK0gF,SACrBuC,GAAW,EACXD,EAAU,CACV,KAAK,GAAI9/E,GAAI,EAAIA,EAAIlD,KAAK2hF,QAAQ3gF,SAAWkC,EAAG,CAC5C,GAAIqgF,GAAU7C,EAAUx9E,EACxB,IAAKqgF,IAAYpoE,EAAW,CACxB6nE,EAAU9/E,EACV+/E,EAAW//E,CACX,OAEC,GAAKqgF,EAAUpoE,EAAW,CAC3B6nE,EAAU9/E,CACV,OAEJ+/E,EAAW//E,EACX8/E,EAAU9/E,EAEd,OAAS+/E,SAAUA,EAAUD,QAASA,IAM1CpC,EAAcjhF,UAAUqiF,qBAAuB,SAAU94E,GACrD,GAAIjG,GAAS,CACb,QAAQiG,GACJ,IAAKkT,iBAAcsC,KACnB,IAAKtC,iBAAckC,IACfrb,EAAS,GACT,MACJ,KAAKmZ,iBAAcoC,UACfvb,EAAS,KACT,MACJ,SACI,KAAM,IAAIoT,OAAM,gDAAkDnN,EAAa,cAEvF,MAAOjG,IAMX29E,EAAcjhF,UAAU4iF,aAAe,SAAU7B,GAI7C,IAAK,GAHDv4E,GAAQu4E,EAAU1/E,OAClBshF,GAAcn6E,EAAQ,GACtBq7E,EAAO9C,EAAU,GACZx9E,EAAI,EAAIA,EAAIiF,IAAUjF,EAAG,CAC9B,GAAIq+E,GAAIb,EAAUx9E,EAClBo/E,GAAWp/E,EAAI,GAAOq+E,EAAIiC,EAC1BA,EAAOjC,EAEX,MAAOe,IAEJ1B,GACTT,IClSEtrE,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAqBnFouE,GAAwC,SAAUhuE,GAOlD,QAASguE,GAAuBnkE,EAAMC,EAAMC,EAAMC,GAC9C,GAAI9J,GAAQF,EAAO5V,KAAKG,KAAM,GAAI4O,KAAoB5O,IAMtD,IADA2V,EAAMg2C,sBAAwB,GAAI3jD,GAC9BsX,YAAgBH,IAAUI,YAAgBJ,IAAUK,YAAgB/C,IAAYgD,YAAgBhD,GAChG9G,EAAMkF,WAAW2E,EAAMC,GACvB9J,EAAM+tE,YAAcpkE,EACpB3J,EAAMguE,UAAYpkE,EAClB5J,EAAMiuE,UAAUjuE,EAAM+tE,YAAa/tE,EAAMguE,eAExC,IAAIrkE,YAAgBM,GAGrB,GAFAjK,EAAMkF,WAAW0E,EAAMC,GAElBC,IAASs3D,GAAsB8M,kBAAoBpkE,IAASs3D,GAAsB+M,iBAAmBrkE,IAASs3D,GAAsBgN,YAActkE,IAASs3D,GAAsBiN,SAAW,CAE7L,OADAruE,EAAMsuE,YAAc3kE,EACZG,GACJ,IAAKs3D,IAAsB8M,iBACvBluE,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKS,MAAOT,EAAKQ,KAChDnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKO,KAAMP,EAAKU,OAC7C,MACJ,KAAK+2D,IAAsB+M,gBACvBnuE,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC/CnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKS,MAAOT,EAAKU,OAC9C,MACJ,KAAK+2D,IAAsBgN,WACvBpuE,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC/CnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKS,MAAOT,EAAKQ,IAC9C,MACJ,KAAKi3D,IAAsBiN,SACvBruE,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC/CnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKO,KAAMP,EAAKU,OAC7C,MACJ,SACI,KAAM,IAAI3J,OAAM,0DAA4DoJ,EAAO,SAE3F9J,EAAMiuE,UAAUjuE,EAAM+tE,YAAa/tE,EAAMguE,eAExC,IAAoB,gBAATlkE,QAAqC,KAATA,EAAsB,CAG9D,GAFA9J,EAAMsuE,YAAc3kE,EAEN,KADdG,GAAc,KAEV9J,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC/CnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKS,MAAOT,EAAKQ,SAE7C,IAAc,KAATL,EACN9J,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC/CnK,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKO,KAAMP,EAAKU,YAE5C,IAAc,MAATP,EACN9J,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC7CnK,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKS,MAAOT,EAAKQ,SAE/C,IAAc,MAATL,EACN9J,EAAMguE,UAAY,GAAIxkE,GAAOG,EAAKO,KAAMP,EAAKQ,KAC7CnK,EAAM+tE,YAAc,GAAIvkE,GAAOG,EAAKO,KAAMP,EAAKU,YAE9C,CACD,GACIkkE,GAAYzkE,GADL5M,KAAKypB,GAAK,KAEjB77B,EAAIoS,KAAKsxE,IAAID,GACbxxE,EAAKiD,EAAMsuE,YAAYpkE,MACnBlK,EAAMsuE,YAAYlkE,MAAQpK,EAAMsuE,YAAYpkE,MAAQ,EACxDlN,EAAKgD,EAAMsuE,YAAYnkE,KACnBnK,EAAMsuE,YAAYjkE,OAASrK,EAAMsuE,YAAYnkE,KAAO,EACxDskE,EAAS,GAAIjlE,GAAOzM,EAAGC,EAE3BA,GAAMlS,GADNiS,EAAKiD,EAAMsuE,YAAY36E,OAAS,EAAKuJ,KAAKmqB,IAAIknD,KAE9CxxE,GAAS0xE,EAAO1xE,EAChBC,GAASyxE,EAAOzxE,CAChB,IAAI0xE,GAAK,GAAIllE,GAAOzM,EAAGC,GACnB2xE,EAAM3uE,EAAM4uE,UAAUF,EAAID,GAE1B/5E,EAAIsL,EAAM6uE,YAAY/kE,GACtBglE,EAAQ9uE,EAAM+uE,UAAU/uE,EAAM4uE,UAAUl6E,EAAG+5E,GAASE,GAClD3uE,EAAM+uE,UAAUJ,EAAKA,EAC3B3uE,GAAMguE,UAAYhuE,EAAMgvE,UAAUP,EAAQzuE,EAAMivE,SAASN,EAAKG,IAE9D9uE,EAAM+tE,YAAc/tE,EAAMgvE,UAAUP,EAAQzuE,EAAMivE,SAASN,GAAc,EAARG,IAErE9uE,EAAMiuE,UAAUjuE,EAAMguE,UAAWhuE,EAAM+tE,aAG/C,MAAO/tE,GA8RX,MAzXAd,IAAU4uE,EAAwBhuE,GAkGlCguE,EAAuB9jF,UAAUkb,WAAa,SAAU6B,EAAQC,GAC5D3c,KAAK6kF,UAAYnoE,EAAQC,GACzB3c,KAAK8kF,aAAe,GAAIlE,IAAc,GACtC5gF,KAAK8kF,aAAapE,WAAa,EAAG,GAClC1gF,KAAK8kF,aAAa7D,OAASjhF,KAAK6kF,SAChC7kF,KAAK+kF,eAETrlF,OAAOuC,eAAewhF,EAAuB9jF,UAAW,SAOpDuC,IAAK,WACD,MAAOlC,MAAKglF,QAEhB5iF,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,gCAEpB,IAAsB,MAAjBrW,KAAK6kF,SACN,KAAM,IAAIxuE,OAAM,6EAEpBrW,MAAKglF,OAASzkF,EAEdP,KAAK8kF,aAAe9kF,KAAKglF,OAAOvE,mBAAmBzgF,KAAK6kF,SAAU7kF,KAAKkJ,YACvElJ,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewhF,EAAuB9jF,UAAW,uBAKpDuC,IAAK,WACD,MAAOlC,MAAK8kF,cAEhB1iF,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,8CAEpBrW,MAAKglF,OAAS,KACdhlF,KAAK6kF,SAAW,KAChB7kF,KAAK8kF,aAAevkF,EACpBP,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewhF,EAAuB9jF,UAAW,gBAKpDuC,IAAK,WACD,MAAOlC,MAAK6kF,UAEhBziF,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,uCAEpB,IAAK9V,EAAMS,OAAS,EAChB,KAAM,IAAIqV,OAAM,4DAEE,OAAjBrW,KAAK6kF,cAA6C,KAAlB7kF,KAAK6kF,SACtC7kF,KAAK6kF,UAAYtkF,EAAM,GAAIA,EAAM,KAGjCP,KAAK6kF,SAAS,GAAKtkF,EAAM,GACzBP,KAAK6kF,SAAS,GAAKtkF,EAAM,IAET,MAAfP,KAAKglF,YAAyC,KAAhBhlF,KAAKglF,QAEpChlF,KAAK8kF,aAAe,GAAIlE,IAAc,GACtC5gF,KAAK8kF,aAAa7D,OAASjhF,KAAK6kF,SAChC7kF,KAAK8kF,aAAapE,WAAa,EAAG,IAGlC1gF,KAAK8kF,aAAe9kF,KAAKglF,OAAOvE,mBAAmBzgF,KAAK6kF,SAAU7kF,KAAKkJ,YAE3ElJ,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewhF,EAAuB9jF,UAAW,aAKpDuC,IAAK,WACD,MAAOlC,MAAKikF,aAEhB5hF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAewhF,EAAuB9jF,UAAW,UAKpDuC,IAAK,WACD,GAAIe,GAAS6yE,GAAUpzD,KACnBrV,EAAUrN,KAAKiN,QAAQsC,MAAMnP,SAASJ,KAAK2rD,sBAAsBt+C,OACrE,IAAe,MAAVA,EAAiB,CAClB,GAAI43E,GAAY53E,EAAOkC,MAAM,GACzB21E,EAAU73E,EAAOkC,MAAM,EACvB01E,GAAS1kF,QACT0C,GAAmB6yE,GAAUzkB,OAE7B6zB,EAAO3kF,QACP0C,GAAmB6yE,GAAUqP,KAGrC,MAAOliF,IAEXb,IAAK,SAAU7B,GACX,GACI0kF,GACAC,EAFA73E,EAAUrN,KAAKiN,QAAQsC,MAAMnP,SAASJ,KAAK2rD,sBAAsBt+C,OAGtD,OAAVA,GACD43E,EAAW,GAAIv3D,IAAW,GAC1Bw3D,EAAS,GAAIx3D,IAAW,IACxBrgB,EAAS,GAAIyF,IACNY,IAAIuxE,GACX53E,EAAOqG,IAAIwxE,GACXllF,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBt+C,OAAQA,KAG/D43E,EAAY53E,EAAOkC,MAAM,GACzB21E,EAAU73E,EAAOkC,MAAM,KAK/BlN,YAAY,EACZC,cAAc,IAQlBmhF,EAAuB9jF,UAAUglF,UAAY,SAAUS,EAAQC,GAC3D,GAAI3yE,GAAK0yE,EAAO1yE,EAAI2yE,EAAO3yE,EACvBC,EAAKyyE,EAAOzyE,EAAI0yE,EAAO1yE,CAE3B,OADa,IAAIwM,GAAOzM,EAAGC,IAQ/B8wE,EAAuB9jF,UAAU4kF,UAAY,SAAUa,EAAQC,GAC3D,GAAI3yE,GAAK0yE,EAAO1yE,EAAI2yE,EAAO3yE,EACvBC,EAAKyyE,EAAOzyE,EAAI0yE,EAAO1yE,CAE3B,OADa,IAAIwM,GAAOzM,EAAGC,IAQ/B8wE,EAAuB9jF,UAAU+kF,UAAY,SAAUU,EAAQC,GAE3D,MADeD,GAAO1yE,EAAI2yE,EAAO3yE,EAAM0yE,EAAOzyE,EAAI0yE,EAAO1yE,GAQ7D8wE,EAAuB9jF,UAAUilF,SAAW,SAAUlnD,EAAOn9B,GAGzD,MAFAm9B,GAAMhrB,EAAKgrB,EAAMhrB,EAAInS,EACrBm9B,EAAM/qB,EAAK+qB,EAAM/qB,EAAIpS,EACdm9B,GAMX+lD,EAAuB9jF,UAAU6kF,YAAc,SAAUznD,GACrD,GAAIW,GAAQ,GAAIve,GAAO,EAAG,EAE1B,IAAK4d,EAAQ,IAAQA,EAAQ,EACzBW,EAAQ,GAAIve,GAAOnf,KAAKikF,YAAYlkE,MAAO/f,KAAKikF,YAAYjkE,YAE3D,IAAK+c,EAAQ,KAASA,EAAQ,GAC/BW,EAAQ,GAAIve,GAAOnf,KAAKikF,YAAYpkE,KAAM7f,KAAKikF,YAAYjkE,YAE1D,IAAK+c,EAAQ,KAASA,EAAQ,IAC/BW,EAAQ,GAAIve,GAAOnf,KAAKikF,YAAYpkE,KAAM7f,KAAKikF,YAAYnkE,SAE1D,CAAA,KAAIid,EAAQ,KAIb,KAAM,IAAI1mB,OAAM,iCAHhBqnB,GAAQ,GAAIve,GAAOnf,KAAKikF,YAAYlkE,MAAO/f,KAAKikF,YAAYnkE,KAKhE,MAAO4d,IAOX+lD,EAAuB9jF,UAAUikF,UAAY,SAAUwB,EAAQC,GAC3D,GAAIt0B,GAAS,GAAIj+C,EACjBi+C,GAAOr9C,IAAI,GAAI5B,GAAUszE,EAAO1yE,IAChCq+C,EAAOr9C,IAAI,GAAI5B,GAAU9R,KAAKw5B,QAAQ4rD,EAAOzyE,KAC7Co+C,EAAOr9C,IAAI,GAAI5B,GAAUuzE,EAAO3yE,IAChCq+C,EAAOr9C,IAAI,GAAI5B,GAAU9R,KAAKw5B,QAAQ6rD,EAAO1yE,KAC7C3S,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBp+C,OAAQwjD,IAMnE0yB,EAAuB9jF,UAAU65B,QAAU,SAAU7mB,GACjD,MAAU,KAANA,GACQA,EAGDA,GAQf8wE,EAAuB9jF,UAAUolF,YAAc,WAC3C/kF,KAAKkJ,WAAakT,gBAAckC,IAChCte,KAAKoN,SAAWpN,KAAK8kF,aAAalD,YAAY5hF,KAAKkJ,YACnDlJ,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBr+C,YAAa,GAAIwE,GAAWklE,YAOvFyM,EAAuB9jF,UAAUkD,MAAQ,WACrC,GAAI0d,GAAQvgB,IAsBZ,OArBAugB,GAAM4oC,uBAAuB,GAAIv6C,GAAc5O,KAAK8oD,oBACpDvoC,EAAMtT,QAAU,GAAI2B,GACpB2R,EAAMwkE,cACNxkE,EAAMqjE,UAAUrjE,EAAMmjE,YAAanjE,EAAMojE,WAC3B,OAAVpjE,GAAkBA,YAAiBkjE,IACf,MAAfzjF,KAAKkN,YAAyC,KAAhBlN,KAAKkN,SACpCqT,EAAMrT,OAASlN,KAAKkN,OAAOrK,SAGb,MAAjB7C,KAAK6kF,cAA6C,KAAlB7kF,KAAK6kF,WACtCtkE,EAAMskE,SAAY7kF,KAAc,UAEjB,MAAdA,KAAKmhF,WAAuC,KAAfnhF,KAAKmhF,MACnC5gE,EAAM4gE,MAAQnhF,KAAKmhF,MAAMD,gBAES,MAA5BlhF,KAAKslF,yBAAmE,KAA7BtlF,KAAKslF,sBACtD/kE,EAAM+kE,oBAAsBtlF,KAAKslF,oBAAoB7C,mBAEzDliE,EAAMlT,OAASrN,KAAKqN,OACpBrN,KAAKqpD,qBAAqB9oC,GAC1BvgB,KAAKopD,uBAAuB7oC,GACrBA,GAMXkjE,EAAuB9jF,UAAUqpD,cAAgB,WAC7ChpD,KAAKoN,SAAWpN,KAAK8kF,aAAalD,YAAY5hF,KAAKkJ,aAEhDu6E,GACTt7B,ICvZEtzC,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAmBnFkwE,GAAwC,SAAU9vE,GAQlD,QAAS8vE,GAAuBC,EAAaC,EAAaC,EAAWC,EAAWC,EAAYC,GACxF,GAAIlwE,GAAQF,EAAO5V,KAAKG,KAAM,GAAI4O,KAAoB5O,IAMtD,IAFA2V,EAAMg2C,sBAAwB,GAAI3jD,GAClC2N,EAAMkF,WAAW+qE,EAAYC,GACzBJ,EAAc,EACd,KAAM,IAAIpvE,OAAM,mFAEpB,IAAIsvE,EAAY,EACZ,KAAM,IAAItvE,OAAM,iFAOpB,OALAV,GAAMguE,UAAY+B,EAClB/vE,EAAM+tE,YAAc8B,EACpB7vE,EAAMmwE,aAAeL,EACrB9vE,EAAMowE,WAAaJ,EACnBhwE,EAAMiuE,UAAUjuE,EAAM+tE,YAAa/tE,EAAMguE,UAAWhuE,EAAMmwE,aAAcnwE,EAAMowE,YACvEpwE,EAsOX,MA/PAd,IAAU0wE,EAAwB9vE,GAgClC8vE,EAAuB5lF,UAAUkb,WAAa,SAAU6B,EAAQC,GAC5D3c,KAAKgmF,SAAWtpE,EAAQC,GACxB3c,KAAKimF,cAAgB,GAAIrF,IAAc,GACvC5gF,KAAKimF,cAAcvF,WAAa,EAAG,GACnC1gF,KAAKimF,cAAchF,OAASjhF,KAAKgmF,QACjChmF,KAAK+kF,eAETrlF,OAAOuC,eAAesjF,EAAuB5lF,UAAW,SAMpDuC,IAAK,WACD,MAAOlC,MAAKglF,QAEhB5iF,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,gCAEpB,IAAqB,MAAhBrW,KAAKgmF,aAA2C,KAAjBhmF,KAAKgmF,QACrC,KAAM,IAAI3vE,OAAM,6EAEpBrW,MAAKglF,OAASzkF,EACdP,KAAKimF,cAAgBjmF,KAAKglF,OAAOvE,mBAAmBzgF,KAAKgmF,QAAShmF,KAAKkJ,YACvElJ,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAesjF,EAAuB5lF,UAAW,uBAKpDuC,IAAK,WACD,MAAOlC,MAAKimF,eAEhB7jF,IAAK,SAAU7B,GACX,GAAa,MAATA,EACA,KAAM,IAAI8V,OAAM,8CAEpBrW,MAAKglF,OAAS,KACdhlF,KAAKgmF,QAAU,KACfhmF,KAAKimF,cAAgB1lF,EACrBP,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAesjF,EAAuB5lF,UAAW,gBAKpDuC,IAAK,WACD,MAAOlC,MAAKgmF,SAEhB5jF,IAAK,SAAU7B,GACX,GAAc,MAATA,EACD,KAAM,IAAI8V,OAAM,8CAEpB,IAAK9V,EAAMS,OAAS,EAChB,KAAM,IAAIqV,OAAM,0DAEC,OAAhBrW,KAAKgmF,aAA2C,KAAjBhmF,KAAKgmF,QACrChmF,KAAKgmF,SAAWzlF,EAAM,GAAIA,EAAM,KAGhCP,KAAKgmF,QAAQ,GAAKzlF,EAAM,GACxBP,KAAKgmF,QAAQ,GAAKzlF,EAAM,IAER,MAAfP,KAAKglF,YAAyC,KAAhBhlF,KAAKglF,QAEpChlF,KAAKimF,cAAgB,GAAIrF,IAAc,GACvC5gF,KAAKimF,cAAchF,OAASjhF,KAAKgmF,QACjChmF,KAAKimF,cAAcvF,WAAa,EAAG,IAGnC1gF,KAAKimF,cAAgBjmF,KAAKglF,OAAOvE,mBAAmBzgF,KAAKgmF,QAAShmF,KAAKkJ,YAE3ElJ,KAAKgpD,iBAET3mD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAesjF,EAAuB5lF,UAAW,aAKpDuC,IAAK,WACD,MAAOlC,MAAKikF,aAEhB7hF,IAAK,SAAU7B,GACXP,KAAKikF,YAAc1jF,EACnBP,KAAKiL,KAAO6H,EAASyB,cAAchU,IAEvC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAesjF,EAAuB5lF,UAAW,UAMpDuC,IAAK,WACD,GAAI43C,GAAUg8B,GAAUpzD,KACpBwjE,EAAWlmF,KAAKiN,QAAQsC,MAAMnP,SAASJ,KAAK2rD,sBAAsBt+C,OACtE,IAAgB,OAAZ64E,OAAuC,KAAZA,EAAyB,CACpD,GAAIjB,GAAYiB,EAAQ32E,MAAM,GAC1B21E,EAAUgB,EAAQ32E,MAAM,EACxB01E,GAAS1kF,QACTu5C,GAAqBg8B,GAAUzkB,OAE/B6zB,EAAO3kF,QACPu5C,GAAqBg8B,GAAUqP,KAGvC,MAAOrrC,IAEX13C,IAAK,SAAU7B,GACX,GACI0kF,GACAkB,EAFA94E,EAAUrN,KAAKiN,QAAQsC,MAAMnP,SAASJ,KAAK2rD,sBAAsBt+C,OAGvD,OAAVA,OAAoC,KAAXA,GACzB43E,EAAW,GAAIv3D,IAAW,GAC1By4D,EAAU,GAAIz4D,IAAW,IACzBrgB,EAAS,GAAIyF,IACNY,IAAIuxE,GACX53E,EAAOqG,IAAIyyE,GACXnmF,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBt+C,OAAQA,KAG/D43E,EAAY53E,EAAOkC,MAAM,GACzB42E,EAAW94E,EAAOkC,MAAM,KAGhClN,YAAY,EACZC,cAAc,IAUlBijF,EAAuB5lF,UAAUikF,UAAY,SAAUwC,EAAYC,EAAUZ,EAAaE,GACtF,GAAI50B,GAAS,GAAIj+C,EACjBi+C,GAAOr9C,IAAI,GAAI5B,GAAUs0E,EAAW1zE,IACpCq+C,EAAOr9C,IAAI,GAAI5B,GAAU9R,KAAKw5B,QAAQ4sD,EAAWzzE,KACjDo+C,EAAOr9C,IAAI,GAAI5B,GAAU2zE,IACzB10B,EAAOr9C,IAAI,GAAI5B,GAAUu0E,EAAS3zE,IAClCq+C,EAAOr9C,IAAI,GAAI5B,GAAU9R,KAAKw5B,QAAQ6sD,EAAS1zE,KAC1C8yE,IAAgBE,EACjB50B,EAAOr9C,IAAI,GAAI5B,GAAU6zE,IAGzB50B,EAAOr9C,IAAI,GAAI5B,GAAU,IAE7B9R,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBp+C,OAAQwjD,IAMnEw0B,EAAuB5lF,UAAU65B,QAAU,SAAU7mB,GACjD,MAAU,KAANA,GACQA,EAGDA,GAOf4yE,EAAuB5lF,UAAUolF,YAAc,WAC3C/kF,KAAKkJ,WAAakT,gBAAckC,IAChCte,KAAKoN,SAAWpN,KAAKimF,cAAcrE,YAAY5hF,KAAKkJ,YACpDlJ,KAAKiN,QAAQsC,MAAM/O,SAASR,KAAK2rD,sBAAsBr+C,YAAa,GAAIwE,GAAWklE,aAOvFuO,EAAuB5lF,UAAUkD,MAAQ,WACrC,GAAIyjF,GAAStmF,IAsBb,OArBAsmF,GAAOn9B,uBAAuB,GAAIv6C,GAAc5O,KAAK8oD,oBACrDw9B,EAAOr5E,QAAU,GAAI2B,GACrB03E,EAAOvB,cACPuB,EAAO1C,UAAU5jF,KAAK0jF,YAAa1jF,KAAK2jF,UAAW3jF,KAAK8lF,aAAc9lF,KAAK+lF,YACvEO,YAAkBf,IACG,OAAhBvlF,KAAKkN,YAA0C,KAAhBlN,KAAKkN,SACrCo5E,EAAOp5E,OAASlN,KAAKkN,OAAOrK,SAGd,OAAjB7C,KAAKgmF,aAA4C,KAAjBhmF,KAAKgmF,UACtCM,EAAON,QAAWhmF,KAAa,SAEf,OAAfA,KAAKmhF,WAAwC,KAAfnhF,KAAKmhF,MACpCmF,EAAOnF,MAAQnhF,KAAKmhF,MAAMD,gBAES,OAA7BlhF,KAAKslF,yBAAoE,KAA7BtlF,KAAKslF,sBACvDgB,EAAOhB,oBAAsBtlF,KAAKslF,oBAAoB7C,mBAE1D6D,EAAOj5E,OAASrN,KAAKqN,OACrBrN,KAAKqpD,qBAAqBi9B,GAC1BtmF,KAAKopD,uBAAuBk9B,GACrBA,GAMXf,EAAuB5lF,UAAUqpD,cAAgB,WAC7ChpD,KAAKoN,SAAWpN,KAAKimF,cAAcrE,YAAY5hF,KAAKkJ,aAEjDq8E,GACTp9B,KCtRF,SAAWo+B,GAKPA,EAAsBA,EAA+B,QAAI,GAAK,UAK9DA,EAAsBA,EAA8B,OAAI,GAAK,UAC9DA,0BAA0BA,4BChB7B,IAAI1xE,IAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAQnFmxE,GAAkC,WAClC,QAASA,MAyET,MAvEA9mF,QAAOuC,eAAeukF,EAAiB7mF,UAAW,mBAM9CuC,IAAK,WACD,MAAOlC,MAAKymF,qBAEhBrkF,IAAK,SAAU7B,GACXP,KAAKymF,oBAAsBlmF,GAE/B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeukF,EAAiB7mF,UAAW,aAK9CuC,IAAK,WACD,MAAOlC,MAAK0mF,eAEhBtkF,IAAK,SAAU7B,GACXP,KAAK0mF,cAAgBnmF,GAEzB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeukF,EAAiB7mF,UAAW,WAK9CuC,IAAK,WACD,MAAOlC,MAAK2mF,aAEhBvkF,IAAK,SAAU7B,GACXP,KAAK2mF,YAAcpmF,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeukF,EAAiB7mF,UAAW,QAK9CuC,IAAK,WACD,MAAOlC,MAAK4mF,UAEhBxkF,IAAK,SAAU7B,GACXP,KAAK4mF,SAAWrmF,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeukF,EAAiB7mF,UAAW,mBAK9CuC,IAAK,WACD,MAAOlC,MAAK6mF,qBAEhBzkF,IAAK,SAAU7B,GACXP,KAAK6mF,oBAAsBtmF,GAE/B8B,YAAY,EACZC,cAAc,IAEXkkF,KAMPM,GAA8B,SAAUrxE,GAOxC,QAASqxE,KACL,GAAInxE,GAAQF,EAAO5V,KAAKG,OAASA,IAIjC,OAHA2V,GAAMoxE,uBAAyBR,wBAAsBS,QACrDrxE,EAAMsxE,0BAA2B,EACjCtxE,EAAMuxE,2BAA6BC,4BAA0BC,SACtDzxE,EAqFX,MAhGAd,IAAUiyE,EAAcrxE,GAaxB/V,OAAOuC,eAAe6kF,EAAannF,UAAW,eAM1CuC,IAAK,WAID,WAHoC,KAAzBlC,KAAKqnF,kBACZrnF,KAAKqnF,gBAAkB,GAEpBrnF,KAAKqnF,iBAEhBjlF,IAAK,SAAU7B,GACXP,KAAKqnF,gBAAkB9mF,GAE3B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe6kF,EAAannF,UAAW,0BAK1CuC,IAAK,WACD,MAAOlC,MAAKknF,4BAEhB9kF,IAAK,SAAU7B,GACXP,KAAKknF,2BAA6B3mF,GAEtC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe6kF,EAAannF,UAAW,2BAK1CuC,IAAK,WACD,MAAOlC,MAAKinF,0BAEhB7kF,IAAK,SAAU7B,GACXP,KAAKinF,yBAA2B1mF,GAEpC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe6kF,EAAannF,UAAW,eAK1CuC,IAAK,WAID,WAHoC,KAAzBlC,KAAKsnF,kBACZtnF,KAAKsnF,gBAAkB,GAAInY,KAExBnvE,KAAKsnF,iBAEhBllF,IAAK,SAAU7B,OACyB,KAAzBP,KAAKsnF,iBACZtnF,KAAKsnF,gBAAkB,GAAInY,IAC3BnvE,KAAKsnF,gBAAkB/mF,GAGvBP,KAAKsnF,gBAAkB/mF,GAG/B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe6kF,EAAannF,UAAW,sBAK1CuC,IAAK,WACD,MAAOlC,MAAK+mF,wBAEhB3kF,IAAK,SAAU7B,GACXP,KAAK+mF,uBAAyBxmF,GAElC8B,YAAY,EACZC,cAAc,IAEXwkF,GACTN,IAKEe,GAAkC,SAAU9xE,GAM5C,QAAS8xE,KACL,GAAI5xE,GAAQF,EAAO5V,KAAKG,OAASA,IAMjC,OADA2V,GAAM6xE,gBAAkB/Y,GAAWyB,QAC5Bv6D,EAgDX,MA5DAd,IAAU0yE,EAAkB9xE,GAc5B/V,OAAOuC,eAAeslF,EAAiB5nF,UAAW,gBAM9CuC,IAAK,WACD,MAAOlC,MAAKklB,QAEhB9iB,IAAK,SAAU7B,GACXP,KAAKklB,OAAS3kB,GAElB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeslF,EAAiB5nF,UAAW,WAK9CuC,IAAK,WACD,MAAOlC,MAAKwnF,iBAEhBplF,IAAK,SAAU7B,GACXP,KAAKwnF,gBAAkBjnF,GAE3B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeslF,EAAiB5nF,UAAW,eAK9CuC,IAAK,WACD,MAAOlC,MAAKsnF,iBAEhBllF,IAAK,SAAU7B,GACiB,MAAxBP,KAAKsnF,qBAA2D,KAAzBtnF,KAAKsnF,kBAC5CtnF,KAAKsnF,gBAAkB,GAAInY,KAE/BnvE,KAAKsnF,gBAAkB/mF,GAE3B8B,YAAY,EACZC,cAAc,IAEXilF,GACTf,IAKEiB,GAAiC,WAMjC,QAASA,MA+HT,MA5HA/nF,QAAOuC,eAAewlF,EAAgB9nF,UAAW,mBAM7CuC,IAAK,WACD,MAAOlC,MAAK0nF,wBAEhBrlF,YAAY,EACZC,cAAc,IAElBmlF,EAAgB9nF,UAAUgoF,mBAAqB,SAAUpnF,GAErD,GADAP,KAAK0nF,uBAAyBnnF,MACH,KAAhBP,KAAKuI,OACZ,IAAK,GAAIrF,GAAI,EAAGA,EAAIlD,KAAKuI,OAAOq/E,MAAMz/E,MAAOjF,IACzClD,KAAKuI,OAAOq/E,MAAMC,QAAQ3kF,GAAG4lB,MAAMg/D,gBAAkBvnF,GAIjEb,OAAOuC,eAAewlF,EAAgB9nF,UAAW,aAK7CuC,IAAK,WACD,MAAOlC,MAAK+nF,kBAEhB1lF,YAAY,EACZC,cAAc,IAElBmlF,EAAgB9nF,UAAUqoF,aAAe,SAAUznF,GAE/C,GADAP,KAAK+nF,iBAAmBxnF,MACG,KAAhBP,KAAKuI,OACZ,IAAK,GAAIrF,GAAI,EAAGA,EAAIlD,KAAKuI,OAAOq/E,MAAMz/E,MAAOjF,IACzClD,KAAKuI,OAAOq/E,MAAMC,QAAQ3kF,GAAG4lB,MAAM4jD,UAAYnsE,GAI3Db,OAAOuC,eAAewlF,EAAgB9nF,UAAW,WAK7CuC,IAAK,WACD,MAAOlC,MAAKioF,gBAEhB5lF,YAAY,EACZC,cAAc,IAElBmlF,EAAgB9nF,UAAUuoF,WAAa,SAAU3nF,GAE7C,GADAP,KAAKioF,eAAiB1nF,MACK,KAAhBP,KAAKuI,OACZ,IAAK,GAAIrF,GAAI,EAAGA,EAAIlD,KAAKuI,OAAOq/E,MAAMz/E,MAAOjF,IACzClD,KAAKuI,OAAOq/E,MAAMC,QAAQ3kF,GAAG4lB,MAAMq/D,QAAU5nF,GAIzDb,OAAOuC,eAAewlF,EAAgB9nF,UAAW,QAK7CuC,IAAK,WACD,MAAOlC,MAAKooF,aAEhB/lF,YAAY,EACZC,cAAc,IAElBmlF,EAAgB9nF,UAAU2G,QAAU,SAAU/F,GAE1C,GADAP,KAAKooF,YAAc7nF,MACQ,KAAhBP,KAAKuI,OACZ,IAAK,GAAIrF,GAAI,EAAGA,EAAIlD,KAAKuI,OAAOq/E,MAAMz/E,MAAOjF,IACzClD,KAAKuI,OAAOq/E,MAAMC,QAAQ3kF,GAAG4lB,MAAMngB,KAAOpI,GAItDb,OAAOuC,eAAewlF,EAAgB9nF,UAAW,UAK7CuC,IAAK,WAID,WAHkC,KAAvBlC,KAAKqoF,eACZroF,KAAKsoF,UAAU,GAAI7Z,KAEhBzuE,KAAKqoF,eAEhBhmF,YAAY,EACZC,cAAc,IAElBmlF,EAAgB9nF,UAAU2oF,UAAY,SAAU/nF,GAE5C,GADAP,KAAKqoF,cAAgB9nF,MACM,KAAhBP,KAAKuI,OACZ,IAAK,GAAIrF,GAAI,EAAGA,EAAIlD,KAAKuI,OAAOq/E,MAAMz/E,MAAOjF,IACzClD,KAAKuI,OAAOq/E,MAAMC,QAAQ3kF,GAAG4lB,MAAMy/D,QAAUhoF,GAQzDknF,EAAgB9nF,UAAU6oF,UAAY,SAAUjgF,GAC5CvI,KAAKuI,OAASA,GAElB7I,OAAOuC,eAAewlF,EAAgB9nF,UAAW,mBAK7CuC,IAAK,WACD,MAAOlC,MAAKyoF,wBAEhBpmF,YAAY,EACZC,cAAc,IAMlBmlF,EAAgB9nF,UAAU+oF,mBAAqB,SAAUnoF,GACrDP,KAAKyoF,uBAAyBloF,GAE3BknF,MAQX,SAAWN,GAKPA,EAA0BA,EAAoC,SAAI,GAAK,WAKvEA,EAA0BA,EAAoC,SAAI,GAAK,YACxEA,8BAA8BA,oCC9Y7BwB,IAA6B,WAC7B,QAASA,GAAYC,GAMjB5oF,KAAK6oF,UAAY,EAMjB7oF,KAAK8oF,WAAa,EAMlB9oF,KAAK+oF,QAAU,EACf/oF,KAAKgpF,WAAY,EAMjBhpF,KAAKipF,OAAQ,EAMbjpF,KAAKkpF,uBAAyB,EAC9BlpF,KAAKmpF,YAAa,EAClBnpF,KAAKopF,YAAa,EAIlBppF,KAAKqpF,UAAW,EAMhBrpF,KAAKmhD,SAAU,EACfnhD,KAAKspF,YAAc,EACnBtpF,KAAKupF,QAAU,MACI,KAARX,IACP5oF,KAAKwpF,QAAUZ,GAoiCvB,MAjiCAlpF,QAAOuC,eAAe0mF,EAAYhpF,UAAW,uBAEzCuC,IAAK,WACD,MAAOlC,MAAKypF,6BAEhBrnF,IAAK,SAAU7B,GACXP,KAAKypF,4BAA8BlpF,GAEvC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,sBACzCuC,IAAK,WACD,MAAOlC,MAAK0pF,4BAEhBtnF,IAAK,SAAU7B,GACXP,KAAK0pF,2BAA6BnpF,GAEtC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,oBACzCuC,IAAK,WACD,MAAOlC,MAAK2pF,0BAEhBvnF,IAAK,SAAU7B,GACXP,KAAK2pF,yBAA2BppF,GAEpC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,mBACzCuC,IAAK,WACD,MAAOlC,MAAK4pF,yBAEhBxnF,IAAK,SAAU7B,GACXP,KAAK4pF,wBAA0BrpF,GAEnC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,mBAKzCuC,IAAK,WACD,MAAOlC,MAAK6pF,WAEhBznF,IAAK,SAAU7B,GACXP,KAAK6pF,UAAYtpF,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,uBAKzCuC,IAAK,WACD,MAAOlC,MAAKqpF,UAEhBjnF,IAAK,SAAU7B,GACXP,KAAKqpF,SAAW9oF,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,gBAKzCuC,IAAK,WAID,MAHmB,OAAflC,KAAKklB,SACLllB,KAAKklB,OAAS,GAAItD,IAEf5hB,KAAKklB,QAEhB9iB,IAAK,SAAU7B,GACXP,KAAKklB,OAAS3kB,GAElB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,OAKzCuC,IAAK,WACD,MAAOlC,MAAKwpF,SAEhBpnF,IAAK,SAAU7B,GACXP,KAAKwpF,QAAUjpF,GAEnB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,SAKzCuC,IAAK,WACD,MAAOlC,MAAK8pF,aAEhB1nF,IAAK,SAAU7B,GAEX,GADAP,KAAK8pF,YAAcvpF,EACfP,KAAK8pF,sBAAuBC,IAAS,CACrC/pF,KAAK4oF,IAAIoB,KAAKC,cAAe,EAClBjqF,KAAK8pF,YACXI,WAAalqF,KAClBA,KAAK8pF,YAAYK,aAAc,CAE/B,KAAK,GADDC,GAAWpqF,KAAK4oF,IAAIoB,KAAKK,KAAKliF,MACzBjF,EAAI,EAAGA,EAAIknF,EAAUlnF,IAG1B,IAAK,GAFD0lF,GAAM5oF,KAAK4oF,IAAIoB,KAAKK,KAAKC,OAAOpnF,GAChCqnF,EAAW3B,EAAIhB,MAAMz/E,MAChB0rC,EAAI,EAAGA,EAAI02C,EAAU12C,IACf+0C,EAAIhB,MAAMC,QAAQh0C,GACxBtrC,OAASvI,OAK9BqC,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,WAKzCuC,IAAK,WACD,MAAOlC,MAAKspF,aAEhBlnF,IAAK,SAAU7B,GACX,GAAIA,EAAQ,EACR,KAAM,IAAI8V,OAAM,iFAGhBrW,MAAKspF,YAAc/oF,EACnBP,KAAK4oF,IAAI4B,eAAgB,EACzBxqF,KAAK4oF,IAAIoB,KAAKS,gBAAiB,GAGvCpoF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,SAKzCuC,IAAK,WAID,MAHsB,OAAlBlC,KAAK0qF,YACL1qF,KAAK0qF,UAAY,GAAInD,KAElBvnF,KAAK0qF,WAEhBtoF,IAAK,SAAU7B,GACXP,KAAK0qF,UAAYnqF,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,UAKzCuC,IAAK,WAID,MAHwB,KAApBlC,KAAK8oF,aACL9oF,KAAK8oF,WAAa9oF,KAAK2qF,iBAEpB3qF,KAAK8oF,YAEhB1mF,IAAK,SAAU7B,GACXP,KAAK8oF,WAAavoF,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,cAKzCuC,IAAK,WACD,MAAOlC,MAAKupF,SAEhBnnF,IAAK,SAAU7B,GACX,GAAIA,EAAQ,EACR,KAAM8V,OAAM,6DAGZrW,MAAKupF,QAAUhpF,EACfP,KAAK4oF,IAAIgC,kBAAmB,GAGpCvoF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe0mF,EAAYhpF,UAAW,SAKzCuC,IAAK,WAID,OAHuB,IAAnBlC,KAAK6oF,WAAmB7oF,KAAK4oF,IAAIoB,KAAKa,cACtC7qF,KAAK6oF,UAAY7oF,KAAK8qF,gBAEnBj4E,KAAKgU,MAAM7mB,KAAK6oF,YAE3BzmF,IAAK,SAAU7B,GACXP,KAAK6oF,UAAYtoF,GAErB8B,YAAY,EACZC,cAAc,IAOlBqmF,EAAYhpF,UAAUmrF,aAAe,WAGjC,GAAIxhF,GAAQ,EACRyhF,EAAW,GAAIrmE,EACnB,IAAgC,gBAArB1kB,MAAK8pF,YAGZxgF,GADUyhF,EAASnmE,OAAO5kB,KAAK8pF,YAAa9pF,KAAKgrF,cAAehrF,KAAKmgC,aAAc,GAAI/gB,GAAM/E,OAAOqxB,UAAWrxB,OAAOqxB,YAAY,EAAO,GAAItsB,GAAM,EAAG,IACzI4I,WAAW1e,MACxBA,GAA4E,GAAlEtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,WAElE,IAAItJ,KAAK8pF,sBAAuBC,IACjCzgF,EAAQtJ,KAAK8pF,YAAYpoF,KAAK4H,UAG7B,IAAItJ,KAAK8pF,sBAAuBvjD,KAAYvmC,KAAK8pF,sBAAuB1iD,IACzE99B,GAAStJ,KAAK8pF,YAAYxgF,UAEzB,IAAItJ,KAAK8pF,sBAAuB7Y,IAAgB,CACjD,GAAIga,GAAUjrF,KAAK8pF,WAGnBxgF,IAFayhF,EAASnmE,OAAOqmE,EAAQ70E,KAAM60E,EAAQtiF,KAAMsiF,EAAQ9qD,aAAc,GAAI/gB,GAAM,EAAG,IAAI,EAAO,GAAIA,GAAM,EAAG,IAEpG4I,WAAW1e,MAC3BA,GAA4E,GAAlEtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,OA6BvE,MA3BMtJ,MAAK8pF,sBAAuBC,IASA,MAA1B/pF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,iBACT,KAAhClrF,KAAK8oB,MAAMoiE,YAAYrrE,MAAwB7f,KAAK8oB,MAAMoiE,YAAY9b,aAC7E9lE,GAAStJ,KAAK8oB,MAAMoiE,YAAYrrE,UAEQ,KAAjC7f,KAAK8oB,MAAMoiE,YAAYnrE,OAAyB/f,KAAK8oB,MAAMoiE,YAAY7b,cAC9E/lE,GAAStJ,KAAK8oB,MAAMoiE,YAAYnrE,aAIgB,KAAzC/f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYrrE,MAAwB7f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY9b,aAC/F9lE,GAAStJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYrrE,UAEQ,KAA1C7f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYnrE,OAAyB/f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY7b,cAChG/lE,GAAStJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYnrE,QArBnB,MAA1B/f,KAAK8oB,MAAMoiE,YACX5hF,GAAUtJ,KAAK8oB,MAAMoiE,YAAYrrE,KAAO7f,KAAK8oB,MAAMoiE,YAAYnrE,MAG/DzW,GAAUtJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYrrE,KAAO7f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYnrE,MAqBzFzW,GAAStJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMqiE,aAOjCxC,EAAYhpF,UAAUyrF,mBAAqB,SAAUnsD,EAAUzqB,GAC3D,GAAIszE,GAAkB9nF,KAAKqrF,oBAO3B,IALuB,MAAnBvD,IACA7oD,EAASx8B,OACTw8B,EAAS4wB,cAAci4B,EAAiBtzE,EAAO9B,EAAG8B,EAAO7B,EAAG6B,EAAOlL,MAAOkL,EAAOjL,QACjF01B,EAASK,WAEqB,MAA9Bt/B,KAAK8oB,MAAMwiE,gBAAyB,CACxBtrF,KAAKurF,oBACjBtsD,GAASg0B,UAAUjzD,KAAK8oB,MAAMwiE,gBAAiB92E,EAAO9B,EAAG8B,EAAO7B,EAAG6B,EAAOlL,MAAOkL,EAAOjL,UAQhGo/E,EAAYhpF,UAAU6rF,wBAA0B,SAAUh3E,GAEtD,GAAIi3E,GAAe,GAAIpsE,GAAW7K,EAAO9B,EAAG8B,EAAO7B,EAAG6B,EAAOlL,MAAOkL,EAAOjL,OAyD3E,OAxDMvJ,MAAK8pF,sBAAuBC,KAqBA,MAA1B/pF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,iBACI,KAA7ClrF,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,MAAwB7f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAY9b,aACvGqc,EAAa/4E,GAAK1S,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,KAAO7f,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MACzFmiF,EAAaniF,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,UAEP,KAA5C7f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYprE,KAAuB9f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAY5b,YACtGmc,EAAa94E,GAAK3S,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MACvFmiF,EAAaliF,QAAUvJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYprE,SAEN,KAA9C9f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,OAAyB/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAY7b,cACxGoc,EAAaniF,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,WAEJ,KAA/C/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYlrE,QAA0BhgB,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAY3b,eACzGkc,EAAaliF,QAAUvJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYlrE,cAIpB,KAAhChgB,KAAK8oB,MAAMoiE,YAAYrrE,MAAwB7f,KAAK8oB,MAAMoiE,YAAY9b,aAC7Eqc,EAAa/4E,GAAK1S,KAAK8oB,MAAMoiE,YAAYrrE,KAAO7f,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MAC5EmiF,EAAaniF,OAAStJ,KAAK8oB,MAAMoiE,YAAYrrE,UAEP,KAA/B7f,KAAK8oB,MAAMoiE,YAAYprE,KAAuB9f,KAAK8oB,MAAMoiE,YAAY5b,YAC5Emc,EAAa94E,GAAK3S,KAAK8oB,MAAMoiE,YAAYprE,IAAM9f,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MAC1EmiF,EAAaliF,QAAUvJ,KAAK8oB,MAAMoiE,YAAYprE,SAEN,KAAjC9f,KAAK8oB,MAAMoiE,YAAYnrE,OAAyB/f,KAAK8oB,MAAMoiE,YAAY7b,cAC9Eoc,EAAaniF,OAAStJ,KAAK8oB,MAAMoiE,YAAYnrE,WAEJ,KAAlC/f,KAAK8oB,MAAMoiE,YAAYlrE,QAA0BhgB,KAAK8oB,MAAMoiE,YAAY3b,eAC/Ekc,EAAaliF,QAAUvJ,KAAK8oB,MAAMoiE,YAAYlrE,SAGtDyrE,EAAaniF,OAAUtJ,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MAAQtJ,KAAK0qF,UAAUnC,QAAQxoE,MAAMzW,MACxFmiF,EAAaliF,QAAWvJ,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MAAQtJ,KAAK0qF,UAAUnC,QAAQvoE,OAAO1W,WArDnD,KAA3BtJ,KAAK8oB,MAAMoiE,aAAyD,MAA1BlrF,KAAK8oB,MAAMoiE,aAC5DO,EAAa/4E,GAAK1S,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,KAAO7f,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MACzFmiF,EAAa94E,GAAK3S,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MACvFmiF,EAAaniF,OAAUtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,MAAQ/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,KACvG4rE,EAAaliF,QAAWvJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYlrE,OAAShgB,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYprE,IACzG2rE,EAAaliF,QAAWvJ,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MAAQtJ,KAAK0qF,UAAUnC,QAAQvoE,OAAO1W,QAGzFmiF,EAAa/4E,GAAK1S,KAAK8oB,MAAMoiE,YAAYrrE,KAAO7f,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MAC5EmiF,EAAa94E,GAAK3S,KAAK8oB,MAAMoiE,YAAYprE,IAAM9f,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MAC1EmiF,EAAaniF,OAAUtJ,KAAK8oB,MAAMoiE,YAAYnrE,MAAQ/f,KAAK8oB,MAAMoiE,YAAYrrE,KAC7E4rE,EAAaniF,OAAUtJ,KAAK0qF,UAAUnC,QAAQ1oE,KAAKvW,MAAQtJ,KAAK0qF,UAAUnC,QAAQxoE,MAAMzW,MACxFmiF,EAAaliF,QAAWvJ,KAAK8oB,MAAMoiE,YAAYlrE,OAAShgB,KAAK8oB,MAAMoiE,YAAYprE,IAC/E2rE,EAAaliF,QAAWvJ,KAAK0qF,UAAUnC,QAAQzoE,IAAIxW,MAAQtJ,KAAK0qF,UAAUnC,QAAQvoE,OAAO1W,MACpE,IAAjBtJ,KAAK0rF,UACLD,EAAaniF,OAAUtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAW,QAwC1D4rE,GAMX9C,EAAYhpF,UAAUygC,KAAO,SAAUnB,EAAUzqB,EAAQm3E,GAuBrD,GAAI1oF,GAAS,IAab,IAAIjD,KAAKypF,6BAA+BzpF,KAAK0pF,2BAA4B,CACrE,IAAI1pF,KAAKypF,8BAA+BzpF,KAAK4oF,IAAIoB,KAAKlhE,MAAM8iE,wBAMxD,MAAO3oF,EALP,IAAKjD,KAAK4oF,IAAIiD,iBAAmB,GAAM7rF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,OAASA,KAAK4oF,IAAIiD,iBAAmB,GAAqC,GAA7B7rF,KAAK4oF,IAAIiD,kBAAyB7rF,KAAKypF,4BAC9I,MAAOxmF,GAQnBuR,EAASxU,KAAK8rF,sBAAsBt3E,EAAQyqB,GAC5Cj/B,KAAKorF,mBAAmBnsD,EAAUzqB,EAClC,IAAI2zE,GAAUnoF,KAAK+rF,aACfrf,EAAY1sE,KAAKgsF,mBACE,KAAZ7D,OAAgD,KAAdzb,IACzCA,EAAY,GAAIvsD,GAAc,GAAI1D,GAAS,EAAG,EAAG,IAErD,IAAI9T,GAAO3I,KAAKgrF,cACZiB,EAAYjsF,KAAKksF,kBACjBC,EAAkB33E,CAsBtB,IArBI23E,EAAgB5iF,QAAU01B,EAASja,WAAWzb,QAE1CvJ,KAAK4oF,IAAIoB,KAAKoC,2BACdD,EAAgB5iF,QAAU4iF,EAAgBx5E,MACX,KAApB3S,KAAKqsF,YAAkD,OAApBrsF,KAAKqsF,YAAuBF,EAAgB5iF,OAASvJ,KAAKqsF,aACpGF,EAAgB5iF,OAASvJ,KAAKqsF,aAe1CF,EAAkBnsF,KAAKwrF,wBAAwBW,GACf,gBAArBnsF,MAAK8pF,aAAsD,gBAAnB9pF,MAAK6pF,UAAwB,CAC5E,GAAIxkD,OAAO,GACPmuB,MAAkB,EAKtB,IAHIA,EADA24B,EAAgB5iF,OAASZ,EAAKY,OACZ,GAAI8V,GAAW8sE,EAAgBz5E,EAAGy5E,EAAgBx5E,EAAGw5E,EAAgB7iF,MAAOX,EAAKY,QAEjF4iF,EAClBA,EAAgB5iF,OAASZ,EAAKY,QAAUvJ,KAAK4oF,IAAIoB,KAAKG,aAA2C,MAA5BnqF,KAAK4oF,IAAIoB,KAAKE,WAAoB,CACvG,GAAI3gF,GAASiqD,EAAgBjqD,OAASvJ,KAAK4oF,IAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OAAShgB,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,QAC1F,GAArChgB,KAAK4oF,IAAIoB,KAAKsC,qBACdtsF,KAAKgpF,WAAY,EACjBhpF,KAAK4oF,IAAI2D,cAAe,GAExBhjF,EAAS,GAAKA,EAASZ,EAAKY,SAC5BiqD,EAAgBjqD,OAASA,GAQU,GAAvCvJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,cACxB33B,EAAgBlqD,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,YACjD32E,EAAOlL,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,aAExCnrF,KAAKqpF,UAKLhkD,EAA0B,KAAnBrlC,KAAK6pF,UAAmB7pF,KAAK6pF,UAAY7pF,KAAK8pF,YACrD7qD,EAAS+vB,WAAW3pB,EAAM18B,EAAMw/E,EAASzb,EAAWlZ,EAAgB9gD,EAAG8gD,EAAgB7gD,EAAG6gD,EAAgBlqD,MAAOkqD,EAAgBjqD,OAAQ0iF,IAChG,GAArCjsF,KAAK4oF,IAAIoB,KAAKsC,oBAA6BtsF,KAAK4oF,IAAIoB,KAAKG,iBAAyC,KAAnBnqF,KAAK6pF,YACpF7pF,KAAK6pF,UAAY,UAKQ,KAAlB7pF,KAAK6pF,WAA+C,OAAnB7pF,KAAK6pF,YAC7C7pF,KAAK6pF,UAAY,IAEjB7pF,KAAK4oF,IAAI4D,YACTvtD,EAAS+vB,WAAWhvD,KAAK6pF,UAAWlhF,EAAMw/E,EAASzb,EAAWlZ,EAAgB9gD,EAAG8gD,EAAgB7gD,EAAG6gD,EAAgBlqD,MAAOkqD,EAAgBjqD,OAAQ0iF,GAWvJjsF,KAAKqpF,UAAW,GAGpBpmF,EAASg8B,EAAS0yC,uBAKjB,IAAI3xE,KAAK8pF,sBAAuBC,IAAS,CAC1C,GAAI0C,GAAYzsF,KAAK8pF,WACrB2C,GAAUtC,aAAc,EACxBsC,EAAUvC,WAAalqF,IACvB,IAAI0sF,OAAa,EACjBA,GAAaP,EAC8B,GAAvCnsF,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,cACxB32E,EAAOlL,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,YAa5C,IAAIJ,GAAW,GAAI4B,IAAgBF,GAC/BvnE,EAAS,GAAI0nE,GACiB,OAA9B5sF,KAAK4oF,IAAIoB,KAAK6C,aACd3nE,EAASllB,KAAK4oF,IAAIoB,KAAK6C,aAEvB3nE,EAAON,OAASojC,gBAAc8kC,QAClC,IAAIpf,GAAQ,GAAIY,GAChB,IAAsB,MAAlBrvC,EAAS+wB,MAAe,CAExB0d,EAAM/sC,KAAO1B,EAAS0B,KACtB+sC,EAAMl5D,OAASk4E,EACfhf,EAAMxoD,OAASA,EAEfunE,EAAUM,UACVN,EAAUO,WAEV,IAAIC,GAAkBlC,EAASnd,SAASF,EAExC1tE,MAAKO,MAAQksF,GAC6B,IAAtCzsF,KAAK4oF,IAAIoB,KAAKsC,qBACdtsF,KAAKuJ,OAASvJ,KAAK4oF,IAAIsE,qBAEvBxf,EAAM/sC,MAAQssD,EAAgBtsD,OAEO,OAAjC3gC,KAAK4oF,IAAIsE,yBAAwE,KAAjCltF,KAAK4oF,IAAIsE,sBACzDD,EAAgBz4E,OAAOjL,OAASvJ,KAAK4oF,IAAIsE,qBACd,GAA3BltF,KAAK4oF,IAAIuE,eACTntF,KAAK4oF,IAAIwE,uBAAyBH,EAElCjtF,KAAK4oF,IAAIuE,eAAiBntF,KAAK4oF,IAAIsE,0BAO9C,IAAIltF,KAAK8pF,sBAAuBvjD,KAAYvmC,KAAK8pF,sBAAuB1iD,IAAW,CACpF,GAAIimD,OAAc,EAEdA,GADArtF,KAAK8pF,YAAYxgF,OAAS6iF,EAAgB7iF,MAC5B,GAAI+V,GAAW8sE,EAAgBz5E,EAAGy5E,EAAgBx5E,EAAG3S,KAAK8pF,YAAYxgF,MAAO6iF,EAAgB5iF,QAG7F4iF,EAElBltD,EAASg0B,UAAUjzD,KAAK8pF,YAAauD,EAAY36E,EAAG26E,EAAY16E,EAAG06E,EAAY/jF,MAAO+jF,EAAY9jF,YAE7FvJ,MAAK8pF,sBAAuB7Y,IACjCjxE,KAAK8pF,YAAY1pD,KAAKnB,EAAS2B,YAAaurD,OAEX,KAArBnsF,KAAK8pF,cACjB9pF,KAAK8pF,YAAc,GACnB7qD,EAAS+vB,WAAWhvD,KAAK8pF,YAAanhF,EAAMw/E,EAASzb,EAAWyf,EAAgBz5E,EAAGy5E,EAAgBx5E,EAAGw5E,EAAgB7iF,MAAO6iF,EAAgB5iF,OAAQ0iF,GACvH,MAA1BjsF,KAAK8oB,MAAMoiE,aAAwD,GAAjClrF,KAAK8oB,MAAMoiE,YAAYlrE,QAA8C,GAA/BhgB,KAAK8oB,MAAMoiE,YAAYrrE,MAA6C,GAAhC7f,KAAK8oB,MAAMoiE,YAAYnrE,OAA4C,GAA9B/f,KAAK8oB,MAAMoiE,YAAYprE,MACxKtL,EAAOlL,OAAUtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,OAEnC,GAAvCtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,cACxB32E,EAAOlL,OAAStJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,aAahD,OAV0B,OAAtBnrF,KAAK8oB,MAAMy/D,UACNvoF,KAAKgpF,WAGuD,GAAzDhpF,KAAK4oF,IAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKsC,qBAClCtsF,KAAK4oF,IAAI2D,cAAe,EACxBvsF,KAAKstF,gBAAgBruD,EAAUzqB,IAJnCxU,KAAKstF,gBAAgBruD,EAAUzqB,IAQhCvR,GAOX0lF,EAAYhpF,UAAU2tF,gBAAkB,SAAUruD,EAAUzqB,GACpDxU,KAAK4oF,IAAIoB,KAAKlhE,MAAMykE,qBAAuBhH,wBAAsBiH,SACjEh5E,EAAO9B,GAAK1S,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MACpCkL,EAAO7B,GAAK3S,KAAK8oB,MAAMy/D,QAAQzoE,IAAIxW,MACnCkL,EAAOlL,OAAStJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,MACzCkL,EAAOjL,QAAUvJ,KAAK8oB,MAAMy/D,QAAQvoE,OAAO1W,MAE/C,IAAI+6E,GAAK,GAAIllE,GAAO3K,EAAO9B,EAAG8B,EAAO7B,EAAI6B,EAAOjL,QAC5CkxD,EAAK,GAAIt7C,GAAO3K,EAAO9B,EAAG8B,EAAO7B,GACjCqpB,EAAMh8B,KAAK0qF,UAAUnC,QAAQ1oE,IAC7B7f,MAAK0qF,UAAUnC,QAAQ1oE,KAAK8uD,YAAczyD,eAAa6e,QACvDiB,EAAID,QAAU9f,aAAWwxE,QAGX,IAAdzxD,EAAI1yB,OACJ21B,EAAS0wB,SAAS3zB,EAAKqoD,EAAI5pB,GAE/B4pB,EAAK,GAAIllE,GAAO3K,EAAO9B,EAAI8B,EAAOlL,MAAOkL,EAAO7B,GAChD8nD,EAAK,GAAIt7C,GAAO3K,EAAO9B,EAAI8B,EAAOlL,MAAOkL,EAAO7B,EAAI6B,EAAOjL,QAC3DyyB,EAAMh8B,KAAK0qF,UAAUnC,QAAQxoE,MACxBvL,EAAO9B,EAAI8B,EAAOlL,MAAU21B,EAASja,WAAW1b,MAAS0yB,EAAI1yB,MAAQ,IACtE+6E,EAAK,GAAIllE,GAAO8f,EAASja,WAAW1b,MAAS0yB,EAAI1yB,MAAQ,EAAIkL,EAAO7B,GACpE8nD,EAAK,GAAIt7C,GAAO8f,EAASja,WAAW1b,MAAS0yB,EAAI1yB,MAAQ,EAAIkL,EAAO7B,EAAI6B,EAAOjL,SAE/EvJ,KAAK0qF,UAAUnC,QAAQxoE,MAAM4uD,YAAczyD,eAAa6e,QACxDiB,EAAID,QAAU9f,aAAWwxE,QAEX,IAAdzxD,EAAI1yB,OACJ21B,EAAS0wB,SAAS3zB,EAAKqoD,EAAI5pB,GAE/B4pB,EAAK,GAAIllE,GAAO3K,EAAO9B,EAAG8B,EAAO7B,GACjC8nD,EAAK,GAAIt7C,GAAO3K,EAAO9B,EAAI8B,EAAOlL,MAAOkL,EAAO7B,GAChDqpB,EAAMh8B,KAAK0qF,UAAUnC,QAAQzoE,IACzB9f,KAAK0qF,UAAUnC,QAAQzoE,IAAI6uD,YAAczyD,eAAa6e,QACtDiB,EAAID,QAAU9f,aAAWwxE,QAEX,IAAdzxD,EAAI1yB,OACJ21B,EAAS0wB,SAAS3zB,EAAKqoD,EAAI5pB,GAE/B4pB,EAAK,GAAIllE,GAAO3K,EAAO9B,EAAI8B,EAAOlL,MAAOkL,EAAO7B,EAAI6B,EAAOjL,QAC3DkxD,EAAK,GAAIt7C,GAAO3K,EAAO9B,EAAG8B,EAAO7B,EAAI6B,EAAOjL,QAC5CyyB,EAAMh8B,KAAK0qF,UAAUnC,QAAQvoE,OACxBxL,EAAO7B,EAAI6B,EAAOjL,OAAW01B,EAASja,WAAWzb,OAAUyyB,EAAI1yB,MAAQ,IACxE+6E,EAAK,GAAIllE,GAAQ3K,EAAO9B,EAAI8B,EAAOlL,MAAS21B,EAASja,WAAWzb,OAAUyyB,EAAI1yB,MAAQ,GACtFmxD,EAAK,GAAIt7C,GAAO3K,EAAO9B,EAAIusB,EAASja,WAAWzb,OAAUyyB,EAAI1yB,MAAQ,IAErEtJ,KAAK0qF,UAAUnC,QAAQvoE,OAAO2uD,YAAczyD,eAAa6e,QACzDiB,EAAID,QAAU9f,aAAWwxE,QAEX,IAAdzxD,EAAI1yB,OACJ21B,EAAS0wB,SAAS3zB,EAAKqoD,EAAI5pB,IAanCkuB,EAAYhpF,UAAUmsF,sBAAwB,SAAUt3E,EAAQ0I,GAC5D,GAAIwwE,IAAW,EACXvC,EAAcnrF,KAAK4oF,IAAIoB,KAAKlhE,MAAMqiE,WAClCA,GAAc,IACd32E,EAAS,GAAI6K,GAAW7K,EAAO9B,EAAIy4E,EAAa32E,EAAO7B,EAAIw4E,EAAa32E,EAAOlL,MAAQ6hF,EAAa32E,EAAOjL,OAAS4hF,GAExH,IAAIwC,GAAkB3tF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,KAC7C,IAAIA,KAAK4tF,WAAa,GAAM5tF,KAAK4oF,IAAIiD,iBAAmB,GAAM8B,GAAmB3tF,KAAK4oF,IAAIiD,iBAAmB,GAAM7rF,KAAK6tF,oBAAsB,CAE1I,GAAY,IADRC,EAAO9tF,KAAK4tF,aACC5tF,KAAK6tF,oBAClB,IAAK,GAAIh6C,GAAI85C,EAAkB,EAAG95C,EAAI7zC,KAAK4oF,IAAIoB,KAAKrgF,QAAQxB,OACpDnI,KAAK4oF,IAAIhB,MAAMC,QAAQh0C,GAAGg6C,oBADiCh6C,IAE3Di6C,GAMZ,KAAK,GADDC,GAAa,EACR7qF,EAAIyqF,EAAiBzqF,EAAIyqF,EAAkBG,EAAM5qF,IAAK,CAC3D,GAAIlD,KAAK4oF,IAAIoB,KAAKlhE,MAAM8iE,wBAAyB,CAC7C,GACIoC,GAAYhuF,KAAK4oF,IAAIoB,KAAKtoF,KAAK4H,MAAQ4T,EAAE8H,WAAW1b,MAAQtJ,KAAK4oF,IAAIoB,KAAKtoF,KAAK4H,MAAQ4T,EAAE8H,WAAW1b,KAOxG,KANItJ,KAAK4oF,IAAIoB,KAAKtoF,KAAK4H,MAAQ4T,EAAE8H,WAAW1b,MAChCkL,EAAO9B,EAAIq7E,EAAa/tF,KAAK4oF,IAAIoB,KAAKrgF,QAAQskF,UAAU/qF,GAAGoG,MAG3DykF,EAAa/tF,KAAK4oF,IAAIoB,KAAKrgF,QAAQskF,UAAU/qF,GAAGoG,OAEhD0kF,EACR,MAGRD,GAAc/tF,KAAK4oF,IAAIoB,KAAKrgF,QAAQskF,UAAU/qF,GAAGoG,MAErDykF,GAAc/tF,KAAK4oF,IAAIoB,KAAKlhE,MAAMqiE,YAClC32E,EAAOlL,MAAQykF,EAEnB,GAAI/tF,KAAK0rF,QAAU,GAAK1rF,KAAK4oF,IAAI4B,cAAe,CAC5C,GAAIsD,GAAO9tF,KAAK0rF,QACZwC,EAAkBluF,KAAK4oF,IAAIoB,KAAKK,KAAK8D,cAAc7qF,QAAQtD,KAAK4oF,MAC5C,GAApBsF,IAEwB,IADxBA,EAAkBluF,KAAK4oF,IAAIoB,KAAKoE,QAAQ9qF,QAAQtD,KAAK4oF,QAEjD8E,GAAW,EAenB,KAAK,GAFDW,GAAc,EAETnrF,EAAIgrF,EAAiBhrF,EAAIgrF,EAAkBJ,EAAM5qF,IAAK,CAC3DmrF,GAAgBX,EAAW1tF,KAAK4oF,IAAIoB,KAAKoE,QAAQE,UAAUprF,GAAGqG,OAASvJ,KAAK4oF,IAAIoB,KAAKK,KAAKC,OAAOpnF,GAAGqG,MACpG,IAAIq/E,GAAM5oF,KAAK4oF,IAAIoB,KAAKK,KAAKC,OAAOpnF,EACrBlD,MAAK4oF,IAAIoB,KAAKK,KAAK8D,cAAc7qF,QAAQslF,GAuC5C5oF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,KACvCquF,IAAeruF,KAAK4oF,IAAIoB,KAAKlhE,MAAMqiE,YAMnC32E,EAAOjL,OAAS8kF,EAEXruF,KAAK4oF,IAAI2F,mBACV/5E,EAAOjL,OAAS8kF,GAGxB,MAAO75E,IAOXm0E,EAAYhpF,UAAUqrF,YAAc,WAChC,WAA+B,KAApBhrF,KAAK8oB,MAAMngB,MAA2C,MAAnB3I,KAAK8oB,MAAMngB,KAC9C3I,KAAK8oB,MAAMngB,SAEkB,KAAxB3I,KAAK4oF,IAAI9/D,MAAMngB,MAA+C,MAAvB3I,KAAK4oF,IAAI9/D,MAAMngB,KAC3D3I,KAAK4oF,IAAI9/D,MAAMngB,SAEmB,KAA7B3I,KAAK4oF,IAAIoB,KAAKlhE,MAAMngB,MAAoD,MAA5B3I,KAAK4oF,IAAIoB,KAAKlhE,MAAMngB,KACrE3I,KAAK4oF,IAAIoB,KAAKlhE,MAAMngB,KAGpB0jB,GAAYoU,aAO3BkoD,EAAYhpF,UAAUqsF,aAAe,WACjC,WAAoC,KAAzBhsF,KAAK8oB,MAAM4jD,WAAqD,MAAxB1sE,KAAK8oB,MAAM4jD,UACnD1sE,KAAK8oB,MAAM4jD,cAEuB,KAA7B1sE,KAAK4oF,IAAI9/D,MAAM4jD,WAAyD,MAA5B1sE,KAAK4oF,IAAI9/D,MAAM4jD,UAChE1sE,KAAK4oF,IAAI9/D,MAAM4jD,UAGf1sE,KAAK4oF,IAAIoB,KAAKlhE,MAAM4jD,WAOnCic,EAAYhpF,UAAUosF,WAAa,WAC/B,WAAkC,KAAvB/rF,KAAK8oB,MAAMq/D,SAAiD,MAAtBnoF,KAAK8oB,MAAMq/D,QACjDnoF,KAAK8oB,MAAMq/D,YAEqB,KAA3BnoF,KAAK4oF,IAAI9/D,MAAMq/D,SAAqD,MAA1BnoF,KAAK4oF,IAAI9/D,MAAMq/D,QAC9DnoF,KAAK4oF,IAAI9/D,MAAMq/D,QAGfnoF,KAAK4oF,IAAIoB,KAAKlhE,MAAMq/D,SAOnCQ,EAAYhpF,UAAU0rF,mBAAqB,WACvC,WAA0C,KAA/BrrF,KAAK8oB,MAAMg/D,iBAAiE,MAA9B9nF,KAAK8oB,MAAMg/D,gBACzD9nF,KAAK8oB,MAAMg/D,oBAE6B,KAAnC9nF,KAAK4oF,IAAI9/D,MAAMg/D,iBAAqE,MAAlC9nF,KAAK4oF,IAAI9/D,MAAMg/D,gBACtE9nF,KAAK4oF,IAAI9/D,MAAMg/D,gBAGf9nF,KAAK4oF,IAAIoB,KAAKlhE,MAAMg/D,iBAOnCa,EAAYhpF,UAAU4rF,mBAAqB,WACvC,WAA0C,KAA/BvrF,KAAK8oB,MAAMwiE,iBAAiE,MAA9BtrF,KAAK8oB,MAAMwiE,gBACzDtrF,KAAK8oB,MAAMwiE,oBAE6B,KAAnCtrF,KAAK4oF,IAAI9/D,MAAMwiE,iBAAqE,MAAlCtrF,KAAK4oF,IAAI9/D,MAAMwiE,gBACtEtrF,KAAK4oF,IAAI9/D,MAAMwiE,gBAGftrF,KAAK4oF,IAAIoB,KAAKlhE,MAAMwiE,iBAOnC3C,EAAYhpF,UAAUusF,gBAAkB,WACpC,WAAuC,KAA5BlsF,KAAK8oB,MAAMqX,cAA2D,MAA3BngC,KAAK8oB,MAAMqX,aACtDngC,KAAK8oB,MAAMqX,aAGXngC,KAAKmgC,cAOpBwoD,EAAYhpF,UAAUgrF,cAAgB,WAGlC,GAAIrhF,GAAQtJ,KAAKwuF,gBAEa,OAA1BxuF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,YACpD5hF,GAAUtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,MAAQ/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,MAI1FvW,GAAUtJ,KAAK8oB,MAAMoiE,YAAYnrE,MAAQ/f,KAAK8oB,MAAMoiE,YAAYrrE,KAChEvW,GAAUtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,MAEvE,IAAIC,GAAS,EACTwhF,EAAW,GAAIrmE,EACnB,IAAgC,gBAArB1kB,MAAK8pF,aAAsD,gBAAnB9pF,MAAK6pF,UAAwB,CAC5E,GAAI4E,GAAezuF,KAAK8pF,WAEnB9pF,MAAKqpF,WACNoF,EAAoC,OAAnBzuF,KAAK6pF,WAAyC,KAAnB7pF,KAAK6pF,eACnB,KAAnB7pF,KAAK6pF,UAA6B7pF,KAAK6pF,UAAY7pF,KAAK8pF,YAEnE4E,GAAY1uF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,KACI,IAAvCA,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,cACxB7hF,GAA+C,EAAtCtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,aAEhCnrF,KAAK4oF,IAAIhB,MAAMC,QAAQ6G,GAAWtF,YAAeppF,KAAK4oF,IAAIhB,MAAMC,QAAQ6G,GAAWvF,aAChFnpF,KAAKwpF,QAAQQ,KAAKG,aACd7gF,EAAQ,GACRtJ,KAAK+oF,QAAUz/E,EACe,MAA1BtJ,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,YACpDlrF,KAAK+oF,SAAY/oF,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,MAAQ/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,MAGjG7f,KAAK+oF,SAAY/oF,KAAK8oB,MAAMoiE,YAAYnrE,MAAQ/f,KAAK8oB,MAAMoiE,YAAYrrE,KACvE7f,KAAK+oF,SAAY/oF,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,QAI9EtJ,KAAK+oF,QAAUz/E,EAGnBC,GADMwhF,EAASnmE,OAAO6pE,EAAczuF,KAAKgrF,cAAehrF,KAAKmgC,aAAc,GAAI/gB,GAAMpf,KAAK+oF,QAAS,IAAI,EAAO,GAAI3pE,GAAM,EAAG,IAC7G4I,WAAWze,QAIzBA,GADMwhF,EAASnmE,OAAO6pE,EAAczuF,KAAKgrF,cAAehrF,KAAKmgC,aAAc,GAAI/gB,GAAM9V,EAAO,IAAI,EAAO,GAAI8V,GAAM,EAAG,IACtG4I,WAAWze,QAIjCA,GAA6E,GAAlEvJ,KAAK8oB,MAAMy/D,QAAQzoE,IAAIxW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQvoE,OAAO1W,WAEnE,IAAItJ,KAAK8pF,sBAAuBC,IAAS,CAC1C,GAAI2E,GAAY1uF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,MACnC2uF,EAAgB,CACW,OAA1B3uF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,aACrDyD,EAAgB3uF,KAAKwuF,qBACsB,KAAhCxuF,KAAK8oB,MAAMoiE,YAAYrrE,MAAwB7f,KAAK8oB,MAAMoiE,YAAY9b,aAC7Euf,GAAiB3uF,KAAK8oB,MAAMoiE,YAAYrrE,UAEA,KAAjC7f,KAAK8oB,MAAMoiE,YAAYnrE,OAAyB/f,KAAK8oB,MAAMoiE,YAAY7b,cAC9Esf,GAAiB3uF,KAAK8oB,MAAMoiE,YAAYnrE,QAGH,MAAnC/f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,iBAAkE,KAApClrF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,aAC5EyD,EAAgB3uF,KAAKwuF,qBAC+B,KAAzCxuF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYrrE,MAAwB7f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY9b,aAC/Fuf,GAAiB3uF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYrrE,UAEA,KAA1C7f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYnrE,OAAyB/f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY7b,cAChGsf,GAAiB3uF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYnrE,QAIrD4uE,EAAgB3uF,KAAKwuF,iBAEzBxuF,KAAK8pF,YAAY8E,UAAYD,EACxB3uF,KAAK4oF,IAAIhB,MAAMC,QAAQ6G,GAAWtF,YAAeppF,KAAK4oF,IAAIhB,MAAMC,QAAQ6G,GAAWvF,WAIpF5/E,GAA6E,GAAlEvJ,KAAK8oB,MAAMy/D,QAAQzoE,IAAIxW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQvoE,OAAO1W,OAHpEC,EAASvJ,KAAK8pF,YAAYpoF,KAAK6H,OAKS,IAAxCvJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,cACxB7hF,GAA+C,EAAtCtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMqiE,aAGP,MAA1BnrF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,kBACD,KAAxClrF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,KAAuB9f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY5b,YAC9F/lE,GAAUvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,KAE1C9f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY3b,kBAAkE,KAA3CvvE,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,SACvFzW,GAAUvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,SAGlDzW,GAAUvJ,KAAK8pF,YAAYhhE,MAAMqiE,gBAEhC,IAAInrF,KAAK8pF,sBAAuBvjD,KAAYvmC,KAAK8pF,sBAAuB1iD,IACzE79B,GAAUvJ,KAAK8pF,YAAYvgF,WAE1B,IAAIvJ,KAAK8pF,sBAAuB7Y,IAAgB,CACjD,GAAIga,GAAUjrF,KAAK8pF,WAInBvgF,IAFUwhF,EAASnmE,OAAOqmE,EAAQ70E,KAAM60E,EAAQtiF,KAAMsiF,EAAQ9qD,aAAc,GAAI/gB,GAAM9V,EAAO,IAAI,EAAO,GAAI8V,GAAM,EAAG,IAEvG4I,WAAWze,OACzBA,GAA6E,GAAlEvJ,KAAK8oB,MAAMy/D,QAAQzoE,IAAIxW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQvoE,OAAO1W,gBAEnC,KAArBtJ,KAAK8pF,cACa,MAA1B9pF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,YACpD5hF,GAAUtJ,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYnrE,MAAQ/f,KAAKwpF,QAAQQ,KAAKlhE,MAAMoiE,YAAYrrE,MAG1FvW,GAAUtJ,KAAK8oB,MAAMoiE,YAAYnrE,MAAQ/f,KAAK8oB,MAAMoiE,YAAYrrE,KAChEvW,GAAUtJ,KAAK8oB,MAAMy/D,QAAQ1oE,KAAKvW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQxoE,MAAMzW,OAEvEC,GAA6E,GAAlEvJ,KAAK8oB,MAAMy/D,QAAQzoE,IAAIxW,MAAQtJ,KAAK8oB,MAAMy/D,QAAQvoE,OAAO1W,OA8BxE,OA3BMtJ,MAAK8pF,sBAAuBC,IASA,MAA1B/pF,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,iBACD,KAAxClrF,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,KAAuB9f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY5b,YAC9F/lE,GAAUvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,SAEQ,KAA3C9f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,QAA0BhgB,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAY3b,eACjGhmE,GAAUvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,cAIJ,KAA/BhgB,KAAK8oB,MAAMoiE,YAAYprE,KAAuB9f,KAAK8oB,MAAMoiE,YAAY5b,YAC5E/lE,GAAUvJ,KAAK8oB,MAAMoiE,YAAYprE,SAEQ,KAAlC9f,KAAK8oB,MAAMoiE,YAAYlrE,QAA0BhgB,KAAK8oB,MAAMoiE,YAAY3b,eAC/EhmE,GAAUvJ,KAAK8oB,MAAMoiE,YAAYlrE,SArBX,MAA1BhgB,KAAK8oB,MAAMoiE,iBAAyD,KAA3BlrF,KAAK8oB,MAAMoiE,YACpD3hF,GAAWvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAK4oF,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OAGjFzW,GAAWvJ,KAAK8oB,MAAMoiE,YAAYprE,IAAM9f,KAAK8oB,MAAMoiE,YAAYlrE,OAqBvEzW,GAAUvJ,KAAK4oF,IAAIoB,KAAKlhE,MAAMqiE,aAOlCxC,EAAYhpF,UAAU6uF,eAAiB,WACnC,GAAIE,GAAY1uF,KAAK4oF,IAAIhB,MAAMtkF,QAAQtD,MAEnC4tF,GADW5tF,KAAK4oF,IAAIoB,KAAKK,KAAK8D,cAAc7qF,QAAQtD,KAAK4oF,KAC5C5oF,KAAK4tF,YAClBtkF,EAAQ,CACZ,IAAmB,IAAfskF,EACA,IAAS1qF,EAAI,EAAGA,EAAI0qF,EAAY1qF,IAC5BoG,GAAStJ,KAAK4oF,IAAIoB,KAAKrgF,QAAQskF,UAAUS,EAAYxrF,GAAGoG,UAG3D,IAAIskF,EAAa,EAClB,IAAK,GAAI1qF,GAAI,EAAGA,EAAI0qF,EAAY1qF,IAC5BoG,GAAStJ,KAAK4oF,IAAIoB,KAAKrgF,QAAQskF,UAAUS,EAAYxrF,GAAGoG,MACnDpG,EAAI,EAAK0qF,IACV5tF,KAAK4oF,IAAIhB,MAAMC,QAAQ6G,EAAYxrF,EAAI,GAAGkmF,YAAa,EAInE,IAAmB,MAAfppF,KAAKuI,QAAkBvI,KAAKuI,OAAOqgF,IAAIt/E,MAAQ,GAC1CtJ,KAAK4oF,IAAIoB,kBAAoC,MAAfhqF,KAAKuI,QAAmBvI,KAAK4oF,IAAIt/E,MAAQtJ,KAAKuI,OAAOqgF,IAAIt/E,MAAQ,CAChGA,EAAQ,CACR,KAAK,GAAIuqC,GAAI,EAAGA,EAAI7zC,KAAKuI,OAAOqlF,WAAY/5C,IACxCvqC,GAAStJ,KAAKuI,OAAOqgF,IAAIoB,KAAKrgF,QAAQskF,UAAUp6C,GAAGvqC,KAEvDA,IAAgBtJ,KAAK4oF,IAAIhB,MAAMz/E,MAGvC,MAAOmB,IAEJq/E,KAQPkG,GAAuC,WAMvC,QAASA,GAAsBjG,GAK3B5oF,KAAK4nF,SACL5nF,KAAKwpF,QAAUZ,EA0CnB,MAnCAiG,GAAsBlvF,UAAUkoF,QAAU,SAAUr4E,GAChD,GAAIA,EAAQ,GAAKA,GAASxP,KAAKmI,MAC3B,KAAM,IAAIkO,OAAM,2BAEpB,OAAOrW,MAAK4nF,MAAMp4E,IAEtB9P,OAAOuC,eAAe4sF,EAAsBlvF,UAAW,SAKnDuC,IAAK,WACD,MAAOlC,MAAK4nF,MAAM5mF,QAEtBqB,YAAY,EACZC,cAAc,IAElBusF,EAAsBlvF,UAAU+T,IAAM,SAAUo7E,GAC5C,OAAoB,KAATA,EAAsB,CAC7B,GAAIC,GAAW,GAAIpG,GAEnB,OADA3oF,MAAK0T,IAAIq7E,GACFD,EAGPA,EAAKlG,IAAM5oF,KAAKwpF,QAChBxpF,KAAK4nF,MAAM1mF,KAAK4tF,IAOxBD,EAAsBlvF,UAAU2D,QAAU,SAAUwrF,GAChD,MAAO9uF,MAAK4nF,MAAMtkF,QAAQwrF,IAEvBD,KChqCPG,GAA+B,WAM/B,QAASA,GAAchF,GAMnBhqF,KAAKivF,YAAc,EACnBjvF,KAAKgqF,KAAOA,EAkChB,MAhCAtqF,QAAOuC,eAAe+sF,EAAcrvF,UAAW,SAK3CuC,IAAK,WACD,MAAOlC,MAAKivF,aAEhB7sF,IAAK,SAAU7B,GACXP,KAAKkvF,eAAgB,EACrBlvF,KAAKivF,YAAc1uF,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe+sF,EAAcrvF,UAAW,UAK3CuC,IAAK,WAID,MAHyB,OAArBlC,KAAKmgC,eACLngC,KAAKmgC,aAAe,GAAIve,IAErB5hB,KAAKmgC,cAEhB/9B,IAAK,SAAU7B,GACXP,KAAKmgC,aAAe5/B,GAExB8B,YAAY,EACZC,cAAc,IAEX0sF,KAQPG,GAAyC,WAOzC,QAASA,GAAwBnF,GAK7BhqF,KAAKovF,mBAKLpvF,KAAKivF,YAAc,EACnBjvF,KAAKgqF,KAAOA,EACZhqF,KAAKovF,mBA0HT,MAnHAD,GAAwBxvF,UAAU+T,IAAM,SAAUvL,GAI9C,IAAK,GAAIjF,GAAI,EAAGA,EAAIiF,EAAOjF,IAAK,CAC5BlD,KAAKovF,gBAAgBluF,KAAK,GAAI8tF,IAAchvF,KAAKgqF,MACjD,KAAK,GAAIx6E,GAAQ,EAAGA,EAAQxP,KAAKgqF,KAAKK,KAAKliF,MAAOqH,IAAS,CACvD,GAAIo5E,GAAM5oF,KAAKgqF,KAAKK,KAAKC,OAAO96E,GAC5Bs/E,EAAO,GAAInG,GACfmG,GAAKvuF,MAAQ,GACbqoF,EAAIhB,MAAMl0E,IAAIo7E,MAS1BpvF,OAAOuC,eAAektF,EAAwBxvF,UAAW,SAKrDuC,IAAK,WACD,MAAOlC,MAAKovF,gBAAgBpuF,QAEhCqB,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektF,EAAwBxvF,UAAW,SAKrDuC,IAAK,WAQD,MAPyB,KAArBlC,KAAKivF,cACLjvF,KAAKivF,YAAcjvF,KAAKqvF,uBAEG,IAA3BrvF,KAAKgqF,KAAKsF,cAAsBtvF,KAAKivF,cAAgBjvF,KAAKgqF,KAAKsF,cAAiBtvF,KAAKgqF,KAAKlhE,MAAM8iE,0BAChG5rF,KAAKivF,YAAcjvF,KAAKgqF,KAAKsF,aAC7BtvF,KAAKgqF,KAAKuF,aAAc,GAErBvvF,KAAKivF,aAEhB5sF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAektF,EAAwBxvF,UAAW,WAKrDuC,IAAK,WACD,MAAOlC,MAAKovF,iBAEhB/sF,YAAY,EACZC,cAAc,IAMlB6sF,EAAwBxvF,UAAUsuF,UAAY,SAAUz+E,GACpD,GAAIA,GAAS,GAAKA,GAASxP,KAAK2J,QAAQ3I,OACpC,MAAOhB,MAAK2J,QAAQ6F,EAGpB,MAAM6G,OAAM,0CAA4C7G,IAQhE2/E,EAAwBxvF,UAAU0vF,oBAAsB,WACpD,GAAItB,GAAa,CACjB/tF,MAAKgqF,KAAKqF,qBACV,KAAK,GAAInsF,GAAI,EAAGiF,EAAQnI,KAAKovF,gBAAgBpuF,OAAQkC,EAAIiF,EAAOjF,IAC5D6qF,GAAc/tF,KAAKovF,gBAAgBlsF,GAAGoG,KAE1C,OAAOykF,IAMXoB,EAAwBxvF,UAAU6vF,iBAAmB,SAAUzB,GAI3D,IAAK,GAHD5yC,MAEAs0C,EAAYzvF,KAAKmI,MACZjF,EAAI,EAAGA,EAAIlD,KAAKmI,MAAOjF,IACxBlD,KAAKgqF,KAAKuF,aAAexB,GAAc,IAAM/tF,KAAKovF,gBAAgBlsF,GAAGgsF,cACrElvF,KAAKovF,gBAAgBlsF,GAAGoG,MAAQ,GAGhC6xC,EAAOj4C,GAAKlD,KAAKovF,gBAAgBlsF,GAAGoG,MAChCtJ,KAAKovF,gBAAgBlsF,GAAGoG,MAAQ,GAAKtJ,KAAKovF,gBAAgBlsF,GAAGgsF,eAC7DnB,GAAc/tF,KAAKovF,gBAAgBlsF,GAAGoG,MACtCmmF,KAGAt0C,EAAOj4C,GAAK,EAIxB,KAASA,EAAI,EAAGA,EAAIlD,KAAKmI,MAAOjF,IAAK,CACjC,GAAIoG,GAAQykF,EAAa0B,CACrBt0C,GAAOj4C,IAAM,IACbi4C,EAAOj4C,GAAKoG,GAGpB,MAAO6xC,IAEJg0C,KCpMPO,GAA4B,WAM5B,QAASA,GAAW1F,GAKhBhqF,KAAK2vF,qBAAuB,EAK5B3vF,KAAK4vF,UAAY,EAKjB5vF,KAAK6vF,SAAW,EAKhB7vF,KAAK8vF,aAAc,EAMnB9vF,KAAK+vF,uBAAwB,EAK7B/vF,KAAKgwF,cAAgB,EAMrBhwF,KAAKiwF,gBAAiB,EACtBjwF,KAAKkwF,2BAA4B,EAMjClwF,KAAKmwF,oBAAqB,EAC1BnwF,KAAKwsF,YAAa,EAClBxsF,KAAKusF,cAAe,EACpBvsF,KAAKowF,aAAc,EACnBpwF,KAAKqwF,QAAUrG,EAoQnB,MAlQAtqF,QAAOuC,eAAeytF,EAAW/vF,UAAW,iBAMxCuC,IAAK,WACD,MAAOlC,MAAKswF,gBAEhBluF,IAAK,SAAU7B,GACXP,KAAKswF,eAAiB/vF,GAE1B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,SAKxCuC,IAAK,WAID,MAHsB,OAAlBlC,KAAKuwF,YACLvwF,KAAKuwF,UAAY,GAAI1B,IAAsB7uF,OAExCA,KAAKuwF,WAEhBluF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,QAKxCuC,IAAK,WACD,MAAOlC,MAAKqwF,SAEhBjuF,IAAK,SAAU7B,GACXP,KAAKqwF,QAAU9vF,GAEnB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,SAKxCuC,IAAK,WAKD,WAJ6B,KAAlBlC,KAAKwwF,WACZxwF,KAAKwwF,SAAW,GAAI/I,IACpBznF,KAAKwwF,SAAShI,UAAUxoF,OAErBA,KAAKwwF,UAEhBpuF,IAAK,SAAU7B,GACXP,KAAKwwF,SAAWjwF,CAChB,KAAK,GAAI2C,GAAI,EAAGA,EAAIlD,KAAK4nF,MAAMz/E,MAAOjF,IAClClD,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAMy/D,QAAUhoF,EAAMkwF,WAClB,KAAflwF,EAAMoI,OACb3I,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAMngB,KAAOpI,EAAMoI,UAER,KAA1BpI,EAAMunF,kBACb9nF,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAMg/D,gBAAkBvnF,EAAMunF,qBAEnB,KAA1BvnF,EAAM+qF,kBACbtrF,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAMwiE,gBAAkB/qF,EAAM+qF,qBAEzB,KAApB/qF,EAAMmsE,YACb1sE,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAM4jD,UAAYnsE,EAAMmsE,eAErB,KAAlBnsE,EAAM4nF,UACbnoF,KAAK4nF,MAAMC,QAAQ3kF,GAAG4lB,MAAMq/D,QAAU5nF,EAAM4nF,UAIxD9lF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,kBAKxCuC,IAAK,WAID,WAHuC,KAA5BlC,KAAK0wF,qBACZ1wF,KAAK0wF,mBAAqB,GAEvB1wF,KAAK0wF,oBAEhBtuF,IAAK,SAAU7B,GACXP,KAAK0wF,mBAAqBnwF,GAE9B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,oBAKxCuC,IAAK,WACD,MAAOlC,MAAK2vF,sBAEhBvtF,IAAK,SAAU7B,GACXP,KAAK2vF,qBAAuBpvF,GAEhC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,UAKxCuC,IAAK,WAID,MAHKlC,MAAKiwF,iBACNjwF,KAAK4vF,UAAY5vF,KAAK2qF,iBAEnB3qF,KAAK4vF,WAEhBxtF,IAAK,SAAU7B,GACXP,KAAK4vF,UAAYrvF,EACjBP,KAAKiwF,gBAAiB,GAE1B5tF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,SAKxCuC,IAAK,WAID,MAHsB,KAAlBlC,KAAK6vF,cAA2C,KAAlB7vF,KAAK6vF,WACnC7vF,KAAK6vF,SAAW7vF,KAAK8qF,gBAElB9qF,KAAK6vF,UAEhBxtF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,0BAKxCuC,IAAK,WACD,MAAOlC,MAAK2wF,YAEhBvuF,IAAK,SAAU7B,GACXP,KAAK2wF,WAAapwF,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,oBAKxCuC,IAAK,WACD,MAAOlC,MAAK4wF,mBAEhBxuF,IAAK,SAAU7B,GACXP,KAAK4wF,kBAAoBrwF,GAE7B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,oBAKxCuC,IAAK,WACD,MAAOlC,MAAKmwF,oBAEhB/tF,IAAK,SAAU7B,GACXP,KAAKmwF,mBAAqB5vF,GAE9B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeytF,EAAW/vF,UAAW,YAKxCuC,IAAK,WACD,MAAOlC,MAAKgqF,KAAKK,KAAK8D,cAAc7qF,QAAQtD,OAEhDqC,YAAY,EACZC,cAAc,IAOlBotF,EAAW/vF,UAAUgrF,cAAgB,WACjC,GACIiF,GADA1G,EAAyB,EAEzB9gE,EAAY,CAEZwnE,GADA5vF,KAAK4nF,MAAMC,QAAQ,GAAG6D,QAAU,EACpB,EAGA1rF,KAAK4nF,MAAMC,QAAQ,GAAGt+E,MAEtC,KAAK,GAAIrG,GAAI,EAAGA,EAAIlD,KAAK4nF,MAAMz/E,MAAOjF,IAAK,CACvC,GAAI4rF,GAAO9uF,KAAK4nF,MAAMC,QAAQ3kF,EAa9B,IAXI4rF,EAAK5F,uBAAyBA,IAC9BA,EAAyB4F,EAAK5F,wBASlClpF,KAAKuuF,kBAAmB,EACpBO,EAAKpD,QAAU,EAAnB,CAGI,IAAK,GAFDmF,GAAS3tF,EACT4tF,EAAQ9wF,KAAKowF,YAAcpwF,KAAKgqF,KAAKoE,QAAQ9qF,QAAQtD,MAAQA,KAAKgqF,KAAKK,KAAK8D,cAAc7qF,QAAQtD,MAC7F6zC,EAAI,EAAGA,EAAIi7C,EAAKpD,QAAS73C,IACzBA,EAAI,EAAKi7C,EAAKpD,WACd1rF,KAAKowF,YAAcpwF,KAAKgqF,KAAKoE,QAAQE,UAAUwC,EAAQj9C,EAAI,GAAK7zC,KAAKgqF,KAAKK,KAAKC,OAAOwG,EAAQj9C,EAAI,IAAI+zC,MAAMC,QAAQgJ,GAAQ1H,YAAa,EAG9I/gE,GAAY0mE,EAAKvlF,SACjB6e,EAAY0mE,EAAKvlF,YAIzBqmF,GAAY/8E,KAAKoV,IAAI2nE,EAAWd,EAAKvlF,QAWzC,MATI6e,GAAYwnE,IACZA,EAAYxnE,GAEE,IAAdwnE,EACAA,EAAYxnE,EAEP8gE,EAAyB,IAC9B0G,GAAa1G,GAEV0G,GAEXF,EAAW/vF,UAAUmrF,aAAe,WAEhC,IAAK,GADDiG,GAAS,EACJ7tF,EAAI,EAAGA,EAAIlD,KAAKgqF,KAAKrgF,QAAQxB,MAAOjF,IAEzC6tF,GADa/wF,KAAKgqF,KAAKrgF,QAAQskF,UAAU/qF,GACxBoG,KAErB,OAAOynF,IAEJrB,KAOPsB,GAAsC,WAMtC,QAASA,GAAqBhH,GAC1BhqF,KAAKqqF,QACLrqF,KAAKgqF,KAAOA,EAoDhB,MAlDAtqF,QAAOuC,eAAe+uF,EAAqBrxF,UAAW,SAMlDuC,IAAK,WACD,MAAOlC,MAAKqqF,KAAKrpF,QAErBqB,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe+uF,EAAqBrxF,UAAW,iBAMlDuC,IAAK,WACD,MAAOlC,MAAKqqF,MAEhBhoF,YAAY,EACZC,cAAc,IAElB0uF,EAAqBrxF,UAAUsxF,OAAS,SAAUx3D,GAC9C,OAAmB,KAARA,EAAqB,CAC5B,GAAIy3D,GAAU,GAAIxB,IAAW1vF,KAAKgqF,KAElC,OADAhqF,MAAKixF,OAAOC,GACLA,EAOP,GAJAz3D,EAAI3Q,MAAM6+D,mBAAmB3nF,KAAKgqF,KAAKlhE,MAAMg/D,iBAC7CruD,EAAI3Q,MAAMxiB,QAAQtG,KAAKgqF,KAAKlhE,MAAMngB,MAClC8wB,EAAI3Q,MAAMk/D,aAAahoF,KAAKgqF,KAAKlhE,MAAM4jD,WACvCjzC,EAAI3Q,MAAMo/D,WAAWloF,KAAKgqF,KAAKlhE,MAAMq/D,SACb,IAApB1uD,EAAImuD,MAAMz/E,MACV,IAAK,GAAIjF,GAAI,EAAGA,EAAIlD,KAAKgqF,KAAKrgF,QAAQxB,MAAOjF,IACzCu2B,EAAImuD,MAAMl0E,IAAI,GAAIi1E,IAG1B3oF,MAAKqqF,KAAKnpF,KAAKu4B,IAOvBu3D,EAAqBrxF,UAAU2qF,OAAS,SAAU96E,GAC9C,MAAOxP,MAAKqqF,KAAK76E,IAEdwhF,KAOPG,GAAyC,WAMzC,QAASA,GAAwBnH,GAK7BhqF,KAAKqqF,QACLrqF,KAAKgqF,KAAOA,EACZhqF,KAAKqqF,QA4CT,MArCA8G,GAAwBxxF,UAAU2uF,UAAY,SAAU9+E,GAIpD,MAAQxP,MAAKqqF,KAAK76E,IAEtB9P,OAAOuC,eAAekvF,EAAwBxxF,UAAW,SAKrDuC,IAAK,WACD,MAAOlC,MAAKqqF,KAAKrpF,QAErBqB,YAAY,EACZC,cAAc,IAElB6uF,EAAwBxxF,UAAU+T,IAAM,SAAU+lB,GAC9C,GAAmB,gBAARA,GAAkB,CAEzB,IAAK,GADDmvD,OAAM,GACD1lF,EAAI,EAAGA,EAAIu2B,EAAKv2B,IAAK,EAC1B0lF,EAAM,GAAI8G,IAAW1vF,KAAKgqF,OACtBoG,aAAc,CAClB,KAAK,GAAIv8C,GAAI,EAAGA,EAAI7zC,KAAKgqF,KAAKrgF,QAAQxB,MAAO0rC,IACzC+0C,EAAIhB,MAAMl0E,IAAI,GAAIi1E,IAEtB3oF,MAAKqqF,KAAKnpF,KAAK0nF,GAEnB,MAAO5oF,MAAKqqF,KAGZrqF,KAAKqqF,KAAKnpF,KAAKu4B,IAGvB03D,EAAwBxxF,UAAU2D,QAAU,SAAUslF,GAClD,MAAO5oF,MAAKqqF,KAAK/mF,QAAQslF,IAEtBuI,KClcPt8E,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAcnF00E,GAAyB,SAAUt0E,GAOnC,QAASs0E,KACL,GAAIp0E,GAAQF,EAAO5V,KAAKG,OAASA,IAoDjC,OA/CA2V,GAAMy7E,SAAW,GAAIhyE,GAAM,EAAG,GAI9BzJ,EAAM07E,aAAc,EAKpB17E,EAAM27E,cAAe,EAKrB37E,EAAM47E,WAAa,GAAIlyE,GAKvB1J,EAAM67E,uBAKN77E,EAAM87E,gBAAkB,EACxB97E,EAAMi5E,UAAY,EAKlBj5E,EAAM+7E,UAAW,EACjB/7E,EAAM22E,oBAAsB,EAa5B32E,EAAM80E,gBAAiB,EACvB90E,EAAMg8E,eAAgB,EACtBh8E,EAAMs0E,cAAe,EACdt0E,EAupBX,MAltBAd,IAAUk1E,EAASt0E,GA6DnB/V,OAAOuC,eAAe8nF,EAAQpqF,UAAW,sBAMrCuC,IAAK,WACD,WAAsC,KAAvBlC,KAAK4xF,eAA+D,aAAvB5xF,MAAK4xF,eAErEvvF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,oBAKrCuC,IAAK,WACD,WAAoC,KAArBlC,KAAK6xF,aAA2D,aAArB7xF,MAAK6xF,aAEnExvF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,gBAKrCuC,IAAK,WAID,MAH0B,OAAtBlC,KAAK8xF,mBAAuD,KAAvB9xF,KAAK8xF,gBAC1C9xF,KAAK8xF,eAAgB,GAElB9xF,KAAK8xF,eAEhB1vF,IAAK,SAAU7B,GACXP,KAAK8xF,cAAgBvxF,GAEzB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,4BAKrCuC,IAAK,WACD,MAAOlC,MAAK0xF,UAEhBtvF,IAAK,SAAU7B,GACXP,KAAK0xF,SAAWnxF,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,WAKrCuC,IAAK,WAID,MAHwB,OAApBlC,KAAK+xF,iBAAmD,KAArB/xF,KAAK+xF,cACxC/xF,KAAK+xF,YAAc,GAAI5C,IAAwBnvF,OAE5CA,KAAK+xF,aAEhB1vF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,QAKrCuC,IAAK,WAID,MAHqB,OAAjBlC,KAAKgyF,WACLhyF,KAAKgyF,SAAW,GAAIhB,IAAqBhxF,OAEtCA,KAAKgyF,UAEhB3vF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,WAKrCuC,IAAK,WAID,MAHwB,OAApBlC,KAAKiyF,iBAAmD,KAArBjyF,KAAKiyF,cACxCjyF,KAAKiyF,YAAc,GAAId,IAAwBnxF,OAE5CA,KAAKiyF,aAEhB5vF,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,gBAKrCuC,IAAK,WACD,MAAOlC,MAAKkyF,kBAEhB9vF,IAAK,SAAU7B,GACXP,KAAKkyF,iBAAmB3xF,GAE5B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,SAKrCuC,IAAK,WAID,MAHsB,OAAlBlC,KAAKmyF,YACLnyF,KAAKmyF,UAAY,GAAIrL,KAElB9mF,KAAKmyF,WAEhB/vF,IAAK,SAAU7B,GACW,MAAlBP,KAAKmyF,YACLnyF,KAAKmyF,UAAY5xF,IAGzB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,eAKrCuC,IAAK,WACD,MAAOlC,MAAKoyF,aAEhBhwF,IAAK,SAAU7B,GACXP,KAAKoyF,YAAc7xF,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,eAKrCuC,IAAK,WACD,MAAOlC,MAAKqyF,aAEhBjwF,IAAK,SAAU7B,GACXP,KAAKqyF,YAAc9xF,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,QAoBrCuC,IAAK,WAID,MAH6B,KAAxBlC,KAAKoxF,SAAS9nF,WAA8C,KAAxBtJ,KAAKoxF,SAAS9nF,OAAmD,IAAzBtJ,KAAKoxF,SAAS7nF,SAC3FvJ,KAAKoxF,SAAWpxF,KAAKsyF,WAElBtyF,KAAKoxF,UAKhBhvF,IAAK,SAAU7B,GACXP,KAAKoxF,SAAW7wF,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,cACrCuC,IAAK,WACD,MAAOlC,MAAKuyF,YAEhBnwF,IAAK,SAAU7B,GACXP,KAAKuyF,WAAahyF,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe8nF,EAAQpqF,UAAW,gBACrCuC,IAAK,WACD,MAAOlC,MAAKuuE,cAEhBlsE,YAAY,EACZC,cAAc,IAElBynF,EAAQpqF,UAAUygC,KAAO,SAAU9gB,EAAMC,EAAMC,EAAMC,GACjD,GAAIF,YAAgBJ,QAAgC,KAAfI,EAAKjW,WAAyC,KAATkW,EACtE,MAAOxf,MAAKg/B,WAAW1f,EAAMC,EAAK7M,EAAG6M,EAAK5M,EAEzC,IAAoB,gBAAT4M,IAAqC,gBAATC,QAAqC,KAATC,EACpE,MAAOzf,MAAKg/B,WAAW1f,EAAMC,EAAMC,EAAM,KAExC,IAAID,YAAgBF,QAAoC,KAAfE,EAAKjW,WAAyC,KAATkW,EAC/E,MAAOxf,MAAKg/B,WAAW1f,EAAMC,EAAM,KAElC,IAAIA,YAAgBJ,QAAgC,KAAfI,EAAKjW,OAAyBkW,YAAgBwuD,IACpF,MAAOhuE,MAAKg/B,WAAW1f,EAAMC,EAAK7M,EAAG6M,EAAK5M,EAAG6M,EAE5C,IAAoB,gBAATD,IAAqC,gBAATC,KAAsBC,YAAgBuuD,KAA2B,MAARvuD,GAAe,CAChH,GAAInW,GAASgW,EAAK2f,SAASja,WAAW1b,MAAQiW,EAC1Ci0C,EAAkB,GAAIn0C,GAAWE,EAAMC,EAAMlW,EAAO,EACxD,OAAOtJ,MAAKg/B,WAAW1f,EAAMk0C,EAAiB/zC,GAE7C,MAAIF,aAAgBF,QAAoC,KAAfE,EAAKjW,OAAyC,iBAATkW,GACxExf,KAAKg/B,WAAW1f,EAAMC,EAAM,MAG5Bvf,KAAKg/B,WAAW1f,EAAMC,EAAMC,IAO3CuqE,EAAQpqF,UAAU2yF,QAAU,WAGxB,IAAK,GAFD/oF,GAAS,EACTD,EAAQtJ,KAAK2J,QAAQL,MAChBpG,EAAI,EAAGA,EAAIlD,KAAKouF,QAAQjmF,MAAOjF,IAEpCqG,IADIq/E,EAAM5oF,KAAKouF,QAAQE,UAAUprF,IACnBqG,MAElB,KAASrG,EAAI,EAAGA,EAAIlD,KAAKqqF,KAAKliF,MAAOjF,IAAK,CACtC,GAAI0lF,GAAM5oF,KAAKqqF,KAAKC,OAAOpnF,EAC3BqG,IAAUq/E,EAAIr/E,OAElB,MAAO,IAAI6V,GAAM9V,EAAOC,IAE5BwgF,EAAQpqF,UAAU6yF,gBAAkB,SAAUpuB,GACtCpkE,KAAKyyF,oBACLzyF,KAAK4xF,cAAc5xF,KAAMokE,IAGjC2lB,EAAQpqF,UAAU+yF,cAAgB,SAAUtuB,GACpCpkE,KAAK2yF,kBACL3yF,KAAK6xF,YAAY7xF,KAAMokE,IAO/B2lB,EAAQpqF,UAAUilB,OAAS,SAAU8oD,GACjC,GAAIpkE,GAAQokE,EAAMl5D,OAAOlL,MACrBC,EAASmkE,EAAMl5D,OAAOjL,OACtBqpF,GAAa,CAYjB,QAXkC,KAAvBllB,EAAMl5D,OAAOlL,OAAgD,IAAvBokE,EAAMl5D,OAAOlL,QAC1DA,EAAQokE,EAAM/sC,KAAKo/B,gBAAgBz2D,MAAQokE,EAAMl5D,OAAO9B,EACxDkgF,GAAa,OAEkB,KAAxBllB,EAAMl5D,OAAOjL,QAAkD,IAAxBmkE,EAAMl5D,OAAOjL,SAC3DA,EAASmkE,EAAM/sC,KAAKo/B,gBAAgBx2D,OAASmkE,EAAMl5D,OAAO7B,EAC1DigF,GAAa,GAEbA,IACAllB,EAAMl5D,OAAS,GAAI6K,GAAWquD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,EAAGrJ,EAAOC,IAEjD,IAApBvJ,KAAKqqF,KAAKliF,MAAa,CACvB,GAAI0qF,GAAa7yF,KAAKqqF,KAAKC,OAAO,GAAG1C,MAAMC,QAAQ,GAAG/+D,KACtD,IAA0B,MAAtB+pE,EAAWtK,UAAgD,MAA3BsK,EAAWtK,QAAQ1oE,MAAkD,IAAlCgzE,EAAWtK,QAAQ1oE,KAAKvW,OAChE,MAA1BupF,EAAWtK,QAAQzoE,KAAgD,IAAjC+yE,EAAWtK,QAAQzoE,IAAIxW,OAAe,CACzE,GAAIoJ,GAAImgF,EAAWtK,QAAQ1oE,KAAKvW,MAAQ,EACpCqJ,EAAIkgF,EAAWtK,QAAQzoE,IAAIxW,MAAQ,CACvC,IAAIokE,EAAMl5D,OAAO9B,IAAM+7D,GAAWyB,QAAQnwD,MAAMzW,MAAQ,GAAKokE,EAAMl5D,OAAO7B,IAAM87D,GAAWyB,QAAQnwD,MAAMzW,MAAQ,EAAG,CAChH,GAAI6mE,GAAW,GAAI9wD,GAAW3M,EAAGC,EAAG3S,KAAKoxF,SAAS9nF,MAAOtJ,KAAKoxF,SAAS7nF,OACvEmkE,GAAMl5D,OAAS27D,IAU3B,MANAnwE,MAAK+sF,UACL/sF,KAAKgtF,YACLhtF,KAAKuuE,aAAeb,EAAMxoD,OAC1BllB,KAAK8yF,aAAeplB,EAAMl5D,OACX,GAAIm4E,IAAgB3sF,MACZ4tE,SAASF,IAGpCqc,EAAQpqF,UAAUotF,QAAU,WAOxB,IAAK,GANDxD,GAAU,EACVmC,EAAU,EACVqH,EAAmB,EACnB7E,EAAkB,EAClB8E,EAAU,EACV5I,EAAWpqF,KAAKouF,QAAQjmF,MACnBjF,EAAI,EAAGA,EAAIknF,EAAUlnF,IAAK,CAC/B,GAAI0lF,GAAM5oF,KAAKouF,QAAQE,UAAUprF,EACjC8vF,GAAU,CAEV,KAAK,GADDzI,GAAW3B,EAAIhB,MAAMz/E,MAChB0rC,EAAI,EAAGA,EAAI02C,EAAU12C,IAAK,CAC/B,GAAIi7C,GAAOlG,EAAIhB,MAAMC,QAAQh0C,EAG7B,IAFAm/C,EAAUngF,KAAKoV,IAAI+qE,EAASlE,EAAKpD,UAE5BoD,EAAKjB,sBAAwBiB,EAAKmE,qBAAuBnE,EAAKlB,WAAa,GAAKkB,EAAKpD,QAAU,GAAI,CACpG,GAAIoD,EAAKlB,WAAa/5C,EAAI+0C,EAAIhB,MAAMz/E,MAChC,KAAM,IAAIkO,OAAM,iCAAmCw9B,EAAEj0C,WAAa,WAAasD,EAAEtD,WAErF,IAAIkvF,EAAKpD,QAAUxoF,EAAIlD,KAAKouF,QAAQjmF,MAChC,KAAM,IAAIkO,OAAM,oCAAsCw9B,EAAEj0C,WAAa,WAAasD,EAAEtD,WAKxF,IAAIkvF,EAAKlB,WAAa,GAAKkB,EAAKpD,QAAU,EAAG,CAQzC,IAPAnC,EAAUuF,EAAKlB,WACflC,EAAUoD,EAAKpD,QACfqH,EAAmBl/C,EACnBq6C,EAAkBhrF,EAClB4rF,EAAKoE,kBAAmB,EACxBpE,EAAKqE,iBAAkB,EAEhB5J,EAAU,GACbwJ,IACAnK,EAAIhB,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EAC1DjF,EAAIhB,MAAMC,QAAQkL,GAAkBE,oBAAqB,EACzDrK,EAAIhB,MAAMC,QAAQkL,GAAkBrH,QAAUA,EAC9CnC,GAKJ,KAHAwJ,EAAmBl/C,EACnB01C,EAAUuF,EAAKlB,WAERlC,EAAU,GAAG,CAKhB,IAJAwC,IACAluF,KAAKouF,QAAQE,UAAUJ,GAAiBtG,MAAMC,QAAQh0C,GAAGo/C,oBAAqB,EAC9EjzF,KAAKouF,QAAQE,UAAUJ,GAAiBtG,MAAMC,QAAQkL,GAAkBE,oBAAqB,EAC7FvH,IACOnC,EAAU,GACbwJ,IACA/yF,KAAKouF,QAAQE,UAAUJ,GAAiBtG,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EAC9F7tF,KAAKouF,QAAQE,UAAUJ,GAAiBtG,MAAMC,QAAQkL,GAAkBE,oBAAqB,EAC7F1J,GAEJA,GAAUuF,EAAKlB,WACfmF,EAAmBl/C,OAGtB,IAAIi7C,EAAKlB,WAAa,GAAsB,IAAjBkB,EAAKpD,QAKjC,IAJAnC,EAAUuF,EAAKlB,WACfmF,EAAmBl/C,EACnBi7C,EAAKoE,kBAAmB,EAEjB3J,EAAU,GACbwJ,IACAnK,EAAIhB,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EAC1DtE,QAGH,IAAwB,IAApBuF,EAAKlB,YAAoBkB,EAAKpD,QAAU,EAI7C,IAHAA,EAAUoD,EAAKpD,QACfwC,EAAkBhrF,EAEXwoF,EAAU,GACbwC,IACAluF,KAAKouF,QAAQE,UAAUJ,GAAiBtG,MAAMC,QAAQh0C,GAAGo/C,oBAAqB,EAC9EvH,KAKhB9C,EAAIwK,eAAiBJ,IAG7BjJ,EAAQpqF,UAAUqtF,UAAY,WAC1B,GAAIqG,GAGAN,EAFAO,EAAc,EACdC,EAAc,EAEdrF,EAAkB,CAGtB,IAFAmF,EAAcC,EAAc,EAC5BP,EAAmB7E,EAAkB,EACjCluF,KAAKyqF,gBAAkBzqF,KAAK2xF,cAE5B,IAAK,GADDvH,GAAWpqF,KAAKqqF,KAAKliF,MAChBjF,EAAI,EAAGA,EAAIknF,EAAUlnF,IAAK,CAC/B,GAAI0lF,GAAM5oF,KAAKqqF,KAAKC,OAAOpnF,EAC3BqwF,GAAc,CAEd,KAAK,GADDhJ,GAAW3B,EAAIhB,MAAMz/E,MAChB0rC,EAAI,EAAGA,EAAI02C,EAAU12C,IAAK,CAC/B,GAAIi7C,GAAOlG,EAAIhB,MAAMC,QAAQh0C,EAG7B,IAFA0/C,EAAc1gF,KAAKoV,IAAIsrE,EAAazE,EAAKpD,UAEpCoD,EAAKjB,sBAAwBiB,EAAKmE,qBAC/BnE,EAAKlB,WAAa,GAAKkB,EAAKpD,QAAU,GAAI,CAC9C,GAAIoD,EAAKlB,WAAa/5C,EAAI+0C,EAAIhB,MAAMz/E,MAChC,KAAM,IAAIkO,OAAM,kCAAoCw9B,EAAEj0C,WAAa,WAAasD,EAAEtD,WAEtF,IAAIkvF,EAAKpD,QAAUxoF,EAAIlD,KAAKqqF,KAAKliF,MAC7B,KAAM,IAAIkO,OAAM,kCAAoCw9B,EAAEj0C,WAAa,WAAasD,EAAEtD,WAEtF,IAAIkvF,EAAKlB,WAAa,GAAKkB,EAAKpD,QAAU,EAAG,CAQzC,IAPA2H,EAAcvE,EAAKlB,WACnB0F,EAAcxE,EAAKpD,QACnBqH,EAAmBl/C,EACnBq6C,EAAkBhrF,EAClB4rF,EAAKoE,kBAAmB,EACxBpE,EAAKqE,iBAAkB,EAEhBE,EAAc,GACjBN,IACAnK,EAAIhB,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EAC1DjF,EAAIhB,MAAMC,QAAQkL,GAAkBE,oBAAqB,EACzDI,GAKJ,KAHAN,EAAmBl/C,EACnBw/C,EAAcvE,EAAKlB,WAEZ0F,EAAc,GAAG,CAKpB,IAJApF,IACAluF,KAAKqqF,KAAKC,OAAO4D,GAAiBtG,MAAMC,QAAQh0C,GAAGo/C,oBAAqB,EACxEjzF,KAAKqqF,KAAKC,OAAO4D,GAAiBtG,MAAMC,QAAQkL,GAAkBE,oBAAqB,EACvFK,IACOD,EAAc,GACjBN,IACA/yF,KAAKqqF,KAAKC,OAAO4D,GAAiBtG,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EACxF7tF,KAAKqqF,KAAKC,OAAO4D,GAAiBtG,MAAMC,QAAQkL,GAAkBE,oBAAqB,EACvFI,GAEJA,GAAcvE,EAAKlB,WACnBmF,EAAmBl/C,OAGtB,IAAIi7C,EAAKlB,WAAa,GAAsB,IAAjBkB,EAAKpD,QAKjC,IAJA2H,EAAcvE,EAAKlB,WACnBmF,EAAmBl/C,EACnBi7C,EAAKoE,kBAAmB,EAEjBG,EAAc,GACjBN,IACAnK,EAAIhB,MAAMC,QAAQkL,GAAkBlF,qBAAsB,EAC1DwF,QAGH,IAAwB,IAApBvE,EAAKlB,YAAoBkB,EAAKpD,QAAU,EAI7C,IAHA4H,EAAcxE,EAAKpD,QACnBwC,EAAkBhrF,EAEXowF,EAAc,GACjBpF,IACAluF,KAAKqqF,KAAKC,OAAO4D,GAAiBtG,MAAMC,QAAQh0C,GAAGo/C,oBAAqB,EACxEK,KAKhB1K,EAAIwK,eAAiBG,IAIjCxJ,EAAQpqF,UAAU0vF,oBAAsB,SAAU76E,GAC9C,OAAsB,KAAXA,EAAwB,CAC/BxU,KAAKuvF,aAAc,CAGnB,KAAK,GAFDp0C,GAASn7C,KAAK2J,QAAQ6lF,iBAAiBh7E,EAAOlL,MAAQkL,EAAO9B,GAExDxP,EAAI,EAAGiF,EAAQnI,KAAK2J,QAAQxB,MAAOjF,EAAIiF,EAAOjF,IAInDlD,KAAK2J,QAAQskF,UAAU/qF,GAAG+rF,YAAc9zC,EAAOj4C,GAC/ClD,KAAK4uF,UAAYzzC,EAAOj4C,EAE5B,IAAuB,MAAnBlD,KAAKkqF,YAA4D,GAAtClqF,KAAK8oB,MAAM8iE,yBAA8F,GAA1D5rF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAM8iE,wBAAkC,CAC3I,GAAI4H,GAAU,EACVvE,EAAc,EACdwE,EAAczzF,KAAK2J,QAAQxB,MAC3BurF,EAAuB,CACc,OAArC1zF,KAAKkqF,WAAWphE,MAAMoiE,iBAAoE,KAAtClrF,KAAKkqF,WAAWphE,MAAMoiE,kBACrB,KAA1ClrF,KAAKkqF,WAAWphE,MAAMoiE,YAAYrrE,MAAuB7f,KAAKkqF,WAAWphE,MAAMoiE,YAAY9b,aAClGokB,GAAWxzF,KAAKkqF,WAAWphE,MAAMoiE,YAAYrrE,UAEK,KAA3C7f,KAAKkqF,WAAWphE,MAAMoiE,YAAYnrE,OAAwB/f,KAAKkqF,WAAWphE,MAAMoiE,YAAY7b,cACnGmkB,GAAWxzF,KAAKkqF,WAAWphE,MAAMoiE,YAAYnrE,OAGrD,KAAS7c,EAAI,EAAGA,EAAIlD,KAAKkqF,WAAW0D,WAAY1qF,IAC5C+rF,GAAejvF,KAAKkqF,WAAWtB,IAAIoB,KAAKrgF,QAAQskF,UAAUjuF,KAAKyxF,gBAAkBvuF,GAAGoG,KAExF,KAASuqC,EAAI,EAAGA,EAAI7zC,KAAK2J,QAAQxB,MAAO0rC,IAChC7zC,KAAK+xF,YAAY9D,UAAUp6C,GAAGvqC,MAAQ,GAAKtJ,KAAK+xF,YAAY9D,UAAUp6C,GAAGq7C,gBACzED,GAAejvF,KAAK+xF,YAAY9D,UAAUp6C,GAAGvqC,MAC7CmqF,IAcR,IAXmD,MAA9CzzF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,iBAA4E,KAA9ClrF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,kBAChC,KAAlDlrF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,KAAsB9f,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAY5b,YACnHkkB,GAAWxzF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,SAEM,KAArD9f,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,QAAyBhgB,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAY3b,eACtHikB,GAAWxzF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,SAGZ,GAA9ChgB,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMqiE,cAC/B8D,GAA4D,EAA7CjvF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMqiE,aAE9C8D,EAAcuE,IACdE,GAAwBzE,EAAcuE,GAAWC,EACjDzzF,KAAK4uF,UAAY8E,EACM,MAAnB1zF,KAAKkqF,YACL,IAASr2C,EAAI,EAAGA,EAAI7zC,KAAK2J,QAAQxB,MAAO0rC,IAC/B7zC,KAAK2J,QAAQskF,UAAUp6C,GAAGq7C,gBAC3BlvF,KAAK2J,QAAQskF,UAAUp6C,GAAGo7C,YAAcyE,QAiB3D,CAED,IAAK,GADDv4C,IAAUn7C,KAAK2J,QAAQxB,OAClB9D,EAAI,EAAGA,EAAIrE,KAAK2J,QAAQxB,MAAO9D,IACpC82C,EAAO92C,GAAK,CAEhB,IAAIwkF,GAAY,CAKhB,SAHiC,KAArB7oF,KAAKmqF,iBAA4D,KAAtBnqF,KAAK8yF,cAAuD,OAArB9yF,KAAKmqF,iBAAqD,KAAtBnqF,KAAK8yF,gBACnI9yF,KAAKsvF,aAAetvF,KAAK8yF,aAAaxpF,OAEtCtJ,KAAKouF,QAAQjmF,MAAQ,EAGrB,IAAK,GAFDwrF,GAAa3zF,KAAKouF,QAAQE,UAAU,GAAG1G,MAAMz/E,MAC7CiiF,EAAWpqF,KAAKouF,QAAQjmF,MACnBjF,EAAI,EAAGA,EAAIywF,EAAYzwF,IAAK,CACjC2lF,EAAY,CACZ,KAASh1C,EAAI,EAAGA,EAAIu2C,EAAUv2C,IAAK,CAC3Bg8C,EAAWh9E,KAAKJ,IAAIzS,KAAKsvF,aAActvF,KAAKouF,QAAQE,UAAUz6C,GAAG+zC,MAAMC,QAAQ3kF,GAAGoG,MACtFu/E,GAAYh2E,KAAKoV,IAAI4gE,EAAWgH,GAEpC10C,EAAOj4C,GAAK2lF,EAepBA,EAAY,CACZ,KAAK,GAAI3lF,GAAI,EAAG0wF,EAAa5zF,KAAK2J,QAAQxB,MAAOjF,EAAI0wF,EAAY1wF,IAAK,CAClE,IAAK,GAAI2wC,GAAI,EAAGu2C,EAAWpqF,KAAKqqF,KAAKliF,MAAO0rC,EAAIu2C,EAAUv2C,IACtD,GAAwD,GAAnD7zC,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAG0qF,aAAoB5tF,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAG2qF,qBAAsE,MAA9C7tF,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAG3C,MAAe,CAC3K,GAAkD,MAA9CP,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAG3C,QAAkBP,KAAKqqF,KAAKC,OAAOz2C,GAAGm2C,KAAKlhE,MAAM8iE,wBAC1E5rF,KAAKqqF,KAAKC,OAAOz2C,GAAGm2C,KAAKlhE,MAAMoiE,YAAYnrE,MACnD/f,KAAKqqF,KAAKC,OAAOz2C,GAAGm2C,KAAKlhE,MAAMoiE,YAAYrrE,KACzC7f,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAG4lB,MAAMy/D,QAAQ1oE,KAAKvW,KAIlE,IAAIumF,GAAW,CACfA,GAAW7vF,KAAKsvF,aAAe,EAAMz8E,KAAKJ,IAAIzS,KAAKsvF,aAActvF,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAGoG,OAAStJ,KAAKqqF,KAAKC,OAAOz2C,GAAG+zC,MAAMC,QAAQ3kF,GAAGoG,MAapJu/E,EAAYh2E,KAAKoV,IAAIkzB,EAAOj4C,GAAI2P,KAAKoV,IAAI4gE,EAAWgH,IACpDhH,EAAYh2E,KAAKoV,IAAIjoB,KAAK2J,QAAQskF,UAAU/qF,GAAGoG,MAAOu/E,GAGvC,GAAnB7oF,KAAKqqF,KAAKliF,QACVgzC,EAAOj4C,GAAK2lF,GAChBA,EAAY,EAEhB,IAAK,GAAI3lF,GAAI,EAAG2wF,EAAW7zF,KAAKqqF,KAAKliF,MAAOjF,EAAI2wF,EAAU3wF,IACtD,IAAK,GAAI2wC,GAAI,EAAGigD,EAAW9zF,KAAK2J,QAAQxB,MAAO0rC,EAAIigD,EAAUjgD,IACzD,GAAI7zC,KAAKqqF,KAAKC,OAAOpnF,GAAG0kF,MAAMC,QAAQh0C,GAAG+5C,WAAa,EAElD,IAAK,GADDv7D,GAAQ8oB,EAAOtH,GACVpzC,EAAI,EAAGA,EAAIT,KAAKqqF,KAAKC,OAAOpnF,GAAG0kF,MAAMC,QAAQh0C,GAAG+5C,WAAYntF,IACjE4xB,GAAS8oB,EAAOtH,EAAIpzC,EAgBpC,KAAK,GAAIyC,GAAI,EAAGiF,EAAQnI,KAAK2J,QAAQxB,MAAOjF,EAAIiF,EAAOjF,IAC/ClD,KAAK2J,QAAQskF,UAAU/qF,GAAGoG,OAAS,EACnCtJ,KAAK2J,QAAQskF,UAAU/qF,GAAG+rF,YAAc9zC,EAAOj4C,GAC1ClD,KAAK2J,QAAQskF,UAAU/qF,GAAGoG,MAAQ,IAAMtJ,KAAK2J,QAAQskF,UAAU/qF,GAAGgsF,gBACvElvF,KAAK2J,QAAQskF,UAAU/qF,GAAG+rF,YAAc9zC,EAAOj4C,GAEvD,IAAIswF,GAAU,EACVO,EAAW,EACXxJ,EAAWvqF,KAAK2J,QAAQxB,MACxB6rF,EAAoB,CACxBD,GAAW/zF,KAAK4uF,SAChB,KAAS/6C,EAAI,EAAGA,EAAI7zC,KAAK2J,QAAQxB,MAAO0rC,IAChC7zC,KAAK+xF,YAAY9D,UAAUp6C,GAAGvqC,MAAQ,GAAKtJ,KAAK+xF,YAAY9D,UAAUp6C,GAAGq7C,gBACzE6E,GAAY/zF,KAAK+xF,YAAY9D,UAAUp6C,GAAGvqC,MAC1CihF,IAWR,IALIwJ,EAAW,GACuC,GAA9C/zF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMqiE,cAC/B4I,GAAyD,EAA7C/zF,KAAKkqF,WAAWtB,IAAIoB,KAAKlhE,MAAMqiE,aAG/C4I,EAAWP,IACXQ,EAAoB,EAAazJ,EACV,MAAnBvqF,KAAKkqF,YACL,IAASr2C,EAAI,EAAGA,EAAI7zC,KAAK2J,QAAQxB,MAAO0rC,IAC/B7zC,KAAK2J,QAAQskF,UAAUp6C,GAAGq7C,gBAC3BlvF,KAAK2J,QAAQskF,UAAUp6C,GAAGo7C,YAAc+E,KAMzDjK,GACTna,ICzuBE/6D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAiBnFs3E,GAAiC,SAAUl3E,GAO3C,QAASk3E,GAAgB1e,GACrB,GAAIt4D,GAAQF,EAAO5V,KAAKG,KAAMiuE,IAAejuE,IAoE7C,OA/DA2V,GAAMu8E,iBAAmB,EAKzBv8E,EAAMy7E,SAAW,GAAIhyE,GAAM,EAAG,GAC9BzJ,EAAM87E,gBAAkB,EACxB97E,EAAMi5E,UAAY,EAClBj5E,EAAMs+E,YAAc,EAKpBt+E,EAAMw0E,aAAc,EAKpBx0E,EAAM80E,gBAAiB,EAKvB90E,EAAM27E,cAAe,EAKrB37E,EAAM47E,WAAa,GAAIlyE,GAKvB1J,EAAM67E,uBAKN77E,EAAMu+E,MAAO,EAKbv+E,EAAMw+E,gBAKNx+E,EAAMy+E,gBAAkB,GAAIj1E,GAAO,EAAG,GAKtCxJ,EAAM+7E,UAAW,EACjB/7E,EAAM0+E,IAAM,KACZ1+E,EAAMy7D,cAAgB,KACtBz7D,EAAM2+E,YAAa,EAMnB3+E,EAAMgP,wBAAyB,EACxBhP,EAs0CX,MAj5CAd,IAAU83E,EAAiBl3E,GA6E3B/V,OAAOuC,eAAe0qF,EAAgBhtF,UAAW,QAE7CuC,IAAK,WACD,MAAOlC,MAAKuT,UAEhBlR,YAAY,EACZC,cAAc,IAwDlBqqF,EAAgBhtF,UAAU40F,UAAY,SAAUrvE,GAE5C,MADQA,IAOZynE,EAAgBhtF,UAAUguE,eAAiB,SAAUD,GACjD,GAAIxoD,GAASllB,KAAKu0F,UAAU7mB,EAAMxoD,OAGlC,IAFAllB,KAAKw0F,iBAAmBx0F,KAAKu0F,UAAU7mB,EAAMxoD,QAC7CllB,KAAK4gC,YAAc8sC,EAAM/sC,KACA,OAArB3gC,KAAK4gC,YAML,KAAMvqB,OAAM,2BALKrW,MAAK4gC,YAAYm/B,gBAAgBx2D,OAClCvJ,KAAK4gC,YAAYm/B,gBAAgBz2D,KACjDtJ,MAAKy0F,kBAAoBz0F,KAAK4gC,YAAYm/B,gBAM9C//D,KAAK00F,gBAAkB10F,KAAK4gC,YAAY3B,QAWxC,IAAIzvB,GAAQ,CAUZ,IATAA,EAAQxP,KAAK00F,gBAAgB/zD,KAAKq0B,QAAQ1xD,QAAQtD,KAAK00F,gBAAgB/zD,MACvE3gC,KAAKwxF,oBAAoBtwF,KAAKsO,GAChB,MAAV0V,GAAkBA,EAAOgpD,QAAUjmB,qBAAmB0sC,iBACtD30F,KAAKqwE,cAAgB,GAAIhxD,GAAW,GAAIF,GAAOuuD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,GAAI,GAAIyM,GAAMpf,KAAK40F,KAAKjrF,QAAQL,MAAOtJ,KAAK00F,gBAAgB1vE,WAAWzb,SAGnJvJ,KAAKqwE,cAAgB,GAAIhxD,GAAW,GAAIF,GAAOuuD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,GAAI3S,KAAK00F,gBAAgB1vE,YAG5E,IAAzBhlB,KAAK40F,KAAKvK,KAAKliF,MACfnI,KAAKqwE,cAAc/mE,MAASokE,EAAMl5D,OAAOlL,MAAQ,EAAKokE,EAAMl5D,OAAOlL,MAC9DtJ,KAAKqwE,cAAc/mE,MAAQtJ,KAAK40F,KAAKvK,KAAKC,OAAO,GAAG1C,MAAMC,QAAQ,GAAG/+D,MAAMy/D,QAAQ1oE,KAAKvW,MAAQ,MAEpG,CAAA,GAAgC,IAA5BtJ,KAAK40F,KAAKxG,QAAQjmF,MAMvB,KAAMkO,OAAM,qCAHZrW,MAAKqwE,cAAc/mE,MAAQokE,EAAMl5D,OAAOlL,MAsC5C,GAjCAtJ,KAAK60F,cAAgB,GAAI11E,GAAOuuD,EAAMl5D,OAAO9B,EAAGg7D,EAAMl5D,OAAO7B,GAazD+6D,EAAMl5D,OAAOjL,OAAS,IAAMvJ,KAAK40F,KAAKzK,cACtCnqF,KAAKqwE,cAAc9mE,OAASmkE,EAAMl5D,OAAOjL,QAExCvJ,KAAK40F,KAAKzK,cACXnqF,KAAK80F,MAAQ90F,KAAK40F,KAAK9rE,MAAMisE,wBAE5B/0F,KAAK40F,KAAK9rE,MAAM8iE,yBAWjB5rF,KAAK40F,KAAKvF,sBACVrvF,KAAKg1F,8BAXLh1F,KAAKm0F,oBACgC,KAA1Bn0F,KAAK40F,KAAKzK,cAAsCnqF,KAAK40F,KAAKzK,YAAjB,GAIhDnqF,KAAK40F,KAAKvF,oBAAoB,GAAIhwE,GAAWrf,KAAKqwE,cAAc39D,EAAG1S,KAAKqwE,cAAc19D,EAAG3S,KAAKqwE,cAAc39D,EAAI1S,KAAKqwE,cAAc/mE,MAAOtJ,KAAKqwE,cAAc9mE,SAH7JvJ,KAAK40F,KAAKvF,oBAAoBrvF,KAAKqwE,eAKvCrwE,KAAKm0F,aAAajzF,MAAM,EAAGlB,KAAK40F,KAAKjrF,QAAQxB,MAAQ,KAMrDnI,KAAK40F,KAAKnK,eACV,IAAK,GAAIvnF,GAAI,EAAGA,EAAIlD,KAAK40F,KAAKvK,KAAKliF,MAAOjF,KACG,IAArClD,KAAK40F,KAAKvK,KAAKC,OAAOpnF,GAAGqG,QAAkBvJ,KAAK40F,KAAKvK,KAAKC,OAAOpnF,GAAG+sF,iBACpEjwF,KAAK40F,KAAKvK,KAAKC,OAAOpnF,GAAG+sF,gBAAiB,EAKtD,OADajwF,MAAKywE,aAAa/C,IAQnCif,EAAgBhtF,UAAUq1F,0BAA4B,WAKlD,IAAK,GAJDC,GAAc,EACdC,EAAY,EACZC,EAAa,EACbC,EAAiBp1F,KAAK00F,gBAAgB1vE,WAAW1b,MAAQtJ,KAAKqwE,cAAc39D,EACvExP,EAAI,EAAGA,EAAIlD,KAAK40F,KAAKjrF,QAAQxB,MAAOjF,IAEzC,IADAiyF,GAAcn1F,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,QAC3B8rF,EAAgB,CAE9B,IAAK,GADDC,GAAY,EACPxhD,EAAIohD,EAAaphD,GAAK3wC,MAC3BmyF,GAAar1F,KAAK40F,KAAKjrF,QAAQskF,UAAUp6C,GAAGvqC,OAC5B8rF,GAFcvhD,IAK9BqhD,EAAYrhD,CAEhB7zC,MAAKm0F,aAAajzF,MAAM+zF,EAAaC,IAGrCC,GADAD,EADAD,EAAcC,EAAY,IAEChyF,EAAKlD,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,MAAQ,EAI/EtJ,KAAKm0F,aAAajzF,MAAM+zF,EAAaj1F,KAAK40F,KAAKjrF,QAAQxB,MAAQ,KAOnEwkF,EAAgBhtF,UAAU8wE,aAAe,SAAU/C,GAE/C1tE,KAAKuxF,WAAW7+E,EAAIg7D,EAAMl5D,OAAO9B,EACjC1S,KAAKuxF,WAAW5+E,EAAI+6D,EAAMl5D,OAAO7B,EACjC3S,KAAKuxF,WAAWhoF,OAASmkE,EAAMl5D,OAAOjL,MAQtC,KAAK,GAPD2b,GAASllB,KAAKu0F,UAAU7mB,EAAMxoD,QAE9BjiB,EAAS,KACTqyF,EAAgB,GAAIl3D,IACpBm3D,EAAY7nB,EAAM/sC,KAElB60D,KACKhmF,EAAQ,EAAGA,EAAQxP,KAAKm0F,aAAanzF,OAAQwO,IAAS,CAC3D,GAAI/B,GAAQzN,KAAKm0F,aAAa3kF,EAC9BxP,MAAKy1F,eAAiBhoF,EAAM,GAC5BzN,KAAK01F,aAAejoF,EAAM,EAC1B,IAAIkoF,GAAe31F,KAAK41F,sBAAsB51F,KAAK4gC,YAAa5gC,KAAKqwE,cAAerwE,KAAKkuF,gBACzFluF,MAAKqwE,cAAgBslB,EAAatlB,cAClCrwE,KAAKkuF,gBAAkByH,EAAazH,eAOpC,KAAK,GADD2H,OAAa,GACR18C,EAAM,EAAGA,EAAMn5C,KAAK40F,KAAKxG,QAAQjmF,MAAOgxC,IAAO,CACpD,GAAIyvC,GAAM5oF,KAAK40F,KAAKxG,QAAQE,UAAUn1C,GAClC28C,EAAe91F,KAAKqwE,cAAc19D,CAEtC,IADA3S,KAAK0tF,UAAW,EACZ6H,GAAav1F,KAAK4gC,YAClB,IAAK,GAAIngC,GAAIT,KAAKy1F,eAAgBh1F,GAAKT,KAAK01F,aAAcj1F,IAClDmoF,EAAIhB,MAAMC,QAAQpnF,GAAGotF,sBACrBjF,EAAIhB,MAAMC,QAAQpnF,GAAGotF,qBAAsB,EAC3CjF,EAAIhB,MAAMC,QAAQpnF,GAAGF,MAAQ,GAKzC,IAAIw1F,GAAe/1F,KAAKg2F,QAAQpN,EAC5BkN,KAAiB91F,KAAKqwE,cAAc19D,GACpCkjF,GAAa,GAC2B,IAApClJ,EAAgBsJ,iBAChBtJ,EAAgBsJ,eAAiB98C,IAIrC08C,GAAa,GAEZE,EAAa1M,UAA0B,OAAdkM,GACvBrwE,EAAON,SAAWojC,gBAAckuC,SAAWL,IAC9C71F,KAAK60F,cAAcniF,EAAI1S,KAAKqwE,cAAc39D,EAC1C1S,KAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,GAC1CllB,KAAK60F,cAAcliF,EAAI3S,KAAKqwE,cAAc19D,MACL,KAA1BuS,EAAO6oD,gBAA8D,IAA5B7oD,EAAO6oD,eAAer7D,GAAuC,IAA5BwS,EAAO6oD,eAAep7D,GAA2C,IAAhCuS,EAAO6oD,eAAezkE,OAAgD,IAAjC4b,EAAO6oD,eAAexkE,SAC7KvJ,KAAKqwE,cAAc39D,GAAK1S,KAAK60F,cAAcniF,GAC/C1S,KAAKg2F,QAAQpN,IAEjB5oF,KAAK0tF,UAAW,EAEpB,GAAIxqF,GAAI,EAEJkzF,GADWp2F,KAAK40F,KAAKvK,KAAKliF,UACd,IAEZ+rF,GAAO,CAEXsB,KAEA,KAAK,GAAI3hD,GAAI,EAAGA,EAAI7zC,KAAK40F,KAAKvK,KAAKliF,MAAO0rC,IAAK,CACvC+0C,EAAM5oF,KAAK40F,KAAKvK,KAAKC,OAAOz2C,EAChC3wC,KACAlD,KAAKkuF,gBAAkBhrF,EAAI,CAC3B,IAAImzF,GAAiBr2F,KAAKqwE,cAAc19D,CACxC4iF,GAAYv1F,KAAK4gC,YACjB+rD,EAAgBsJ,gBAAkB,EAC9B/B,GAAQtL,EAAIoB,KAAKG,cAEjB+J,GAAO,EAEX,IAAIoC,GAAY,IA0BhB,KAAqC,GAAjCt2F,KAAK40F,KAAKtI,mBACVgK,EAAYt2F,KAAKg2F,QAAQpN,GACzBA,EAAIkH,aAAc,MAEjB,CACD,KAAIlH,EAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKqH,aAAerxF,KAAK40F,KAAKtI,oBAAsB1D,EAAI2N,UAI/E,CAAA,GAAI3N,EAAIkH,YACT,QAGA,OAPAwG,EAAYt2F,KAAKg2F,QAAQpN,GACzBA,EAAIkH,aAAc,EAwE1B,IA9DA0F,EAAWt0F,KAAKo1F,EAAU9hF,OAAOlL,OAsD7B+sF,IAAmBr2F,KAAKqwE,cAAc19D,GACtCyjF,GAAY,EACZzJ,EAAgBsJ,eAAiBj2F,KAAK40F,KAAKvK,KAAK8D,cAAc7qF,QAAQslF,KAGtEwN,GAAY,EACZzJ,EAAgBsJ,gBAAkB,IAE9BK,EAAUjN,UAAyB,MAAbkM,GAAmB,CAC7C,GAAIiB,GAAax2F,KAAK0wE,iBAoCtB,IADU1wE,KAAKy2F,kBAAkBD,GACrBE,QAAUN,EAClB,KACC,IAAIp2F,KAAK40F,KAAKxI,yBAA0B,CAEzCpsF,KAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,GAC1CmxE,EAAiBr2F,KAAKqwE,cAAc19D,CACpC,IAAI0tB,GAAa,GAAIlhB,GAAOsvD,GAAWyB,QAAQnwD,MAAMzW,MAAQ,EAAGmlE,GAAWyB,QAAQpwD,IAAIxW,MAAQ,EAiB/F,IAhBiC,IAA5B4b,EAAO6oD,eAAer7D,GAAuC,IAA5BwS,EAAO6oD,eAAep7D,GAA2C,IAAhCuS,EAAO6oD,eAAezkE,OACxD,IAAjC4b,EAAO6oD,eAAexkE,QAAkBvJ,KAAK60F,cAAcniF,IAAM2tB,EAAW3tB,GAAK1S,KAAK60F,cAAcliF,IAAM0tB,EAAW1tB,IACrH3S,KAAKqwE,cAAc39D,GAAK1S,KAAK60F,cAAcniF,EAC3C1S,KAAKqwE,cAAc19D,GAAK3S,KAAK60F,cAAcliF,GAE3C3S,KAAKs0F,aACLt0F,KAAK60F,cAAcliF,EAAI3S,KAAKqwE,cAAc19D,EAC1C3S,KAAKs0F,YAAa,GAElBt0F,KAAK40F,KAAKzK,aAAsC,MAAvBvB,EAAIoB,KAAKE,YACqB,MAAnDlqF,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,aAChCtC,EAAIuE,eAAiBntF,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAKqwE,cAAc9mE,SAC9FvJ,KAAKqwE,cAAc19D,EAAI3S,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,KAIxD,MAAvB8oE,EAAIoB,KAAKE,WAAoB,CAC7BtB,EAAIoB,KAAKE,WAAWtB,IAAI+N,qBAAsB,EAC9C/N,EAAIoB,KAAKE,WAAWtB,IAAIsE,oBAAsBtE,EAAIuE,eAAiBntF,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,MACzK,KAAK,GAAI42E,GAAMhO,EAAI2N,SAAW,EAAGK,EAAMhO,EAAIoB,KAAKK,KAAKliF,MAAOyuF,IACxDhO,EAAIoB,KAAKE,WAAWtB,IAAIsE,qBAAuBtE,EAAIoB,KAAKK,KAAKC,OAAOsM,GAAKrtF,OA6BjF,GAAIq/E,EAAIoB,KAAKG,YAAa,CAEtBvB,EAAIkH,aAAc,EAElBlH,EAAIoB,KAAKsC,mBAAqB1D,EAAI2N,SAClC3N,EAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKsC,mBAAqB1D,EAAIoB,KAAKE,WAAWtB,IAAI2N,SACtE3N,EAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKqH,cAC7BzI,EAAIoB,KAAKE,WAAWtB,IAAIoH,eAAiB,EACzCpH,EAAIoB,KAAKE,WAAWtB,IAAIoB,KAAKqH,aAAc,EAE/C,OAEJ,GAAIzI,EAAIoH,cAAgB,EAAG,CAIvB,IAHoC,GAAhCpH,EAAIoB,KAAKsC,qBACT1D,EAAIoB,KAAKqH,aAAc,GAEH,MAApBzI,EAAI9/D,MAAM2nE,SAA6C,MAAzB7H,EAAI9/D,MAAM2nE,OAAO5wE,MAAgD,IAAhC+oE,EAAI9/D,MAAM2nE,OAAO5wE,KAAKvW,OACzD,MAAxBs/E,EAAI9/D,MAAM2nE,OAAO3wE,KAA8C,IAA/B8oE,EAAI9/D,MAAM2nE,OAAO3wE,IAAIxW,OAAe,CACxE,GAAIoJ,GAAIk2E,EAAI9/D,MAAM2nE,OAAO5wE,KAAKvW,MAAQ,EAClCqJ,EAAIi2E,EAAI9/D,MAAM2nE,OAAO3wE,IAAIxW,MAAQ,CACrC,IAAItJ,KAAKqwE,cAAc39D,IAAM+7D,GAAWyB,QAAQnwD,MAAMzW,MAAQ,GAAKtJ,KAAKqwE,cAAc19D,IAAM87D,GAAWyB,QAAQnwD,MAAMzW,MAAQ,EAAG,CAC5H,GAAI6mE,GAAW,GAAI9wD,GAAW3M,EAAGC,EAAG3S,KAAKqwE,cAAc/mE,MAAOtJ,KAAKqwE,cAAc9mE,OACjFvJ,MAAKqwE,cAAgBF,GAG7B,GAAInwE,KAAK40F,KAAKiC,aACV,IAAK,GAAIC,GAAM,EAAGA,EAAM92F,KAAK40F,KAAKxG,QAAQjmF,MAAO2uF,IAAO,CACpD,GAAIC,GAAe/2F,KAAK40F,KAAKxG,QAAQE,UAAUwI,EAC/C92F,MAAKg2F,QAAQe,GAIrB,GADAT,EAAYt2F,KAAKg2F,QAAQpN,GACrBA,EAAIoH,eAAiB,EAEhB,CADMpH,EAAIsE,mBACf,KAAK,GAAI8J,GAAM,EAAGA,EAAMpO,EAAIoH,cAAegH,IAAO,CAE9C,GAAIC,GAAcj3F,KAAK0wE,iBASvB,IARU1wE,KAAKy2F,kBAAkBQ,GACjCj3F,KAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,GAC1CmxE,EAAiBr2F,KAAKqwE,cAAc19D,GAEA,GAAhCi2E,EAAIoB,KAAKsC,qBACT1D,EAAIoB,KAAKqH,aAAc,GAE3BrxF,KAAKqwE,cAAc19D,EAAI,GACnB3S,KAAK40F,KAAKiC,aACV,IAAK,GAAIK,GAAM,EAAGA,EAAMl3F,KAAK40F,KAAKxG,QAAQjmF,MAAO+uF,IAAO,CAChDzyF,EAASzE,KAAK40F,KAAKxG,QAAQE,UAAU4I,EACzCl3F,MAAKg2F,QAAQvxF,GAIrBzE,KAAKg2F,QAAQpN,IAMrBA,EAAIoB,KAAKsC,oBAAsB,EAC/B1D,EAAIoB,KAAKqH,aAAc,EACvBiF,EAAUjN,SAAWrpF,KAAKm3F,gBAAgBvO,EAG1C,KAAK,GAAIwO,GAAM,EAAGA,EAAMxO,EAAIhB,MAAMz/E,MAAOivF,IACjCxO,EAAIhB,MAAMC,QAAQuP,GAAK72F,gBAAiBwpF,MACxCnB,EAAIhB,MAAMC,QAAQuP,GAAK72F,MAAM+rF,oBAAsB,KAavE,IAAKgK,EAAUjN,UAA0B,OAAdkM,GAAsBrwE,EAAON,SAAWojC,gBAAckuC,SAAWE,EAAW,CA2CnG,GAzCAp2F,KAAK60F,cAAcniF,EAAI1S,KAAKqwE,cAAc39D,EAE1C1S,KAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,GAuCtCllB,KAAK41F,sBAAsB51F,KAAK4gC,YAAa5gC,KAAKqwE,cAAerwE,KAAKkuF,iBAAiB5zD,YACvF,KA8BJ,IA5BsB,OAAjBozC,EAAMxoD,SAAqBwoD,EAAMxoD,OAAO4oD,mBAAsC,OAAjBJ,EAAMl5D,QACpEk5D,EAAMl5D,OAAOjL,OAAS,IAAMvJ,KAAK40F,KAAKzK,cACtCnqF,KAAKqwE,cAAc9mE,OAASmkE,EAAMl5D,OAAOjL,YAEjB,KAAjBmkE,EAAMxoD,QAA0C,MAAhBwoD,EAAMxoD,YAA4D,KAAnCwoD,EAAMxoD,OAAO4oD,mBAAsCJ,EAAMxoD,OAAO4oD,mBAAyD,IAAlCJ,EAAMxoD,OAAO6oD,eAAer7D,GAA6C,IAAlCg7D,EAAMxoD,OAAO6oD,eAAep7D,GAAiD,IAAtC+6D,EAAMxoD,OAAO6oD,eAAezkE,OAAsD,IAAvCokE,EAAMxoD,OAAO6oD,eAAexkE,QAAmD,IAAlCmkE,EAAMxoD,OAAO6oD,eAAep7D,GAI/V3S,KAAKqwE,cAAc19D,EAAc,MAAVuS,EAAiB,EAAIA,EAAO6oD,eAAep7D,EACpD,MAAVuS,GAA+C,IAA5BA,EAAO6oD,eAAer7D,GAAuC,IAA5BwS,EAAO6oD,eAAep7D,GAA4C,IAAjCuS,EAAO6oD,eAAexkE,QAAgD,IAAhC2b,EAAO6oD,eAAezkE,QACjJtJ,KAAKqwE,cAAc39D,EAAIwS,EAAO6oD,eAAer7D,EAC7C1S,KAAKqwE,cAAc/mE,MAAQ4b,EAAO6oD,eAAezkE,MACjDtJ,KAAKqwE,cAAc9mE,OAAS2b,EAAO6oD,eAAexkE,SAPtDvJ,KAAKqwE,cAAc19D,EAAI87D,GAAWyB,QAAQpwD,IAAIxW,MAAQ,MAU9B,KAAjBokE,EAAMxoD,QAA4C,OAAjBwoD,EAAMxoD,YAA8D,KAAnCwoD,EAAMxoD,OAAO4oD,oBAAsCJ,EAAMxoD,OAAO4oD,mBAAsC,OAAjBJ,EAAMl5D,QACpKk5D,EAAMl5D,OAAO7B,EAAI,IAAM3S,KAAK40F,KAAKzK,cACjCnqF,KAAKqwE,cAAc19D,EAAI+6D,EAAMl5D,OAAO7B,GAExC3S,KAAK60F,cAAcliF,EAAI3S,KAAKqwE,cAAc19D,EACrCuS,EAAO6oD,eAAer7D,IAAMwS,EAAO6oD,eAAep7D,GAClDuS,EAAO6oD,eAAep7D,IAAMuS,EAAO6oD,eAAexkE,QAClD2b,EAAO6oD,eAAexkE,SAAW2b,EAAO6oD,eAAezkE,OAA2C,IAAhC4b,EAAO6oD,eAAezkE,QACzFtJ,KAAKqwE,cAAc39D,GAAK1S,KAAK60F,cAAcniF,GAE3C1S,KAAKqwE,cAAc39D,IAAM+7D,GAAWyB,QAAQrwD,KAAKvW,MAAQ,IACzDtJ,KAAKqwE,cAAc19D,GAAK3S,KAAK60F,cAAcniF,GAE3C1S,KAAK40F,KAAKiC,aACV,IAAK,GAAIQ,GAAM,EAAGA,EAAMr3F,KAAK40F,KAAKxG,QAAQjmF,MAAOkvF,IAAO,CACpD,GAAI5yF,GAASzE,KAAK40F,KAAKxG,QAAQE,UAAU+I,EACzCr3F,MAAKg2F,QAAQvxF,GAGrBzE,KAAKg2F,QAAQpN,GACY,OAArB5oF,KAAK4gC,aAAyB00D,EAAc9zF,YAAYxB,KAAK4gC,cAC7D00D,EAAc5hF,IAAI1T,KAAK4gC,YAAanzB,GAG5C,GAAkC,MAA9Bm7E,EAAIwE,uBAAgC,CAEpCptF,KAAK4gC,YAAcgoD,EAAIwE,uBAAuBzsD,KAC9C3gC,KAAK00F,gBAAkB10F,KAAK4gC,YAAY3B,SACxCj/B,KAAK60F,cAAgB,GAAI11E,GAAOypE,EAAIwE,uBAAuB54E,OAAO9B,EAAGk2E,EAAIwE,uBAAuB54E,OAAO7B,EACvG,IAAI2kF,GAAct3F,KAAKu3F,kBAAkB3O,EAAKA,EAAIwE,uBAAuB54E,OAAOjL,OAGhF,IAFAvJ,KAAKqwE,cAAc19D,EAAI2kF,EAEnB/B,GAAav1F,KAAK4gC,YAAa,CAI/B,IAAK,GAFD42D,IADAxiC,GAAUh1D,KAAK4gC,YAAYo0B,SACN1xD,QAAQiyF,GAAa,EAC1CkC,EAAWziC,GAAQ1xD,QAAQtD,KAAK4gC,aAC3BD,EAAO62D,EAAY72D,EAAO82D,EAAW,EAAG92D,IAAQ,CACrD,GAAI+2D,GAAe1iC,GAAQC,WAAWt0B,GAAM1B,SACxC04D,EAAa,GAAIx4E,GAAO+F,EAAO6oD,eAAer7D,EAAGwS,EAAO6oD,eAAep7D,GACvEpJ,EAASo3B,GAAQ82D,EAAY7O,EAAIwE,uBAAuB54E,OAAOjL,OAASmkE,EAAMl5D,OAAO7B,EACpF3S,KAAKqwE,cAAc9mE,OAASouF,EAAWhlF,CACxCpJ,IAAUmuF,EAAa1yE,WAAWzb,SAClCA,GAAUmkE,EAAMl5D,OAAO7B,GAG3BglF,EAAWhlF,EAAc,MAAVuS,EAAiB,GAAMA,EAAO6oD,eAAep7D,CAE5D,KAASpP,GAAI,EAAGA,GAAIqlF,EAAIhB,MAAMz/E,MAAO5E,KAAK,CACtC,GAAIurF,GAAOlG,EAAIhB,MAAMC,QAAQtkF,IACzBslF,EAAY,EACZ+O,EAAa,CACjB,IAAI9I,EAAKvuF,gBAAiBwpF,IACtB,IAAK,GAAI8N,GAAM,EAAGA,EAAM/I,EAAKvuF,MAAMoJ,QAAQxB,MAAO0vF,IAC9CD,GAAc9I,EAAKvuF,MAAMoJ,QAAQskF,UAAU4J,GAAK5I,gBAIpD2I,GAAa9I,EAAKxlF,KAEtB,IAAIwlF,EAAKlB,WAAa,EAClB,KAAOrqF,GAAIurF,EAAKlB,WAAYrqF,KACxBslF,GAAaD,EAAIoB,KAAKrgF,QAAQskF,UAAU1qF,IAAG+F,UAG/Cu/E,GAAYh2E,KAAKoV,IAAI2vE,EAAYhP,EAAIoB,KAAKrgF,QAAQskF,UAAU1qF,IAAG+F,MACnEwlF,GAAKxB,gBAAgBoK,EAAc,GAAIr4E,GAAWs4E,EAAY,GAAIv4E,GAAMypE,EAAWt/E,KACnFulF,EAAKxB,gBAAgBoK,EAAc,GAAIr4E,GAAWs4E,EAAY,GAAIv4E,GAAMpf,KAAK40F,KAAKvK,KAAKC,OAAOtqF,KAAK40F,KAAKvK,KAAKliF,MAAQ,GAAGmB,MAAOC,KAC/HouF,EAAWjlF,GAAKm2E,EAChBtlF,IAAMurF,EAAKlB,WAAa,GAKhC2H,EAAYv1F,KAAK4gC,cAI7B,GAAIk3D,IAAY,EACZC,EAAyB,CACzBvC,GAAWx0F,OAAS,IACpB+2F,EAAyBvC,EAAW,GAGxC,KAAK,GADDwC,KAAsB,EAAG,IACpBz0F,GAAI,EAAGA,GAAIvD,KAAK40F,KAAKvK,KAAKliF,MAAO5E,KACtC,IAA0B,GAAtBvD,KAAK01F,cAAsB11F,KAAK40F,KAAKvK,KAAKC,OAAO/mF,IAAGqkF,MAAMC,QAAQ7nF,KAAK01F,cAAcn1F,gBAAiBwpF,IAAS,CAC/G,GAAIC,IAAOhqF,KAAK40F,KAAKvK,KAAKC,OAAO/mF,IAAGqkF,MAAMC,QAAQ7nF,KAAK01F,cAAcn1F,KACrEP,MAAKi4F,qBAAuBjO,GAAKiO,qBACjCH,GAAY,EAYpB,IAAKA,GAAatC,EAAWx0F,OAAS,EAAG,CACrC,IAASuC,GAAI,EAAGA,GAAIL,EAAI,EAAGK,KACnBw0F,EAAyBvC,EAAWjyF,MACpCw0F,EAAyBvC,EAAWjyF,IAG5CvD,MAAKi4F,qBAAuBF,MAG5B/3F,MAAKi4F,qBAAuBD,EAAkB,GAAG,EAErD,IAAIh4F,KAAKm0F,aAAa7wF,QAAQmK,GAASzN,KAAKm0F,aAAanzF,OAAS,GAC9C,MAAbu0F,GAAqBrwE,EAAON,QAAUojC,gBAAckuC,QAEvD,GADel2F,KAAK40F,KAAKzK,YACM,GAA3B6N,EAAkB,GAAG,GAAS,CAC9B,GAAIhjC,IAAUh1D,KAAK4gC,YAAYo0B,OACfA,IAAQ1xD,QAAQtD,KAAK4gC,YACrC5gC,MAAK00F,gBAAkB10F,KAAK4gC,YAAY3B,SACxCj/B,KAAKqwE,cAAgB,GAAIhxD,GAAW,GAAIF,GAAO,EAAG,GAAInf,KAAK4gC,YAAYm/B,gBACvD//D,MAAK00F,gBAAgB/zD,KAAKq0B,QAAQ1xD,QAAQtD,KAAK00F,gBAAgB/zD,UAG/E3gC,MAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,EAS9CllB,MAAKm0F,aAAanzF,OAAS,IAAMwO,GAASxP,KAAKm0F,aAAanzF,OAAS,GAAKkkB,EAAON,SAAWojC,gBAAckuC,UAC1Gl2F,KAAK4gC,YAAc5gC,KAAKm2F,kBAAkBjxE,GACrCA,EAAO6oD,eAAer7D,IAAMwS,EAAO6oD,eAAep7D,GAAOuS,EAAO6oD,eAAep7D,IAAMuS,EAAO6oD,eAAexkE,QACxG2b,EAAO6oD,eAAexkE,SAAW2b,EAAO6oD,eAAezkE,OAA2C,IAAhC4b,EAAO6oD,eAAezkE,QAC5FtJ,KAAKqwE,cAAc39D,GAAK1S,KAAK60F,cAAcniF,EAC3C1S,KAAKqwE,cAAc19D,GAAK3S,KAAK60F,cAAcliF,IAUvD,MALA1P,GAASjD,KAAK0wE,kBACV1wE,KAAK40F,KAAK9rE,MAAM8iE,yBAA2B5rF,KAAK40F,KAAK9rE,MAAMisE,wBAA0B5N,4BAA0B+Q,UAC/Gl4F,KAAKm4F,eAAe7C,GAExBt1F,KAAKy2F,kBAAkBxzF,GAChBA,GAEX0pF,EAAgBhtF,UAAUw3F,gBAAkB,SAAUvO,GAElD,IAAK,GADD3lF,IAAS,EACJC,EAAI,EAAGA,EAAI0lF,EAAIhB,MAAMz/E,MAAOjF,IAC5B0lF,EAAIhB,MAAMC,QAAQ3kF,GAAGk1F,sBACtBn1F,GAAS,EAGjB,OAAOA,IAOX0pF,EAAgBhtF,UAAUw2F,kBAAoB,SAAUjxE,GACpD,GAAI8vC,GAAUh1D,KAAK4gC,YAAYo0B,QAC3BqjC,EAAW,KACX7oF,EAAQwlD,EAAQ1xD,QAAQtD,KAAK4gC,YACjC5gC,MAAKk0F,MAAO,EAERmE,EADA7oF,IAAUwlD,EAAQ7sD,MAAQ,EACf6sD,EAAQthD,MAGRshD,EAAQC,WAAWzlD,EAAQ,GAE1CxP,KAAK00F,gBAAkB2D,EAASp5D,QAChC,IAAIq5D,GAAYt4F,KAAK00F,gBAAgB/zD,KAAKq0B,QAAQ1xD,QAAQtD,KAAK00F,gBAAgB/zD,KAW/E,QAVuD,IAAjD3gC,KAAKwxF,oBAAoBluF,QAAQg1F,IACnCt4F,KAAKwxF,oBAAoBtwF,KAAKo3F,GAElCt4F,KAAKqwE,cAAgB,GAAIhxD,GAAW,GAAIF,GAAO,EAAG,GAAIk5E,EAASt4B,qBACxC,KAAX76C,GAAqC,MAAVA,GAAkBA,EAAO4oD,uBAAuD,KAA1B5oD,EAAO6oD,gBAA4D,MAAzB7oD,EAAO6oD,gBAA2B7oD,EAAO6oD,eAAer7D,IAAMwS,EAAO6oD,eAAep7D,GAAOuS,EAAO6oD,eAAep7D,IAAMuS,EAAO6oD,eAAexkE,QAC5Q2b,EAAO6oD,eAAexkE,SAAW2b,EAAO6oD,eAAezkE,OAA2C,IAAhC4b,EAAO6oD,eAAezkE,QAC5FtJ,KAAKqwE,cAAc39D,EAAIwS,EAAO6oD,eAAer7D,EAC7C1S,KAAKqwE,cAAc19D,EAAIuS,EAAO6oD,eAAep7D,EAC7C3S,KAAKqwE,cAAc9mE,OAAS2b,EAAO6oD,eAAexkE,QAE/C8uF,GAEX1L,EAAgBhtF,UAAU44F,qBAAuB,SAAUrzE,GACvD,GAAIszE,GAAgB,GAAI52E,EACxB,OAAQsD,GAAO8uC,YAAcwkC,EAAcxkC,WAAa9uC,EAAOoF,mBAAqBkuE,EAAcluE,kBAC9FpF,EAAO3d,WAAaixF,EAAcjxF,UAAY2d,EAAOtC,kBAAoB41E,EAAc51E,iBACvFsC,EAAOwvC,0BAA4B8jC,EAAc9jC,yBACjDxvC,EAAOivC,gBAAkBqkC,EAAcrkC,eACpCjvC,EAAOiD,YAAcqwE,EAAcrwE,WAAajD,EAAOoB,cAAgBkyE,EAAclyE,aACxFpB,EAAOuzE,wBAA0BD,EAAcC,uBAAyBvzE,EAAOwzE,SAAWF,EAAcE,QACxGxzE,EAAOkB,kBAAoBoyE,EAAcpyE,iBAAmBlB,EAAOuD,cAAgB+vE,EAAc/vE,aACjGvD,EAAO21B,iBAAmB29C,EAAc39C,gBAAkB31B,EAAOqF,cAAgBiuE,EAAcjuE,aAC/FrF,EAAOqC,WAAaixE,EAAcjxE,UAM1ColE,EAAgBhtF,UAAUg5F,oBAAsB,SAAU15D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOuoB,GACpG,GAAIs7C,GAAO,IAMX,OALIpkE,MAAK40F,KAAKnC,qBACVruB,EAAO,GAAIw0B,IAA8B35D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOuoB,GACvF9oB,KAAK40F,KAAKpC,gBAAgBpuB,GAC1Bt7C,EAAQs7C,EAAKt7C,OAEVA,GAMX6jE,EAAgBhtF,UAAUk5F,mBAAqB,SAAU55D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOu4F,GACnG,GAAI10B,GAAO,IACPpkE,MAAK40F,KAAKjC,mBACVvuB,EAAO,GAAI20B,IAA4B95D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOu4F,GACrF94F,KAAK40F,KAAKlC,cAActuB,KAGhCuoB,EAAgBhtF,UAAUw4F,eAAiB,SAAU7C,GAKjD,IAAK,GAJDj6E,GAAWrb,KAAK4gC,YAAYvlB,SAC5BpT,KACArH,EAAO00F,EAAc10F,OAEhBsC,GADIoyF,EAAcn0F,SACd,GAAG+B,EAAItC,EAAKI,OAAQkC,KACzBy9B,EAAO//B,EAAKsC,IACX8xD,QAAU,KACf/sD,EAAM/G,KAAKy/B,GACXtlB,EAASpT,MAAMvH,OAAOigC,EAG1B,KAASz9B,EAAI,EAAGA,EAAIoyF,EAAc5zF,OAAQwB,IAEtC,IAAK,GAAI2wC,GAAI3wC,EAAG81F,EAAW1D,EAAc5zF,OAAS1B,KAAKm0F,aAAanzF,OAAS6yC,EAAIyhD,EAAc5zF,OAAQmyC,GAAKmlD,EAAS,CACjH,GAAIr4D,GAAO14B,EAAM4rC,OACG,KAATlT,IAA0D,IAAlCtlB,EAASpT,MAAM3E,QAAQq9B,IACtDtlB,EAASpT,MAAMyL,IAAIitB,KAUnCgsD,EAAgBhtF,UAAU+wE,gBAAkB,WACxC,GAAI1wE,KAAK40F,KAAKzK,aAAenqF,KAAK40F,KAAKxI,yBACnC,IAAK,GAAIlpF,GAAI,EAAGA,EAAIlD,KAAK40F,KAAKvK,KAAKliF,MAAOjF,IAAK,CAC3C,GAAI0lF,GAAM5oF,KAAK40F,KAAKvK,KAAKC,OAAOpnF,EAC5B0lF,GAAIuE,eAAiB,GAAKvE,EAAI4D,aAC9BxsF,KAAK60F,cAAcliF,EAAI3S,KAAK4gC,YAAYu8B,OAAOxqD,GAI3D,GAAI6B,EAUJ,OATKxU,MAAKi5F,YACNzkF,EAAS,GAAI6K,GAAWrf,KAAK60F,cAAe,GAAIz1E,GAAMpf,KAAKqwE,cAAc/mE,MAAOtJ,KAAKqwE,cAAc19D,EAC/F3S,KAAK60F,cAAcliF,KAOpB,GAAIumF,IAAoBl5F,KAAK4gC,YAAapsB,IAMrDm4E,EAAgBhtF,UAAU43F,kBAAoB,SAAU3O,EAAKr/E,GAEzD,IAAK,GADD4vF,GAAY,EACPj2F,EAAIlD,KAAKy1F,eAAgBvyF,GAAKlD,KAAK01F,aAAcxyF,IACP,OAAzC0lF,EAAIhB,MAAMC,QAAQ3kF,GAAG0xD,iBAAqE,KAAzCg0B,EAAIhB,MAAMC,QAAQ3kF,GAAG0xD,qBACxB,KAAzCg0B,EAAIhB,MAAMC,QAAQ3kF,GAAG0xD,kBAC5BukC,EAAYtmF,KAAKoV,IAAIkxE,EAAWvQ,EAAIhB,MAAMC,QAAQ3kF,GAAGynF,iBAG7D,OAAO93E,MAAKoV,IAAI1e,EAAQ4vF,IAM5BxM,EAAgBhtF,UAAUi2F,sBAAwB,SAAUh1D,EAAayvC,EAAewiB,GACpF,GAAI6D,IAAS,CACb,IAAI12F,KAAK40F,KAAKwE,qBAAsB,CAChC,GAAIh1B,GAAO,GAAIi1B,IAAgChpB,EAAezvC,EAAaiyD,EAC3E7yF,MAAK40F,KAAK7kB,kBAAkB3L,GAQ5BsyB,MAAiC,KAAhBtyB,EAAKsyB,QAAiCtyB,EAAKsyB,OAC5DrmB,EAAgBjM,EAAK5vD,OACrBq+E,EAAazuB,EAAKk1B,cAEtB,OAASh/D,YAAao8D,EAAQrmB,cAAeA,EAAe6d,gBAAiB2E,IAMjFlG,EAAgBhtF,UAAU82F,kBAAoB,SAAUxzF,GACpD,GAAImhE,GAAO,GAAIm1B,IAA8Bt2F,EAI7C,OAHIjD,MAAK40F,KAAK4E,oBACVx5F,KAAK40F,KAAK5kB,gBAAgB5L,GAEvBA,GAEXuoB,EAAgBhtF,UAAUq2F,QAAU,SAAUpN,EAAK3lF,EAAQsG,GACvD,OAAsB,KAAXtG,EAAwB,CAG/B,GAAIw2F,GAAW,GAAIC,IACfC,EAAoB,EAEpBj4F,EAAO,GAAI0d,GAAM,EAAG,GACpBsuE,GAAW,CACf,IAAI9E,EAAI4B,cAAe,CACnB,GAAIwI,GAAU,EACV4G,EAAe55F,KAAK40F,KAAKvK,KAAK8D,cAAc7qF,QAAQslF,IAClC,IAAlBgR,IAEsB,KADtBA,EAAe55F,KAAK40F,KAAKxG,QAAQ9qF,QAAQslF,MAErC8E,GAAW,EAGnB,KAASxqF,EAAI,EAAGA,EAAI0lF,EAAIhB,MAAMz/E,MAAOjF,IAAK,CACtC,GAAI4rF,GAAOlG,EAAIhB,MAAMC,QAAQ3kF,EAC7B8vF,GAAUngF,KAAKoV,IAAI+qE,EAASlE,EAAKpD,SAErC,IAASxoF,EAAI02F,EAAc12F,EAAI02F,EAAe5G,EAAS9vF,IACnDy2F,GAAsBjM,EAAW1tF,KAAK40F,KAAKxG,QAAQE,UAAUprF,GAAGqG,OAASvJ,KAAK40F,KAAKvK,KAAKC,OAAOpnF,GAAGqG,OAkB1G,GAAIswF,GAAmBjR,EAAIuE,eAAiB,EAAMvE,EAAIuE,eAAiBvE,EAAIr/E,MAC3E,QAAqC,KAA1BvJ,KAAK40F,KAAKzK,aAA+BnqF,KAAK40F,KAAKzK,iBAA+C,KAAzBnqF,KAAK40F,KAAK1K,YAAsD,MAAxBlqF,KAAK40F,KAAK1K,WAyB9HlqF,KAAKqwE,cAAc19D,EAAI3S,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OAAS65E,EAChF75F,KAAKy0F,kBAAkBlrF,QAAUvJ,KAAKqwE,cAAc19D,EAAI3S,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OACtG65E,EAAmB75F,KAAKqwE,cAAc9mE,QAAUvJ,KAAKqwE,cAAc19D,EACrE3S,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OAAS25E,EAAoB35F,KAAKy0F,kBAAkBlrF,YAE1C,KAA/CvJ,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAK6C,cAAgC7sF,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAK6C,aAAa3e,QAAUjmB,qBAAmB6xC,UAC7InN,EAAgBsJ,eAAiBj2F,KAAK40F,KAAKvK,KAAK8D,cAAc7qF,QAAQslF,GACtE5oF,KAAK40F,KAAKtI,mBAAqBtsF,KAAK40F,KAAKvK,KAAK8D,cAAc7qF,QAAQslF,IAEpE+D,EAAgBsJ,gBAAkB,GAAKtJ,EAAgBsJ,iBAAmBrN,EAAI2N,UAC1Ev2F,KAAK40F,KAAKxI,2BACVqN,EAASpQ,UAAW,EAOpBoQ,EAASjlF,OAASxU,KAAKqwE,cACvBrwE,KAAK+5F,iBAAiBN,EAAU7Q,EAAKiR,GACrCjR,EAAI4D,YAAa,EACjB5D,EAAIoR,gBAAkBrN,EAAgBsJ,kBAa9CwD,EAASpQ,UAAW,EAChBT,EAAIoB,KAAKE,WAAWtB,IAAIsE,oBAAsB,EAC9CtE,EAAI4D,YAAa,GAGjB5D,EAAI4D,YAAa,EACjBqN,EAAmBjR,EAAIr/E,QAEvBvJ,KAAK40F,KAAKzK,aAAevB,EAAIuE,eAAiB,GACS,MAAnDntF,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,cACpC2O,GAAoB75F,KAAK40F,KAAK1K,WAAWtB,IAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,QAG5EhgB,KAAKg2F,QAAQpN,EAAK6Q,EAAUI,QAKhC,IAAIA,EAAmB75F,KAAKy0F,kBAAkBlrF,OACtCvJ,KAAK40F,KAAKxI,2BACVqN,EAASpQ,UAAW,EAEpBrpF,KAAK+5F,iBAAiBN,EAAU7Q,EAAKiR,GACrCjR,EAAIkH,aAAc,EAClBlH,EAAI4D,YAAa,GACoB,IAAjC5D,EAAIoB,KAAKsC,qBACTmN,EAASpQ,UAAW,QAS3B,IAAIrpF,KAAKqwE,cAAc19D,EAAIknF,EAAmB75F,KAAKy0F,kBAAkBlrF,QACtEvJ,KAAKqwE,cAAc19D,EAAIknF,EAAoB75F,KAAKqwE,cAAc9mE,OAASvJ,KAAK60F,cAAcliF,GAC1F3S,KAAKqwE,cAAc19D,EAAIgnF,EAAoB35F,KAAKy0F,kBAAkBlrF,OAAQ,CAE1E,GAAI0wF,IAAQ,GACPj6F,KAAK40F,KAAKxI,0BAA6BpsF,KAAK40F,KAAKiC,cAAiBjO,EAAIqH,gBAAmBrH,EAAI2F,iBAUzFvuF,KAAK40F,KAAKxI,0BAAsD,MAA1BpsF,KAAK40F,KAAK/H,cAAwB7sF,KAAK40F,KAAK/H,aAAajoE,QAAUojC,gBAAc8kC,UAAY9sF,KAAK40F,KAAK/H,aAAa3e,OAASjmB,qBAAmB+oB,YAAc4X,EAAIqH,gBAAkBjwF,KAAKqwE,cAAc19D,EAAIpJ,EAASvJ,KAAKy0F,kBAAkBlrF,UACtR0wF,EAAQj6F,KAAKk6F,YAAYl6F,KAAKy0F,kBAAkBlrF,OAASvJ,KAAKqwE,cAAc19D,EAAG3S,KAAK40F,KAAMhM,MAEtFqR,IAAuB,OAAbj6F,KAAKq0F,KAA8C,GAA9Br0F,KAAKq0F,IAAIrsE,WAAWze,QAAqC,MAAtBvJ,KAAKq0F,IAAI7jB,WAAqBxwE,KAAKq0F,IAAI7jB,UAAUxvE,OAAS,GAAKhB,KAAKoxE,eAAiBpxE,KAAKq0F,IAAI7jB,YAChKypB,GAAqB,MAAZj6F,KAAKq0F,KAAer0F,KAAKq0F,IAAI5gC,UAAY,IAElDwmC,GAAQ,GAEZj6F,KAAKoxE,cAAgB,OAhBjB6oB,EAD2B,OAA3Bj6F,KAAK40F,KAAK/H,cAAyB7sF,KAAK40F,KAAK/H,aAAa9e,eAAexkE,OAAS,EAC1EvJ,KAAKk6F,YAAal6F,KAAKqwE,cAAc9mE,OAASvJ,KAAK60F,cAAcliF,EAAK3S,KAAKqwE,cAAc19D,EAAG3S,KAAK40F,KAAMhM,GAGvG5oF,KAAKk6F,YAAYl6F,KAAKy0F,kBAAkBlrF,OAASvJ,KAAKqwE,cAAc19D,EAAG3S,KAAK40F,KAAMhM,MAE1F5oF,KAAKs0F,YAAa,GAatB3H,EAAgBsJ,gBAAkB,GAAKtJ,EAAgBsJ,iBAAmBrN,EAAI2N,UAAY0D,EACtFj6F,KAAK40F,KAAKxI,0BACVqN,EAASpQ,UAAW,EACpBrpF,KAAK+5F,iBAAiBN,EAAU7Q,EAAKiR,GACrCjR,EAAI4D,YAAa,EACjB5D,EAAIoR,gBAAkBrN,EAAgBsJ,gBACD,IAAjCrN,EAAIoB,KAAKsC,qBACTmN,EAASpQ,UAAW,KAIxBoQ,EAASpQ,UAAW,EACpBrpF,KAAKg2F,QAAQpN,EAAK6Q,EAAUI,IAIhCJ,EAASpQ,UAAW,MAIxBoQ,GAASpQ,UAAW,EACpBrpF,KAAKg2F,QAAQpN,EAAK6Q,EAAUI,GAC5BjR,EAAI4D,YAAa,CAGzB,OAAOiN,GAGP,GACIU,GAAa,GAAIh7E,GAAOnf,KAAKqwE,cAAc39D,EAAG1S,KAAKqwE,cAAc19D,EAKrE1P,GAAOuR,OAAS,GAAI6K,GAAW86E,EAAY,GAAI/6E,GAAM,EAAG,IACxD7V,EAASvJ,KAAKu3F,kBAAkB3O,EAAKr/E,EACrC,KAAK,GAAIrG,GAAIlD,KAAKy1F,eAAgBvyF,GAAKlD,KAAK01F,aAAcxyF,IAAK,CAC3D,GAAIk3F,GAAgBl3F,EAAIlD,KAAK01F,aAAe,GAAO9M,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa,CAErF,KAAKwM,EACD,IAAK,GAAIvmD,GAAI,EAAGA,EAAI+0C,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAY/5C,IACjD+0C,EAAIhB,MAAMC,QAAQ3kF,EAAI2wC,GAAGg6C,qBAAsB,CAGnDnsF,GAAO,GAAI0d,GAAMpf,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,MAAOC,IAUtDvJ,KAAKu4F,qBAAqBv4F,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGgiB,SAC1DllB,KAAKu4F,qBAAqB3P,EAAIhB,MAAMC,QAAQ3kF,GAAGi9B,gBAC/CyoD,EAAIhB,MAAMC,QAAQ3kF,GAAGi9B,aAAengC,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGgiB,OAEvE,IAAI4zE,GAAYlQ,EAAIhB,MAAMC,QAAQ3kF,GAAG4lB,MACjCuxE,EAAoD,gBAA/BzR,GAAIhB,MAAMC,QAAQ3kF,GAAG3C,OACX,OAA/BqoF,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,MAAkBqoF,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,MAAQ,EACxEqoF,GAAIhB,MAAMC,QAAQ3kF,GAAG4lB,MAAQ9oB,KAAK24F,oBAAoB34F,KAAK00F,gBAAiB10F,KAAKkuF,gBAAiBhrF,EAAG,GAAImc,GAAW86E,EAAYz4F,GAAO24F,EAAWvB,GAG1IlQ,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,gBAAiBwpF,OAClCC,EAAOpB,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,OAC3BkxF,gBAAkBvuF,EAE3B,IAAI4tE,GAAe8X,EAAIhB,MAAMC,QAAQ3kF,GAAGk9B,KAAKpgC,KAAK00F,gBAAiB,GAAIr1E,GAAW86E,EAAYz4F,GAAO04F,EAqBzG,IApBQxR,EAAIoB,KAAKlhE,MAAM8iE,0BAA4BhD,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa5tF,KAAK01F,cAClFxyF,EAAI0lF,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa5tF,KAAK01F,aAAe,IAAM11F,KAAK01F,aAAe9M,EAAIhB,MAAMz/E,MAAQ,IACtGygF,EAAIiD,iBAAmB7rF,KAAK01F,cAE5B9M,EAAIoB,KAAKlhE,MAAM8iE,yBAA4BhD,EAAIiD,iBAAmB,IAAMjD,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAC7F5tF,KAAK01F,cAAgBxyF,EAAI0lF,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa5tF,KAAK01F,aAAe,IAC/E9M,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa5tF,KAAK01F,aAAexyF,EAAI,EAAI,IAC9D0lF,EAAIhB,MAAMC,QAAQe,EAAIiD,iBAAmB,GAAGtrF,MAAyB,OAAjBuwE,OAAoD73D,KAA3B63D,EAAaN,UACtFM,EAAaN,UAAiB,GAClCoY,EAAIhB,MAAMC,QAAQe,EAAIiD,iBAAmB,GAAG1rD,aAAeyoD,EAAIhB,MAAMC,QAAQ3kF,GAAGi9B,aAChFyoD,EAAIhB,MAAMC,QAAQe,EAAIiD,iBAAmB,GAAG/iE,MAAQ8/D,EAAIhB,MAAMC,QAAQ3kF,GAAG4lB,MACzE8/D,EAAIhB,MAAMC,QAAQe,EAAIiD,iBAAmB,GAAG+B,WAAahF,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa5tF,KAAK01F,aAAexyF,EAAI,GAI3Hm3F,EAAoD,gBAA/BzR,GAAIhB,MAAMC,QAAQ3kF,GAAG3C,OACP,OAA/BqoF,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,MAAkBqoF,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,MAAQ,GACnE65F,GACDp6F,KAAK64F,mBAAmB74F,KAAK00F,gBAAiB10F,KAAKkuF,gBAAiBhrF,EAAG,GAAImc,GAAW86E,EAAYz4F,GAAO24F,EAAWzR,EAAIhB,MAAMC,QAAQ3kF,GAAG4lB,OAEzI8/D,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,gBAAiBwpF,IAAS,CAC/C,GAAIC,GAAOpB,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,KAC5BP,MAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,OAAStJ,KAAK00F,gBAAgB1vE,WAAW1b,OACxE6wF,EAAWznF,EAAIs3E,EAAKiO,qBACpBkC,EAAWznF,GAAKs3E,EAAKlhE,MAAMqiE,aAG3BgP,EAAWznF,GAAK1S,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,UAInD6wF,GAAWznF,GAAK1S,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,MAGlDs/E,EAAI2F,mBAAoB3F,EAAIqH,iBAC7BjwF,KAAKqwE,cAAc19D,GAAKpJ,GAE5BtG,EAAOuR,OAAS,GAAI6K,GAAW,GAAIF,GAAOlc,EAAOuR,OAAO9B,EAAGzP,EAAOuR,OAAO7B,GAAI,GAAIyM,GAAM+6E,EAAWznF,EAAGynF,EAAWxnF,KAGxHg6E,EAAgBhtF,UAAUu6F,YAAc,SAAUI,EAAetQ,EAAMR,GAGnE,IAAK,GAFDyQ,IAAQ,EACRlP,EAAW,GAAIrmE,GACVxhB,EAAI,EAAGA,EAAIsmF,EAAQ5B,MAAMz/E,MAAOjF,IAAK,CAC1C,GAAI4rF,GAAOtF,EAAQ5B,MAAMC,QAAQ3kF,EACjC,QAA0B,KAAf4rF,EAAKvuF,OAAwC,OAAfuuF,EAAKvuF,OAAwC,gBAAfuuF,GAAKvuF,MAAoB,CAC5F,GAAIoI,GAAO,IAEPA,OAD2B,KAApBmmF,EAAKhmE,MAAMngB,MAA2C,MAAnBmmF,EAAKhmE,MAAMngB,KAC9CmmF,EAAKhmE,MAAMngB,SAEkB,KAAxBmmF,EAAKlG,IAAI9/D,MAAMngB,MAA+C,MAAvBmmF,EAAKlG,IAAI9/D,MAAMngB,KAC3DmmF,EAAKlG,IAAI9/D,MAAMngB,SAEmB,KAA7BmmF,EAAKlG,IAAIoB,KAAKlhE,MAAMngB,MAAoD,MAA5BmmF,EAAKlG,IAAIoB,KAAKlhE,MAAMngB,KACrEmmF,EAAKlG,IAAIoB,KAAKlhE,MAAMngB,KAGpB0jB,GAAYoU,YAEvBzgC,KAAKoxE,cAAgB0d,EAAKvuF,KAC1B,IAAI+I,GAAQwlF,EAAKxlF,MACbixF,EAASvQ,EAAKrgF,QAAQskF,UAAU/qF,EAChCq3F,GAAOrL,eAAiBJ,EAAKxlF,MAAQixF,EAAOjxF,QAC5CA,EAAQixF,EAAOjxF,OAEnBtJ,KAAKq0F,IAAMtJ,EAASnmE,OAAOkqE,EAAKvuF,MAAOoI,EAAMmmF,EAAK3uD,aAAc,GAAI/gB,GAAM9V,EAAOgxF,IAAgB,EAAOt6F,KAAKy0F,kBAC7G,IAAIlrF,GAASvJ,KAAKq0F,IAAIrsE,WAAWze,MACjC,IAAmB,KAAfulF,EAAKvuF,OAA2B,IAAXgJ,EAAc,CACnC0wF,GAAQ,CACR,OAeJ,GAbmB,OAAfnL,EAAKhmE,OAAyC,OAAvBgmE,EAAKhmE,MAAMy/D,SAA+C,OAA3BuG,EAAKhmE,MAAMy/D,QAAQzoE,KAA8C,OAA9BgvE,EAAKhmE,MAAMy/D,QAAQvoE,SAC5GzW,GAA6E,GAAlEulF,EAAKhmE,MAAMy/D,QAAQzoE,IAAIxW,MAAQwlF,EAAKhmE,MAAMy/D,QAAQvoE,OAAO1W,QAEpEtJ,KAAKq0F,IAAI5gC,UAAY,GAA0B,MAArBq7B,EAAK3uD,cAAyD,GAAjC2uD,EAAK3uD,aAAa7Z,cACzE/c,IAAWvJ,KAAKq0F,IAAI5gC,UAAY,GAAMq7B,EAAKhmE,MAAMqX,aAAyB,aAE1E2uD,EAAKhmE,MAAMoiE,YACX3hF,GAAWygF,EAAKlhE,MAAMoiE,YAAYprE,IAAMkqE,EAAKlhE,MAAMoiE,YAAYlrE,OAKnEzW,GAAUygF,EAAKlhE,MAAMqiE,YACjBmP,EAAgB/wF,OAAyC,KAAvBvJ,KAAKq0F,IAAI7jB,WAAoD,OAAvBxwE,KAAKq0F,IAAI7jB,UAAqB,CACtGypB,GAAQ,CACR,SAIZ,MAAOA,IAEXtN,EAAgBhtF,UAAUo6F,iBAAmB,SAAU92F,EAAQ2lF,EAAK4R,GAChE,GAAIz6D,GAAW,GAAI5gB,GAAOnf,KAAKqwE,cAAc39D,EAAG1S,KAAKqwE,cAAc19D,EAC/Di2E,GAAIoB,KAAKG,aAAevB,EAAIoB,KAAKoC,0BAA4BpsF,KAAK60F,cAAcniF,IAAM1S,KAAKqwE,cAAc39D,IACzGqtB,EAASrtB,EAAI1S,KAAK60F,cAAcniF,GAEpCzP,EAAOuR,OAAS,GAAI6K,GAAW0gB,EAAU,GAAI3gB,GAAM,EAAG,IACtDpf,KAAKy6F,WAAa7R,EAAIuE,eAAiB,EAAIntF,KAAKy0F,kBAAkBlrF,OAAS,EAEvEq/E,EAAIoB,KAAKlhE,MAAMoiE,YAAYprE,IAAM9f,KAAKqwE,cAAc19D,EAAIi2E,EAAIoB,KAAKlhE,MAAMoiE,YAAYlrE,OAAShgB,KAAKy0F,kBAAkBlrF,SACnHq/E,EAAIuE,eAAiBntF,KAAKqwE,cAAc19D,EAAI6nF,EAAkBx6F,KAAKy0F,kBAAkBlrF,OAQzF,KAASrG,EAAI,EAAGA,EAAI0lF,EAAIhB,MAAMz/E,MAAOjF,IAAK,CACtC,GAAI4rF,GAAOlG,EAAIhB,MAAMC,QAAQ3kF,EACZ4rF,GAAKnE,kBACH6P,GAAmB1L,EAAKvuF,gBAAiBwpF,MACxDnB,EAAIuE,eAAiB,GAM7B,IAAK,GAAIjqF,GAAIlD,KAAKy1F,eAAgBvyF,GAAKlD,KAAK01F,aAAcxyF,IAAK,CAC3D,GAAIw3F,GAAkB16F,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,MACjD8wF,EAAgBxR,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa1qF,EAAIlD,KAAK01F,aAAe,GACzE9M,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAa,CACvC,KAAKwM,EACD,IAAK,GAAI35F,GAAI,EAAGA,EAAImoF,EAAIhB,MAAMC,QAAQ3kF,GAAG0qF,WAAYntF,IACjDmoF,EAAIhB,MAAMC,QAAQ3kF,EAAIzC,GAAGotF,qBAAsB,EAC/C6M,GAAmB16F,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,EAAIzC,GAAG6I,KAG9D,IAAI5H,GAAO,GAAI0d,GAAMs7E,EAAiB16F,KAAKy6F,WAAa,EAAMz6F,KAAKy6F,WAC/Dz6F,KAAKy0F,kBAAkBlrF,QAQvBoxF,EAAa/R,EAAIhB,MAAMC,QAAQ3kF,GAAG4lB,KACtC8/D,GAAIhB,MAAMC,QAAQ3kF,GAAG4lB,MAAQ6xE,CAC7B,IACI7pB,GAAe,IAuBnB,IArBI8X,EAAIhB,MAAMC,QAAQ3kF,GAAGmpF,WAAazD,EAAIr/E,OACtCunE,EAAe8X,EAAIhB,MAAMC,QAAQ3kF,GAAGk9B,KAAKpgC,KAAK00F,gBAAiB,GAAIr1E,GAAW0gB,EAAUr+B,GAAO04F,GAG/FxR,EAAIuE,eAAiB,GACD,MAAhBrc,OAA0D,KAA3BA,EAAaN,YAC5CoY,EAAIhB,MAAMC,QAAQ3kF,GAAGk1F,qBAAsB,EAC3CxP,EAAIhB,MAAMC,QAAQ3kF,GAAG0xD,gBAA4C,MAA1Bkc,EAAaN,UAAoB,IAAMM,EAAaN,UAC3FoY,EAAIuE,eAAiBqN,EAAkB1pB,EAAa9oD,WAAWze,QAGvEtG,EAAOomF,SAAapmF,EAAOomF,SAA8BT,EAAIhB,MAAMC,QAAQ3kF,GAAGk1F,oBAAvCn1F,EAAOomF,SAU1CT,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,gBAAiBwpF,IAAS,CAC/C,GAAIC,GAAOpB,EAAIhB,MAAMC,QAAQ3kF,GAAG3C,KAChCP,MAAK46F,4BAA8B13F,EAM/BlD,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,OAAStJ,KAAK00F,gBAAgB1vE,WAAW1b,OACxEy2B,EAASrtB,EAAI1S,KAAKi4F,qBAClBl4D,EAASrtB,GAAKs3E,EAAKlhE,MAAMqiE,aAGzBprD,EAASrtB,GAAK1S,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,UAIjDy2B,GAASrtB,GAAK1S,KAAK40F,KAAKjrF,QAAQskF,UAAU/qF,GAAGoG,MAGrDtJ,KAAKqwE,cAAc19D,GAAK3S,KAAKy6F,WAAa,EAAMz6F,KAAKy6F,WAAaD,EAClEv3F,EAAOuR,OAAS,GAAI6K,GAAW,GAAIF,GAAOlc,EAAOuR,OAAO9B,EAAGzP,EAAOuR,OAAO7B,GAAI,GAAIyM,GAAM2gB,EAASrtB,EAAGqtB,EAASptB,KAMhHg6E,EAAgBsJ,gBAAkB,EAC3BtJ,GACTpf,IASE2rB,GAAqC,SAAUzjF,GAM/C,QAASyjF,GAAoBv4D,EAAMnsB,GAC/B,MAAOiB,GAAO5V,KAAKG,KAAM2gC,EAAMnsB,IAAWxU,KAE9C,MARA6U,IAAUqkF,EAAqBzjF,GAQxByjF,GACT1qB,IAKEoe,GAAqC,SAAUn3E,GAM/C,QAASm3E,GAAoB3e,GACzB,MAAOx4D,GAAO5V,KAAKG,KAAMiuE,IAAejuE,KAE5C,MARA6U,IAAU+3E,EAAqBn3E,GAQxBm3E,GACT5e,IAEE6sB,GAAmC,WAMnC,QAASA,GAAkB57D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,GAC9DP,KAAK86F,aAAevE,EACpBv2F,KAAK+6F,cAAgBrM,EACrB1uF,KAAK6B,cAAgBtB,EACrBP,KAAKg7F,WAAaxmF,EAClBxU,KAAK0pD,YAAczqB,EA0DvB,MAxDAv/B,QAAOuC,eAAe44F,EAAkBl7F,UAAW,YAM/CuC,IAAK,WACD,MAAOlC,MAAK86F,cAEhBz4F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe44F,EAAkBl7F,UAAW,aAK/CuC,IAAK,WACD,MAAOlC,MAAK+6F,eAEhB14F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe44F,EAAkBl7F,UAAW,SAK/CuC,IAAK,WACD,MAAOlC,MAAK6B,eAEhBQ,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe44F,EAAkBl7F,UAAW,UAK/CuC,IAAK,WACD,MAAOlC,MAAKg7F,YAEhB34F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe44F,EAAkBl7F,UAAW,YAK/CuC,IAAK,WACD,MAAOlC,MAAK0pD,aAEhBrnD,YAAY,EACZC,cAAc,IAEXu4F,KAGPjC,GAA+C,SAAUnjF,GAOzD,QAASmjF,GAA8B35D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOuoB,GACjF,GAAInT,GAAQF,EAAO5V,KAAKG,KAAMi/B,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,IAAUP,IAE/E,OADA2V,GAAMmT,MAAQA,EACPnT,EA+BX,MAxCAd,IAAU+jF,EAA+BnjF,GAWzC/V,OAAOuC,eAAe22F,EAA8Bj5F,UAAW,QAM3DuC,IAAK,WACD,MAAOlC,MAAKi7F,OAEhB74F,IAAK,SAAU7B,GACXP,KAAKi7F,MAAQ16F,GAEjB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAe22F,EAA8Bj5F,UAAW,SAK3DuC,IAAK,WACD,MAAOlC,MAAK0qF,WAEhBtoF,IAAK,SAAU7B,GACXP,KAAK0qF,UAAYnqF,GAErB8B,YAAY,EACZC,cAAc,IAEXs2F,GACTiC,IAEE9B,GAA6C,SAAUtjF,GAOvD,QAASsjF,GAA4B95D,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,EAAOuoB,GAC/E,GAAInT,GAAQF,EAAO5V,KAAKG,KAAMi/B,EAAUs3D,EAAU7H,EAAWl6E,EAAQjU,IAAUP,IAE/E,OADA2V,GAAM+0E,UAAY5hE,EACXnT,EAcX,MAvBAd,IAAUkkF,EAA6BtjF,GAWvC/V,OAAOuC,eAAe82F,EAA4Bp5F,UAAW,SAMzDuC,IAAK,WACD,MAAOlC,MAAK0qF,WAEhBroF,YAAY,EACZC,cAAc,IAEXy2F,GACT8B,IAEEK,GAAoC,WACpC,QAASA,MAiBT,MAfAx7F,QAAOuC,eAAei5F,EAAmBv7F,UAAW,UAMhDuC,IAAK,WACD,MAAOlC,MAAKm7F,UAEhB/4F,IAAK,SAAU7B,GACXP,KAAKm7F,SAAW56F,GAEpB8B,YAAY,EACZC,cAAc,IAEX44F,KAGPE,GAA0C,SAAU3lF,GAOpD,QAAS2lF,GAAyB5mF,EAAQmsB,GACtC,GAAIhrB,GAAQF,EAAO5V,KAAKG,OAASA,IAGjC,OAFA2V,GAAMnB,OAASA,EACfmB,EAAM8mD,QAAU97B,EACThrB,EA4BX,MAtCAd,IAAUumF,EAA0B3lF,GAYpC/V,OAAOuC,eAAem5F,EAAyBz7F,UAAW,UAMtDuC,IAAK,WACD,MAAOlC,MAAKw1F,YAEhBpzF,IAAK,SAAU7B,GACXP,KAAKw1F,WAAaj1F,GAEtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAem5F,EAAyBz7F,UAAW,QAKtDuC,IAAK,WACD,MAAOlC,MAAKy8D,SAEhBp6D,YAAY,EACZC,cAAc,IAEX84F,GACTF,IAKEG,GAAwC,SAAU5lF,GAOlD,QAAS4lF,GAAuBp4F,GAC5B,GAAI0S,GAAQF,EAAO5V,KAAKG,OAASA,IAEjC,OADA2V,GAAM0pD,aAAep8D,EACd0S,EA4BX,MArCAd,IAAUwmF,EAAwB5lF,GAWlC/V,OAAOuC,eAAeo5F,EAAuB17F,UAAW,UAMpDuC,IAAK,WACD,MAAOlC,MAAKq/D,cAEhBh9D,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeo5F,EAAuB17F,UAAW,YAKpDuC,IAAK,WACD,MAAOlC,MAAKs7F,aAEhBl5F,IAAK,SAAU7B,GACXP,KAAKs7F,YAAc/6F,GAEvB8B,YAAY,EACZC,cAAc,IAEX+4F,GACTH,IAKE7B,GAAiD,SAAU5jF,GAO3D,QAAS4jF,GAAgC7kF,EAAQmsB,EAAM46D,GACnD,GAAI5lF,GAAQF,EAAO5V,KAAKG,KAAMwU,EAAQmsB,IAAS3gC,IAE/C,OADA2V,GAAM4lF,SAAWA,EACV5lF,EAcX,MAvBAd,IAAUwkF,EAAiC5jF,GAW3C/V,OAAOuC,eAAeo3F,EAAgC15F,UAAW,iBAM7DuC,IAAK,WACD,MAAOlC,MAAKu7F,UAEhBl5F,YAAY,EACZC,cAAc,IAEX+2F,GACT+B,IAKE7B,GAA+C,SAAU9jF,GAOzD,QAAS8jF,GAA8Bt2F,GACnC,MAAOwS,GAAO5V,KAAKG,KAAMiD,IAAWjD,KAExC,MATA6U,IAAU0kF,EAA+B9jF,GASlC8jF,GACT8B,IAEE3B,GAAiC,WAMjC,QAASA,KACL15F,KAAKw7F,eAAiB,GAAIn8E,GAAW,EAAG,EAAG,EAAG,GA8BlD,MA5BA3f,QAAOuC,eAAey3F,EAAgB/5F,UAAW,YAK7CuC,IAAK,WACD,MAAOlC,MAAKy7F,aAEhBr5F,IAAK,SAAU7B,GACXP,KAAKy7F,YAAcl7F,GAEvB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAey3F,EAAgB/5F,UAAW,UAK7CuC,IAAK,WACD,MAAOlC,MAAKw7F,gBAEhBp5F,IAAK,SAAU7B,GACXP,KAAKw7F,eAAiBj7F,GAE1B8B,YAAY,EACZC,cAAc,IAEXo3F,KC5xDP7kF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAenFqmF,GAA+B,SAAUjmF,GAOzC,QAASimF,GAAc3nF,GACnB,GAAI4B,GAAQF,EAAO5V,KAAKG,KAAM+T,IAAY/T,IAoB1C,OAbA2V,GAAMgmF,aAAe,EAMrBhmF,EAAMimF,YAAc,GAAIv8E,GAMxB1J,EAAMkmF,cAAgB,EACflmF,EA+MX,MA1OAd,IAAU6mF,EAAejmF,GA6BzB/V,OAAOuC,eAAey5F,EAAc/7F,UAAW,WAM3CuC,IAAK,WACD,MAAOlC,MAAKuT,UAEhBlR,YAAY,EACZC,cAAc,IAOlBo5F,EAAc/7F,UAAUguE,eAAiB,SAAUD,GAC/C,GAAI9sC,GAAc8sC,EAAM/sC,KACpB0vC,EAAgB3C,EAAMl5D,OACtBsnF,EAAoB97F,KAAK+T,QAAQgoF,WACrCD,GAAkBppF,EAAI,EACtBopF,EAAkBnpF,EAAI,CAEtB,IAAIyL,GAAWpe,KAAK47F,YAAYlpF,IAAM1S,KAAK47F,YAAYjpF,GAAK3S,KAAK47F,YAAYjpF,IAAM3S,KAAK47F,YAAYtyF,OAAStJ,KAAK47F,YAAYtyF,QAAUtJ,KAAK47F,YAAYryF,QAAsC,IAA5BvJ,KAAK47F,YAAYryF,MAE/KvJ,sBACD87F,EAAoB97F,KAAK47F,YAE7B,IAAI34F,GAAS,KACTqtE,EAAa,GAAI0rB,GAGrB,KAFA1rB,EAAW3vC,KAAOC,IAEL,CAET,GAAIkZ,GAAU95C,KAAK41F,sBAAsBh1D,EAAayvC,EACtDA,GAAgBv2B,EAAQu2B,aACxB,IAAI4rB,GAAU,IAOd,IANKniD,EAAQ48C,SACTpmB,EAAatwE,KAAKywE,aAAa7vC,EAAayvC,EAAeyrB,EAAmBpuB,GAE9EuuB,EAAUj8F,KAAKw5F,mBAAmBlpB,GAClCx2B,EAAQ48C,OAAsB,OAAZuF,GAA4BA,EAAQvF,QAErDpmB,EAAWrsD,KAAQ61B,EAAQ48C,OAU3B,CACDzzF,EAASjD,KAAK0wE,gBAAgBJ,EAC9B,OAPA,GAJAD,EAAgBrwE,KAAK6tE,kBAAkBH,GACvCouB,EAAoB97F,KAAKk8F,mBAAmBJ,EAAmBxrB,GAC/D1vC,EAA2B,OAAZq7D,GAAyC,OAArBA,EAAQ5D,SACvCr4F,KAAK+0D,YAAYn0B,GAAeq7D,EAAQ5D,SACxCr4F,KAAK83F,UAAW,CAChB70F,EAASjD,KAAK0wE,gBAAgBJ,EAC9B,QAQZ,MAAOrtE,IAMXy4F,EAAc/7F,UAAUi2F,sBAAwB,SAAUh1D,EAAayvC,GACnE,GAAIqmB,IAAS,CACb,IAAI12F,KAAK+T,QAAQqlF,qBAAsB,CACnC,GAAIh1B,GAAO,GAAIg3B,IAAyB/qB,EAAezvC,EACvD5gC,MAAK+T,QAAQg8D,kBAAkB3L,GAC/BsyB,EAAStyB,EAAKsyB,OACdrmB,EAAgBjM,EAAK5vD,OAEzB,OAAS67D,cAAeA,EAAeqmB,OAAQA,IAMnDgF,EAAc/7F,UAAU65F,mBAAqB,SAAUlpB,GACnD,GAAIlM,GAAO,IACX,IAAIpkE,KAAK+T,QAAQylF,mBAAoB,CACjC,GAAIj3C,GAAMviD,KAAK0wE,gBAAgBJ,EAC/BlM,GAAO,GAAIi3B,IAAuB94C,GAClCviD,KAAK+T,QAAQi8D,gBAAgB5L,GAEjC,MAAOA,IAMXs3B,EAAc/7F,UAAU+wE,gBAAkB,SAAUJ,GAEhD,MADa,IAAI9B,IAAgB8B,EAAW3vC,KAAM2vC,EAAW97D,SAOjEknF,EAAc/7F,UAAUu8F,mBAAqB,SAAUJ,EAAmBxrB,GACtE,GAAIkrB,GAAiBlrB,EAAW97D,MAGhC,OAFAsnF,GAAkBnpF,EAAKmpF,EAAkBnpF,EAAI6oF,EAAejyF,OAC5DuyF,EAAkBvyF,OAAUuyF,EAAkBvyF,OAASiyF,EAAejyF,OAC/DuyF,GAMXJ,EAAc/7F,UAAU8wE,aAAe,SAAU7vC,EAAau7D,EAAWC,EAAS1uB,GAC9E,GAAIzqE,GAAS,GAAI+4F,GACjBG,GAAYn8F,KAAKq8F,0BAA0Bz7D,EAAau7D,EAAWzuB,EACnE,IAAI4uB,GAAYt8F,KAAKu8F,aAAaJ,EAAWC,GAGzCI,GAAgB,CACpB,MAHiB9uB,EAAMxoD,OAAOgpD,QAAUjmB,qBAAmB+oB,aAClDsrB,GAAc17D,IAAgB8sC,EAAM/sC,MAEhC,CACT,GAAIkvB,GAAgB7vD,KAAKy8F,cAAcN,EAAWC,EAClDp8F,MAAK08F,UAAU97D,EAAY3B,SAAUk9D,EAAWtsC,GAChD5sD,EAAOuR,OAASxU,KAAK28F,oBAAoBR,EAAWC,GACpDI,EAAkBL,UAAsBC,EAAe,OAI3D,MAFAn5F,GAAOghB,IAAOu4E,GAAkB9uB,EAAMxoD,OAAON,SAAWojC,gBAAckuC,QACtEjzF,EAAO09B,KAAOC,EACP39B,GAMXy4F,EAAc/7F,UAAU88F,cAAgB,SAAUpsB,EAAeyrB,GAC7D,GAAI74F,GAASotE,CAGb,OAFAptE,GAAO0P,EAAK1P,EAAO0P,EAAImpF,EAAkBnpF,EACzC1P,EAAOsG,OAAUtG,EAAOsG,OAASuyF,EAAkBnpF,EAC5C1P,GAMXy4F,EAAc/7F,UAAU+8F,UAAY,SAAUx/E,EAAGmzD,EAAexgB,GAC5D,GAAI1wB,GAASjiB,EAAEza,MACf,KACIya,EAAEg4C,QAAQmb,GACVrwE,KAAK+T,QAAQ6oF,mBAAmB1/E,EAAG,GAAIiC,GAAO0wC,EAAcn9C,EAAGm9C,EAAcl9C,YAG7EuK,EAAEoiB,QAAQH,KAOlBu8D,EAAc/7F,UAAU08F,0BAA4B,SAAUz7D,EAAau7D,EAAWzuB,GAClF,GAAI52C,GAAW8J,EAAY3B,SAASja,UAMpC,OALAm3E,GAAU7yF,MAAS6yF,EAAU7yF,MAAQ,EAAK6yF,EAAU7yF,MAASwtB,EAASxtB,MAAQ6yF,EAAUzpF,EACxFypF,EAAU5yF,OAAU4yF,EAAU5yF,OAAS,EAAK4yF,EAAU5yF,OAAUutB,EAASvtB,OAAS4yF,EAAUxpF,EACxF3S,KAAK83F,YACLqE,EAAU5yF,OAAU4yF,EAAU5yF,OAASvJ,KAAK68F,mBAEzCV,GAMXT,EAAc/7F,UAAUg9F,oBAAsB,SAAUtsB,EAAeyrB,GACnE,GAAI74F,GAASotE,CAEb,OADAptE,GAAOsG,OAASsJ,KAAKJ,IAAIxP,EAAOsG,OAAQuyF,EAAkBvyF,QACnDtG,GAMXy4F,EAAc/7F,UAAU48F,aAAe,SAAUlsB,EAAeyrB,GAE5D,MADYA,GAAkBvyF,QAAU8mE,EAAc9mE,QAQ1DmyF,EAAclsF,MAAQ,EAMtBksF,EAAcoB,UAAY,EAM1BpB,EAAcx9C,MAAO,EAMrBw9C,EAAcqB,YAAc,EACrBrB,GACTnuB,IAMEyuB,GAAmC,WACnC,QAASA,MAET,MAAOA,MC3QPnnF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QASnF2nF,GAAiC,SAAUvnF,GAE3C,QAASunF,KACL,MAAkB,QAAXvnF,GAAmBA,EAAOwnF,MAAMj9F,KAAMu1E,YAAcv1E,KAiD/D,MAnDA6U,IAAUmoF,EAAiBvnF,GAS3BunF,EAAgBr9F,UAAUo8F,UAAY,WAElC,MADW/7F,MAAKk9F,qBAOpBF,EAAgBr9F,UAAUi9F,mBAAqB,SAAU39D,EAAUc,GAC/D,GAAiB,MAAZd,EACD,KAAM,IAAI5oB,OAAM,kCAEpBrW,MAAKm9F,gBAAgBl+D,EAAUc,EAASrtB,EAAGqtB,EAASptB,IAMxDqqF,EAAgBr9F,UAAUw9F,gBAAkB,SAAUl+D,EAAUvsB,EAAGC,GAC/D,GAAIusB,GAAmB,KAANxsB,GAAmB,KAANC,EAC1BwsB,EAAS,IAETD,KAEAC,EAASF,EAASx8B,OAClBw8B,EAASG,mBAAmB1sB,EAAGC,IAEnC3S,KAAKq/B,aAAaJ,GACdC,GAEAD,EAASK,QAAQH,IAOzB69D,EAAgBr9F,UAAUilB,OAAS,SAAU8oD,GAGzC,MAFe,IAAIguB,IAAc17F,MACX4kB,OAAO8oD,IAG1BsvB,GACTptB,ICrEE/6D,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAUnF+nF,GAAgC,SAAU3nF,GAM1C,QAAS2nF,GAAephE,GACpB,GAAIrmB,GAAQF,EAAO5V,KAAKG,OAASA,IAIjC,YAHmB,KAARg8B,IACPrmB,EAAM0nF,KAAOrhE,GAEVrmB,EAiBX,MA3BAd,IAAUuoF,EAAgB3nF,GAY1B/V,OAAOuC,eAAem7F,EAAez9F,UAAW,OAM5CuC,IAAK,WACD,MAAOlC,MAAKq9F,MAEhBj7F,IAAK,SAAU7B,GACXP,KAAKq9F,KAAO98F,GAEhB8B,YAAY,EACZC,cAAc,IAEX86F,GACTJ,IC9CEnoF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAYnFioF,GAAgC,SAAU7nF,GAM1C,QAAS6nF,GAAeh+E,EAAMC,GAC1B,GAAI5J,GAAQF,EAAO5V,KAAKG,OAASA,IAgBjC,OAVA2V,GAAMwsE,OAAS,SACK,KAAT7iE,IAGFA,YAAgBqb,IACrBhlB,EAAQF,EAAO5V,KAAKG,KAAMsf,IAAStf,KAGnC2V,EAAMwsE,OAAS5iE,GAEZ5J,EAyBX,MA/CAd,IAAUyoF,EAAgB7nF,GAwB1B/V,OAAOuC,eAAeq7F,EAAe39F,UAAW,SAM5CuC,IAAK,WACD,MAAOlC,MAAKmiF,QAEhB//E,IAAK,SAAU7B,GACXP,KAAKmiF,OAAS5hF,GAElB8B,YAAY,EACZC,cAAc,IAOlBg7F,EAAe39F,UAAU49F,UAAY,WACjC,MAAwB,OAAfv9F,KAAKmiF,QAAgC,MAAZniF,KAAKg8B,IAAgB,GAAIrB,IAAO,GAAIle,GAAS,EAAG,EAAG,IAAMzc,KAAKg8B,KAE7FshE,GACTF,ICpEEvoF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAiBnFmoF,GAAyB,SAAU/nF,GAOnC,QAAS+nF,GAAQl+E,EAAMC,EAAMC,EAAMC,GAC/B,GAAI9J,GAAQF,EAAO5V,KAAKG,OAASA,IAyDjC,OAnDA2V,GAAM8nF,QAAU,KAKhB9nF,EAAM+nF,WAAa,KAKnB/nF,EAAMgoF,cAAe,EAKrBhoF,EAAMioF,UAAYzhF,cAAYy0C,UAK9Bj7C,EAAMkoF,YAAa,EAKnBloF,EAAMmoF,OAAQ,MACM,KAATx+E,IAGFA,YAAgBqb,KACrBhlB,EAAQF,EAAO5V,KAAKG,KAAMsf,IAAStf,KAC/Buf,YAAgBW,IAChBvK,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,IAASvf,MACnCm6D,SAAW36C,EAEH,OAATD,OAAiC,KAATA,GAAiC,OAATC,OAAiC,KAATA,GAC7E7J,EAAMooF,QAAQx+E,EAAMC,IAGnBF,YAAgBY,IACrBvK,EAAQF,EAAO5V,KAAKG,KAAMsf,IAAStf,KACtB,OAATuf,OAAiC,KAATA,IACxB5J,EAAMwkD,SAAW56C,GAER,OAATC,OAAiC,KAATA,GAAiC,OAATC,OAAiC,KAATA,GACxE9J,EAAMooF,QAAQv+E,EAAMC,IAIxB9J,EAAMooF,QAAQz+E,EAAMC,IAEjB5J,EA4ZX,MA5dAd,IAAU2oF,EAAS/nF,GAkEnB/V,OAAOuC,eAAeu7F,EAAQ79F,UAAW,YAMrCuC,IAAK,WACD,MAAOlC,MAAK49F,WAEhBx7F,IAAK,SAAU7B,GACXP,KAAK49F,UAAYr9F,GAErB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,cAKrCuC,IAAK,WACD,MAAOlC,MAAK+wD,QAEhB1uD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,aAKrCuC,IAAK,WACD,MAAOlC,MAAKwjD,OAEhBnhD,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,cAKrCuC,IAAK,WACD,GAAIiG,GAAQ,CAIZ,OAHqB,OAAhBnI,KAAKy9F,UACNt1F,EAAQnI,KAAKy9F,QAAQz8F,QAElBmH,GAEX9F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,aAKrCuC,IAAK,WACD,MAAOlC,MAAKg+F,gBAEhB37F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,UAKrCuC,IAAK,WAID,MAHqB,OAAhBlC,KAAKy9F,UACNz9F,KAAKy9F,YAEFz9F,KAAKy9F,SAEhBp7F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAeu7F,EAAQ79F,UAAW,SAKrCuC,IAAK,WAID,MAHwB,OAAnBlC,KAAK09F,aACN19F,KAAK09F,eAEF19F,KAAK09F,YAEhBr7F,YAAY,EACZC,cAAc,IAElBk7F,EAAQ79F,UAAUygC,KAAO,SAAU9gB,EAAMC,EAAMC,EAAMC,GACjD,GAAIF,YAAgBJ,QAAgC,KAAfI,EAAKjW,WAAyC,KAATkW,EACtE,MAAOxf,MAAKg/B,WAAW1f,EAAMC,EAAK7M,EAAG6M,EAAK5M,EAEzC,IAAI4M,YAAgBF,QAAoC,KAAfE,EAAKjW,WAAyC,KAATkW,EAC/E,MAAOxf,MAAKg/B,WAAW1f,EAAMC,EAAM,KAElC,IAAoB,gBAATA,IAAqC,gBAATC,QAAqC,KAATC,EACpE,MAAOzf,MAAKg/B,WAAW1f,EAAMC,EAAMC,EAAM,KAExC,IAAID,YAAgBJ,IAAUK,YAAgBwuD,IAC/C,MAAOhuE,MAAKg/B,WAAW1f,EAAMC,EAAK7M,EAAG6M,EAAK5M,EAAG6M,EAE5C,IAAoB,gBAATD,KAAsBE,YAAgBuuD,KAA2B,MAARvuD,IAAiC,gBAATD,GAAmB,CAChH,GAAIy+E,GAAc3+E,EAAK2f,SAASja,WAAW1b,MAAQiW,EAC/CmtE,EAAa,GAAIrtE,GAAWE,EAAMC,EAAMy+E,EAAY,EACxD,OAAOj+F,MAAKg/B,WAAW1f,EAAMotE,EAAYjtE,GAExC,MACMzf,MAAKg/B,WAAW1f,EAAMC,EAAMC,IAM3Cg+E,EAAQ79F,UAAUu+F,OAAS,SAAU5+E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,GAC/D,GAAIxF,YAAgBD,GAChBrf,KAAKk+F,OAAO5+E,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,OAAQgW,EAAMC,OAI3D,KAAK,GADDuxC,GAAS/wD,KAAKm+F,mBAAmB7+E,EAAMC,EAAOA,EAAOC,EAAQD,EAAOE,EAAOoF,EAAMC,GAC5E5hB,EAAI,EAAGA,EAAI6tD,EAAO/vD,OAAQkC,GAAQ,EAAG,CAE1C,GAAIw6B,IAASqzB,EAAO7tD,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAAI6tD,EAAO7tD,EAAI,GAC7HlD,MAAK2kF,UAAUjnD,EAAOwqB,gBAAcgJ,WAKhDssC,EAAQ79F,UAAUy+F,UAAY,SAAU9+E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,EAAMC,EAAMkqC,GAC9E,GAAI3vC,YAAgBH,IAAUI,YAAgBJ,IAAUK,YAAgBL,IAAUM,YAAgBN,GAC9Fnf,KAAKo+F,UAAU9+E,EAAK5M,EAAG4M,EAAK3M,EAAG4M,EAAK7M,EAAG6M,EAAK5M,EAAG6M,EAAK9M,EAAG8M,EAAK7M,EAAG8M,EAAK/M,EAAG+M,EAAK9M,OAE3E,CACD,GAAIo+C,KACJA,GAAO7vD,KAAKoe,GACZyxC,EAAO7vD,KAAKqe,GACZwxC,EAAO7vD,KAAKse,GACZuxC,EAAO7vD,KAAKue,GACZsxC,EAAO7vD,KAAK2jB,GACZksC,EAAO7vD,KAAK4jB,GACZisC,EAAO7vD,KAAK6jB,GACZgsC,EAAO7vD,KAAK+tD,GACZjvD,KAAK2kF,UAAU5zB,EAAQ7I,gBAAcgJ,WAG7CssC,EAAQ79F,UAAU0+F,WAAa,SAAU/+E,EAAMC,EAAMC,EAAMC,GACnDH,YAAgBD,GAChBrf,KAAKq+F,WAAW/+E,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,SAGjDvJ,KAAKwwD,cACLxwD,KAAKk+F,OAAO5+E,EAAMC,EAAMC,EAAMC,EAAM,EAAG,KACvCzf,KAAKs+F,gBAGbd,EAAQ79F,UAAU4+F,QAAU,SAAUj/E,EAAMC,EAAMC,EAAMC,GACpD,GAAIH,YAAgBH,IAAUI,YAAgBJ,GAC1Cnf,KAAKu+F,QAAQj/E,EAAK5M,EAAG4M,EAAK3M,EAAG4M,EAAK7M,EAAG6M,EAAK5M,OAEzC,CACD,GAAIo+C,KACJA,GAAO7vD,KAAKoe,GACZyxC,EAAO7vD,KAAKqe,GACZwxC,EAAO7vD,KAAKse,GACZuxC,EAAO7vD,KAAKue,GACZzf,KAAK2kF,UAAU5zB,EAAQ7I,gBAAcqJ,QAG7CisC,EAAQ79F,UAAUo+F,QAAU,SAAUz+E,EAAMC,GACxC,GAAID,YAAgBk+E,GAChBx9F,KAAK+9F,QAAQz+E,EAAK26C,WAAY36C,EAAK46C,eAElC,CACD,GAAa,MAAR56C,EACD,KAAM,IAAIjJ,OAAM,mCAEpB,IAAa,MAARkJ,EACD,KAAM,IAAIlJ,OAAM,kCAGpB,IADYiJ,EAAKte,SACFue,EAAKve,OAChB,KAAM,IAAIqV,OAAM,oDAI5BmnF,EAAQ79F,UAAU6+F,OAAS,SAAUl/E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,GAC3DxF,YAAgBD,GAChBrf,KAAKw+F,OAAOl/E,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,OAAQgW,EAAMC,IAG3Dxf,KAAKwwD,cACLxwD,KAAKk+F,OAAO5+E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,GAC1C9kB,KAAKy+F,SAAS,GAAIt/E,GAAQG,EAAQE,EAAO,EAAMD,EAAQE,EAAO,GAAMyoC,gBAAcqJ,MAClFvxD,KAAKs+F,gBAObd,EAAQ79F,UAAU++F,WAAa,SAAU3tC,GACxBA,EAAO/vD,MAApB,IACIqJ,KACJrK,MAAKwwD,aACL,KAAK,GAAIttD,GAAI,EAAGA,EAAI6tD,EAAO/vD,OAAQkC,IAC/BmH,EAAEnJ,KAAK6vD,EAAO7tD,GAAGwP,GACjBrI,EAAEnJ,KAAK6vD,EAAO7tD,GAAGyP,EAErB3S,MAAK2kF,UAAUt6E,EAAG69C,gBAAcqJ,MAChCvxD,KAAKs+F,eAETd,EAAQ79F,UAAUg/F,aAAe,SAAUr/E,EAAM3M,EAAGrJ,EAAOC,GACvD,GAAI+V,YAAgBD,GAChBrf,KAAK2+F,aAAar/E,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,YAElD,CACD,GAAIwnD,KACJ/wD,MAAKwwD,cACLO,EAAO7vD,KAAKoe,GACZyxC,EAAO7vD,KAAKyR,GACZo+C,EAAO7vD,KAAMoe,EAAOhW,GACpBynD,EAAO7vD,KAAKyR,GACZo+C,EAAO7vD,KAAMoe,EAAOhW,GACpBynD,EAAO7vD,KAAMyR,EAAIpJ,GACjBwnD,EAAO7vD,KAAKoe,GACZyxC,EAAO7vD,KAAMyR,EAAIpJ,GACjBvJ,KAAK2kF,UAAU5zB,EAAQ7I,gBAAcqJ,MACrCvxD,KAAKs+F,gBAObd,EAAQ79F,UAAU6wD,YAAc,WAC5BxwD,KAAK29F,cAAe,GAMxBH,EAAQ79F,UAAUi/F,gBAAkB,WAEhC,IAAK,GADDC,GAAY7+F,KAAKi6D,WAAW,GACvB/2D,EAAI,EAAGA,EAAIlD,KAAK09F,WAAW18F,OAAQkC,IAAK,CAC7C,GAAI83D,GAAOh7D,KAAKwjD,MAAMtgD,GAClBgxF,GAAO,CACC,KAANhxF,GAAa83D,IAAO9S,gBAAcmJ,OACpCrxD,KAAKs+F,YAAap7F,EAAI,GACtBgxF,GAAO,GAEAhxF,IAAOlD,KAAK09F,WAAW18F,OAAS,IAASkzF,GAAQl0F,KAAK89F,OACxDe,EAAUnsF,IAAM1S,KAAKi6D,WAAW/2D,GAAGyP,GACpC3S,KAAKs+F,YAAYp7F,KASjCs6F,EAAQ79F,UAAUq+F,aAAe,WAC7B,GAAIxsC,GAAY,GAAIryC,GAAO,EAAG,GAC1BhX,EAAQnI,KAAK8+F,UAKjB,OAJM32F,GAAQ,GAAuB,MAAhBnI,KAAKy9F,UACtBjsC,EAAU9+C,EAAI1S,KAAKy9F,QAASt1F,EAAQ,GAAIuK,EACxC8+C,EAAU7+C,EAAI3S,KAAKy9F,QAASt1F,EAAQ,GAAIwK,GAErC6+C,GAMXgsC,EAAQ79F,UAAUw+F,mBAAqB,SAAU1sC,EAAIC,EAAI/zB,EAAIC,EAAI+zB,EAAIC,GACjE,GAAKH,EAAK9zB,EAAK,CACPk0B,MAAM,EACVA,GAAMJ,EACNA,EAAK9zB,EACLA,EAAKk0B,EAET,GAAKj0B,EAAK8zB,EAAK,CACX,GAAIG,OAAM,EACVA,GAAMH,EACNA,EAAK9zB,EACLA,EAAKi0B,EAET,GAAIC,GACAC,CACCl/C,MAAK8rC,IAAIiT,IAAO,IACjBE,EAAYF,EACZG,EAAe,GAIfD,EAAaF,GADbG,EAAgBl/C,KAAKwiC,KAAMxiC,KAAK8rC,IAAIiT,GAAM,IAU9C,KAAK,GAPDI,IAASP,EAAK9zB,GAAM,EACpBs0B,GAASP,EAAK9zB,GAAM,EACpBs0B,GAAOv0B,EAAK8zB,GAAM,EAClBU,GAAOv0B,EAAK8zB,GAAM,EAClBU,EAAYN,GAAaj/C,KAAKypB,GAAK,KACnC+1B,EAASx/C,KAAK8rC,IAAI,EAAM,GAAO,EAAM9rC,KAAKmqB,IAAIo1B,IAAYv/C,KAAKoqB,IAAIm1B,IACnEE,KACKpvD,EAAI,EAAIA,EAAI6uD,EAAe7uD,IAAK,CACrC,GAAIqvD,IAAYZ,EAAMzuD,EAAI4uD,IAAej/C,KAAKypB,GAAK,KAC/Ck2B,GAAYb,GAAOzuD,EAAI,GAAK4uD,IAAej/C,KAAKypB,GAAK,KACrDm2B,EAAQ5/C,KAAKmqB,IAAIu1B,GACjBG,EAAQ7/C,KAAKmqB,IAAIw1B,GACjBG,EAAQ9/C,KAAKoqB,IAAIs1B,GACjBK,EAAQ//C,KAAKoqB,IAAIu1B,EAChBV,GAAY,EAEbQ,EAAUpxD,KAAM8wD,EAAQE,EAAKO,EAASR,EAAQE,EAAKQ,EAASX,EAAQE,GAAMO,EAAQJ,EAAQM,GAAWV,EAAQE,GAAMQ,EAAQN,EAAQI,GAAWT,EAAQE,GAAMQ,EAAQL,EAAQO,GAAWX,EAAQE,GAAMS,EAAQP,EAAQK,GAAWV,EAAQE,EAAKQ,EAAST,EAAQE,EAAKS,GAInQN,EAAUpxD,KAAM8wD,EAAQE,EAAKO,EAASR,EAAQE,EAAKQ,EAASX,EAAQE,GAAMO,EAAQJ,EAAQM,GAAWV,EAAQE,GAAMQ,EAAQN,EAAQI,GAAWT,EAAQE,GAAMQ,EAAQL,EAAQO,GAAWX,EAAQE,GAAMS,EAAQP,EAAQK,GAAWV,EAAQE,EAAKQ,EAAST,EAAQE,EAAKS,GAG3Q,MAAON,IAMXkrC,EAAQ79F,UAAUu9F,kBAAoB,WAClC,GAAInsC,GAAS/wD,KAAKi6D,WACdzlD,EAAS,GAAI6K,GAAW,EAAG,EAAG,EAAG,EACrC,IAAK0xC,EAAO/vD,OAAS,EAAI,CAKrB,IAAK,GAJD+9F,GAAOhuC,EAAO,GAAGr+C,EACjBssF,EAAOjuC,EAAO,GAAGr+C,EACjBusF,EAAOluC,EAAO,GAAGp+C,EACjBusF,EAAOnuC,EAAO,GAAGp+C,EACZzP,EAAI,EAAGA,EAAI6tD,EAAO/vD,OAAQkC,IAAK,CACpC,GAAIw6B,GAAQqzB,EAAO7tD,EACnB67F,GAAOlsF,KAAKJ,IAAIirB,EAAMhrB,EAAGqsF,GACzBC,EAAOnsF,KAAKoV,IAAIyV,EAAMhrB,EAAGssF,GACzBC,EAAOpsF,KAAKJ,IAAIirB,EAAM/qB,EAAGssF,GACzBC,EAAOrsF,KAAKoV,IAAIyV,EAAM/qB,EAAGusF,GAE7B1qF,EAAS,GAAI6K,GAAW0/E,EAAME,EAAOD,EAAOD,EAAQG,EAAOD,GAE/D,MAAOzqF,IAOXgpF,EAAQ79F,UAAU0/B,aAAe,SAAUJ,GACvC,GAAiB,MAAZA,EACD,KAAM,IAAI5oB,OAAM,kCAEpB4oB,GAAS86B,SAAS/5D,KAAKu9F,YAAav9F,KAAKugB,MAAOvgB,OAEpDw9F,EAAQ79F,UAAUglF,UAAY,SAAU5zB,EAAQI,EAAWqmC,EAAYC,GACnE,OAA0B,KAAfD,OAAkD,KAAbC,EAC5Cz3F,KAAK2kF,UAAU5zB,EAAQI,EAAW,EAAGJ,EAAO/vD,YAG5C,KAAK,GAAIkC,GAAIs0F,EAAYt0F,EAAIu0F,EAAUv0F,IAAK,CACxC,GAAIw6B,GAAQ,GAAIve,GAAO4xC,EAAO7tD,GAAI6tD,EAAQ7tD,EAAI,GACzCA,KAAMs0F,EACDx3F,KAAK8+F,YAAc,GAAM9+F,KAAK29F,cAChC39F,KAAKy+F,SAAS/gE,EAAOwqB,gBAAcmJ,OACnCrxD,KAAK29F,cAAe,GAEbjgE,EAAMhrB,IAAM1S,KAAKwxD,UAAU9+C,GAAOgrB,EAAM/qB,IAAM3S,KAAKwxD,UAAU7+C,GAAO3S,KAAK69F,WAG1EngE,EAAMhrB,IAAM1S,KAAKwxD,UAAU9+C,GAAOgrB,EAAM/qB,IAAM3S,KAAKwxD,UAAU7+C,GACnE3S,KAAKy+F,SAAS/gE,EAAOwqB,gBAAcgJ,SAHnClxD,KAAKy+F,SAAS/gE,EAAOwqB,gBAAcqJ,MAOvCvxD,KAAKy+F,SAAS/gE,EAAOyzB,GAEzBjuD,MAUZs6F,EAAQ79F,UAAU8+F,SAAW,SAAU/gE,EAAOyzB,GAC1CnxD,KAAK+wD,OAAO7vD,KAAKw8B,GACjB19B,KAAKwjD,MAAMtiD,SAEfs8F,EAAQ79F,UAAU2+F,YAAc,SAAU9uF,GACtC,OAAqB,KAAVA,EACFxP,KAAK8+F,WAAa,GACnB9+F,KAAKs+F,YAAYt+F,KAAK8+F,WAAa,GAEvC9+F,KAAKwwD,kBAEJ,CACD,GAAKhhD,EAAQ,EACT,KAAM,IAAI6G,OAAM,6BAEpB,IAAI2kD,GAAOh7D,KAAKwjD,MAAMh0C,EACtBwrD,IAAW9S,gBAAcwI,aACzB1wD,KAAKwjD,MAAMh0C,OAGZguF,GACTF,ICtfEzoF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAUnF8pF,GAAkC,SAAU1pF,GAG5C,QAAS0pF,GAAiB7/E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,GACpD,GAAInP,GAAQF,EAAO5V,KAAKG,OAASA,IAyBjC,OAnBA2V,GAAMnB,OAAS,GAAI6K,GAAW,EAAG,EAAG,EAAG,OACnB,KAATC,IAGFA,YAAgBqb,KACrBhlB,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,IAASvf,MAE/BwU,OADNgL,YAAgBH,GACDG,EAGA,GAAIH,GAAWG,EAAMC,EAAMoF,EAAMC,GAIpDnP,EAAMnB,OADD8K,YAAgBD,GACNC,EAGA,GAAID,GAAWC,EAAMC,EAAMC,EAAMC,IAE7C9J,EA+DX,MA3FAd,IAAUsqF,EAAkB1pF,GA8B5B/V,OAAOuC,eAAek9F,EAAiBx/F,UAAW,KAM9CuC,IAAK,WACD,MAAOlC,MAAKwU,OAAO9B,GAEvBtQ,IAAK,SAAU7B,GACXP,KAAKwU,OAAO9B,EAAInS,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek9F,EAAiBx/F,UAAW,KAK9CuC,IAAK,WACD,MAAOlC,MAAKwU,OAAO7B,GAEvBvQ,IAAK,SAAU7B,GACXP,KAAKwU,OAAO7B,EAAIpS,GAEpB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek9F,EAAiBx/F,UAAW,SAK9CuC,IAAK,WACD,MAAOlC,MAAKwU,OAAOlL,OAEvBlH,IAAK,SAAU7B,GACXP,KAAKwU,OAAOlL,MAAQ/I,GAExB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek9F,EAAiBx/F,UAAW,UAK9CuC,IAAK,WACD,MAAOlC,MAAKwU,OAAOjL,QAEvBnH,IAAK,SAAU7B,GACXP,KAAKwU,OAAOjL,OAAShJ,GAEzB8B,YAAY,EACZC,cAAc,IAGlB68F,EAAiBx/F,UAAUu9F,kBAAoB,WAC3C,MAAOl9F,MAAKwU,QAET2qF,GACT7B,IC9GEzoF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAUnF+pF,GAAgC,SAAU3pF,GAG1C,QAAS2pF,GAAe9/E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,EAAMC,EAAMkqC,GAC9D,GAAIt5C,GAAQF,EAAO5V,KAAKG,OAASA,IAqCjC,OA/BA2V,GAAMk7C,WAAa,EAKnBl7C,EAAMm7C,WAAa,MACC,KAATxxC,IAGFA,YAAgBD,QAA8B,KAATE,OAAwC,KAATC,IACzE7J,EAAQF,EAAO5V,KAAKG,KAAMsf,IAAStf,MAC7B6wD,WAAatxC,EACnB5J,EAAMm7C,WAAatxC,GAEdF,YAAgBqb,IACjBnb,YAAgBH,KAChB1J,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,EAAMC,IAASxf,MACzC6wD,WAAapxC,EACnB9J,EAAMm7C,WAAajsC,KAGnBlP,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,IAAS9kB,MAC3D6wD,WAAa9rC,EACnBpP,EAAMm7C,WAAa7B,KAIvBt5C,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,EAAMC,EAAMC,IAASzf,MAC/C6wD,WAAahsC,EACnBlP,EAAMm7C,WAAahsC,IAEhBnP,EAEX,MA1CAd,IAAUuqF,EAAgB3pF,GA0CnB2pF,GACTD,IC7DEtqF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAcnFgqF,GAAwB,SAAU5pF,GAGlC,QAAS4pF,GAAO//E,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,EAAMC,GAChD,GAAIpP,GAAQ3V,IAwBZ,YAvBoB,KAATsf,EACP3J,EAAQF,EAAO5V,KAAKG,OAASA,KAExBsf,YAAgBD,GACrB1J,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,EAAMC,IAASxf,KAE1Csf,YAAgBqb,IACjBpb,YAAgBF,GAChB1J,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAM,KAAMC,EAAMC,EAAMC,IAASzf,SAEtC,KAAT8kB,OAAwC,KAATC,EAC3CpP,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAM,KAAM,EAAG,EAAGC,EAAMC,EAAMC,EAAMoF,IAAS7kB,SAElD,KAAT8kB,OAAwC,KAATC,IAC3CpP,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAM,KAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,EAAMC,IAAS/kB,UAG5D,KAATsf,OAAwC,KAATuF,OAAwC,KAATC,EAC1EnP,EAAQF,EAAO5V,KAAKG,KAAM,EAAG,EAAGsf,EAAMC,EAAMC,EAAMC,IAASzf,SAEtC,KAATsf,OAAwC,KAATuF,OAAwC,KAATC,IAC1EnP,EAAQF,EAAO5V,KAAKG,KAAMsf,EAAMC,EAAMC,EAAMC,EAAMoF,EAAMC,IAAS9kB,MAE9D2V,EAoCX,MA/DAd,IAAUwqF,EAAQ5pF,GA6BlB4pF,EAAO1/F,UAAUygC,KAAO,SAAUk/D,EAAO//E,EAAMC,EAAMC,GACjD,GAAIF,YAAgBJ,QAAgC,KAAfI,EAAKjW,WAAyC,KAATkW,EACtE,MAAOxf,MAAKg/B,WAAWsgE,EAAO//E,EAAK7M,EAAG6M,EAAK5M,EAE1C,IAAI4M,YAAgBF,QAAoC,KAAfE,EAAKjW,WAAyC,KAATkW,EAC/E,MAAOxf,MAAKg/B,WAAWsgE,EAAO//E,EAAM,KAEnC,IAAoB,gBAATA,IAAqC,gBAATC,QAAqC,KAATC,EACpE,MAAOzf,MAAKg/B,WAAWsgE,EAAO//E,EAAMC,EAAM,KAEzC,IAAID,YAAgBJ,IAAUK,YAAgBwuD,IAC/C,MAAOhuE,MAAKg/B,WAAWsgE,EAAO//E,EAAK7M,EAAG6M,EAAK5M,EAAG6M,EAE7C,IAAoB,gBAATD,KAAsBE,YAAgBuuD,KAA2B,MAARvuD,IAAiC,gBAATD,GAAmB,CAChH,GAAIy+E,GAAcqB,EAAMrgE,SAASja,WAAW1b,MAAQiW,EAChDmtE,EAAa,GAAIrtE,GAAWE,EAAMC,EAAMy+E,EAAY,EACxD,OAAOj+F,MAAKg/B,WAAWsgE,EAAO5S,EAAYjtE,GAG1C,MAAOzf,MAAKg/B,WAAWsgE,EAAO//E,EAAMC,IAS5C6/E,EAAO1/F,UAAU0/B,aAAe,SAAUJ,GACtC,GAAiB,MAAZA,EACD,KAAM,IAAI5oB,OAAM,mCAEpB4oB,GAASo7B,QAAQr6D,KAAKu9F,YAAav9F,KAAKwU,OAAQxU,KAAK6wD,WAAY7wD,KAAK8wD,aAEnEuuC,GACTD,ICtFEvqF,GAAwC,WACxC,GAAIC,GAAgBpV,OAAOqV,iBACpBC,uBAA2BC,QAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI9K,KAAK8K,GAAOA,EAAEC,eAAe/K,KAAI6K,EAAE7K,GAAK8K,EAAE9K,IACzE,OAAO,UAAU6K,EAAGC,GAEhB,QAASE,KAAOrV,KAAKsV,YAAcJ,EADnCJ,EAAcI,EAAGC,GAEjBD,EAAEvV,UAAkB,OAANwV,EAAazV,OAAO6V,OAAOJ,IAAME,EAAG1V,UAAYwV,EAAExV,UAAW,GAAI0V,QAanFkqF,GAAiC,SAAU9pF,GAE3C,QAAS8pF,GAAgBjkD,EAAc55C,EAAMonB,GACzC,GAAInT,GAAQF,EAAO5V,KAAKG,KAAM0B,IAAS1B,IAiBvC,OAZA2V,GAAM8lC,aAAc,EAKpB9lC,EAAMukC,WAAY,MACJjhC,KAAV6P,EACAnT,EAAM6pF,mBAAmBlkD,EAAcxyB,GAGvCnT,EAAM6pF,mBAAmBlkD,EAAcv6B,eAAaiI,SAEjDrT,EA2HX,MA9IAd,IAAU0qF,EAAiB9pF,GAqB3B8pF,EAAgB5/F,UAAUqqB,aAAe,SAAUrhB,GAG/C,OAFa,GAIjB42F,EAAgB5/F,UAAU4mB,aAAe,SAAU3C,EAAMsB,GACrD,GAAI5b,GAAQ,CAGRA,GAFW,OAAX4b,OAAqC,KAAXA,GAA0BA,EAAOyiC,gBAAkBnrC,mBAAiBkG,KAC5E1iB,KAAKy/F,oBAAoB77E,EAActa,EAAO4b,GAC5C5b,MAGZtJ,KAAKynD,aAAalhC,aAAa3C,EAE3C,IAAIliB,GAAO1B,KAAKmpB,QAAQoX,QAAQrb,EAGhC,OAFA5b,IAAUuf,EAAQ2B,mBAAqB9oB,EACvC4H,EAAQtJ,KAAKoqB,oBAAoBxG,EAAMsB,EAAQ5b,IAMnDi2F,EAAgB5/F,UAAUs6C,aAAe,SAAU1R,EAAUrjB,GACzD,GAAIw6E,GAAY1/F,KAAKynD,aAAaxN,aAAa1R,EAG/C,OADAm3D,IAAc,KADH1/F,KAAKmpB,QAAQoX,QAAQrb,IAKpCq6E,EAAgB5/F,UAAU6/F,mBAAqB,SAAUlkD,EAAcxyB,GACnE9oB,KAAKynD,aAAe,GAAIpM,IAAoBC,EAAct7C,KAAK0B,MAC/D1B,KAAK2/F,eAAe72E,GACpB9oB,KAAK+rE,uBAETwzB,EAAgB5/F,UAAUggG,eAAiB,SAAU72E,GACjD,GAAI82E,GAAS5/F,KAAKynD,aAAavL,WAAWnU,QACD,KAApCjf,EAAQ/H,eAAayI,aACtBo2E,GAAU7+E,eAAayI,WAEc,IAApCV,EAAQ/H,eAAawI,aACtBq2E,GAAU7+E,eAAawI,WAE3BvpB,KAAKkpB,SAAS02E,IAElBL,EAAgB5/F,UAAUosE,oBAAsB,WAC5C,GAAI8zB,GAAY,IACZxzE,IAAYyzE,cAEZD,EAAYxzE,GAAYu7C,MAAMlB,OAAO1mE,MAEzC,IAAImqB,GAAY,IAEhB,IAAkB,OAAd01E,OAAoC5mF,KAAd4mF,EAAyB,CAE/C11E,EAAY01E,EAAU51E,cACtB,IAAId,GAAU02E,EAAU12E,SACxBA,EAAUA,EAAQtmB,SACVnB,KAAO1B,KAAK0B,KACpB1B,KAAKmpB,QAAUA,EACfnpB,KAAKynD,aAAeo4C,EAAUp4C,iBAGb,OAAbo4C,IACI7/F,KAAKynD,uBAAwBpM,MAC7Br7C,KAAKynD,aAAas4C,QAAU//F,KAAKy7C,aAErCz7C,KAAKynD,aAAapO,kBAClBlvB,EAAYnqB,KAAKynD,aAAax9B,eAC9BjqB,KAAKmpB,QAAUnpB,KAAKynD,aAAat+B,QAGzCnpB,MAAKmpB,QAAQ62E,eAAgB,EAC7BhgG,KAAKkqB,aAAaC,IAMtBo1E,EAAgB5/F,UAAUm/C,WAAa,SAAU1oC,GAC7C,GAAIspB,GAAe1/B,KAAKynD,YACJ,OAAhB/nB,GACAA,EAAaof,WAAW1oC,IAGhC1W,OAAOuC,eAAes9F,EAAgB5/F,UAAW,WAK7CuC,IAAK,WACD,MAAOlC,MAAKk6C,WAEhB73C,YAAY,EACZC,cAAc,IAKlBi9F,EAAgB5/F,UAAU8/F,oBAAsB,SAAU77E,EAActa,EAAO4b,GAI3E5b,EAAQ,CACR,IAAI22F,GAAe,KAGfh9F,GAFY,GAAI6jD,KAEGQ,cAAc1jC,EAAM5jB,KAAOklB,EAAOyiC,gBAAkBnrC,mBAAiB65C,YAAqC4pC,GAAc,GAC3IC,EAAcj9F,EAAO+iB,OAEzB,IADAi6E,EAAeh9F,EAAOskD,OAClB24C,GAAgC,OAAjBD,EAEf,IAAK,GADDhkD,GAAYj8C,KAAKynD,aAAaxL,UACzB/4C,EAAI,EAAGmR,EAAM4rF,EAAaj/F,OAAQkC,EAAImR,EAAKnR,IAAK,CACrD,GAAI2zC,GAAaopD,EAAa/8F,GAC1BulC,EAAQwT,EAAUtG,SAASkB,EACjB,QAAVpO,OAAmC,KAAVA,IACzBn/B,GAASm/B,EAAMn/B,OAI3B,OAAS0c,QAASk6E,EAAa52F,MAAOA,IAEnCi2F,GACT12E,GCzJEs3E,GAAwC,WAExC,QAASA,GAAuB7gF,EAAMC,EAAMC,EAAMC,EAAMoF,GAChDvF,YAAgBD,QAA8B,KAATE,EACrCvf,KAAKogG,eAAe9gF,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,OAAQ,MAExD+V,YAAgBD,IAAcE,YAAgBqsC,SAA2B,KAATpsC,EACrExf,KAAKogG,eAAe9gF,EAAK5M,EAAG4M,EAAK3M,EAAG2M,EAAKhW,MAAOgW,EAAK/V,OAAQgW,GAExDD,YAAgBH,IAAUI,YAAgBH,QAAyB,KAATI,EAC/Dxf,KAAKogG,eAAe9gF,EAAK5M,EAAG4M,EAAK3M,EAAG4M,EAAKjW,MAAOiW,EAAKhW,OAAQ,MAExD+V,YAAgBH,IAAUI,YAAgBH,IAASI,YAAgBosC,SAA2B,KAATnsC,EAC1Fzf,KAAKogG,eAAe9gF,EAAK5M,EAAG4M,EAAK3M,EAAG4M,EAAKjW,MAAOiW,EAAKhW,OAAQiW,GAExDF,YAAgBF,QAAyB,KAATG,EACrCvf,KAAKogG,eAAe,EAAG,EAAG9gF,EAAKhW,MAAOgW,EAAK/V,OAAQ,MAE9B,gBAAT+V,IAAqC,gBAATC,QAAqC,KAATC,EACpExf,KAAKogG,eAAe,EAAG,EAAG9gF,EAAMC,EAAM,MAEjB,gBAATD,IAAqC,gBAATC,IAAqBC,YAAgBosC,SAA2B,KAATnsC,EAC/Fzf,KAAKogG,eAAe,EAAG,EAAG9gF,EAAMC,EAAMC,GAGtCxf,KAAKogG,eAAe9gF,EAAMC,EAAMC,EAAMC,EAAM,MA6lBpD,MArlBA/f,QAAOuC,eAAek+F,EAAuBxgG,UAAW,QAMpDuC,IAAK,WACD,MAAOlC,MAAKqgG,WAEhBj+F,IAAK,SAAU7B,GAEXP,KAAKqgG,UAAY9/F,EAEjBP,KAAKsgG,kBAGTj+F,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,aAKpDuC,IAAK,WACD,MAAOlC,MAAKugG,gBAEhBn+F,IAAK,SAAU7B,GAEXP,KAAKwgG,aAAajgG,IAGtB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,cAKpDuC,IAAK,WACD,MAAOlC,MAAKygG,cAEhBr+F,IAAK,SAAU7B,GAEXP,KAAKygG,aAAelgG,GAGxB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,cAKpDuC,IAAK,WACD,OAAQlC,KAAKygG,cAEjBr+F,IAAK,SAAU7B,GACXP,KAAKygG,cAAgBlgG,GAEzB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,YAKpDuC,IAAK,WACD,MAAOlC,MAAKo0F,iBAEhBhyF,IAAK,SAAU7B,GACPP,KAAKqI,OAAS0tB,eAAarT,OAC3B1iB,KAAKo0F,gBAAkB7zF,IAM/B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,KAKpDuC,IAAK,WAED,WAD6C,KAAzBlC,KAAKo0F,gBAAmCp0F,KAAKo0F,gBAAgB1hF,EAAI,GAGzFtQ,IAAK,SAAU7B,GACPP,KAAKqI,OAAS0tB,eAAarT,OAC3B1iB,KAAKo0F,gBAAgB1hF,EAAInS,IAMjC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,KAKpDuC,IAAK,WAED,WAD6C,KAAzBlC,KAAKo0F,gBAAmCp0F,KAAKo0F,gBAAgBzhF,EAAI,GAGzFvQ,IAAK,SAAU7B,GACPP,KAAKqI,OAAS0tB,eAAarT,OAC3B1iB,KAAKo0F,gBAAgBzhF,EAAIpS,IAMjC8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,QAKpDuC,IAAK,WACD,MAAOlC,MAAK2uD,SAASjtD,MAEzBU,IAAK,SAAU7B,GACPP,KAAKqI,OAAS0tB,eAAarT,MAC3B1iB,KAAK2uD,SAAS1qB,MAAM1jC,IAG5B8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,SAKpDuC,IAAK,WACD,MAAOlC,MAAK2uD,SAASrlD,OAEzBlH,IAAK,SAAU7B,GACX,GAAIP,KAAK2uD,SAASrlD,QAAU/I,GAASP,KAAKqI,OAAS0tB,eAAarT,KAAM,CAClE,GAAIhhB,GAAO1B,KAAK2uD,SAASjtD,IACzBA,GAAK4H,MAAQ/I,EACbP,KAAK2uD,SAAS1qB,MAAMviC,KAG5BW,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,UAKpDuC,IAAK,WACD,MAAOlC,MAAK2uD,SAASplD,QAEzBnH,IAAK,SAAU7B,GACX,GAAIP,KAAK2uD,SAASplD,SAAWhJ,GAASP,KAAKqI,OAAS0tB,eAAarT,KAAM,CACnE,GAAIhhB,GAAO1B,KAAK2uD,SAASjtD,IACzBA,GAAK6H,OAAShJ,EACdP,KAAK2uD,SAAS1qB,MAAMviC,KAG5BW,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,YAKpDuC,IAAK,WACD,MAAOlC,MAAK2uD,SAAS1vB,UAEzB58B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,YAKpDuC,IAAK,WAID,MAAOlC,MAAKg1E,aAEhB3yE,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,QAKpDuC,IAAK,WACD,MAAOlC,MAAK0gG,cAEhBt+F,IAAK,SAAU7B,GACXP,KAAK2gG,cAAcpgG,GACnBP,KAAK0gG,aAAengG,GAExB8B,YAAY,EACZC,cAAc,IAElB5C,OAAOuC,eAAek+F,EAAuBxgG,UAAW,UAKpDuC,IAAK,WACD,MAAO,IAAImd,GAAW,GAAIF,GAAOnf,KAAK0S,EAAG1S,KAAK2S,GAAI3S,KAAK0B,OAE3DU,IAAK,SAAU7B,GACPP,KAAKqI,OAAS0tB,eAAarT,OAC3B1iB,KAAK+/B,SAAW,GAAI5gB,GAAO5e,EAAMmS,EAAGnS,EAAMoS,GAC1C3S,KAAK0B,KAAO,GAAI0d,GAAM7e,EAAM+I,MAAO/I,EAAMgJ,UAGjDlH,YAAY,EACZC,cAAc,IAMlB69F,EAAuBxgG,UAAUygG,eAAiB,SAAU9gF,EAAMC,EAAMC,EAAMC,EAAMoF,GAChF7kB,KAAK0S,EAAI4M,EACTtf,KAAK2S,EAAI4M,EACTvf,KAAKg1E,YAAc,GAAI1rB,IAAY9pC,EAAMC,IAO7C0gF,EAAuBxgG,UAAUghG,cAAgB,SAAUt4F,GACvD,GAAIA,IAAS0tB,eAAarT,KAAM,CAC5B,OAAQra,GACJ,IAAK0tB,gBAAa3T,IACdpiB,KAAK4gG,KAAO/qE,eAAazT,GACzB,MACJ,KAAK2T,gBAAas+B,OACdr0D,KAAK4gG,KAAO/qE,eAAaw+B,MACzB,MACJ,KAAKt+B,gBAAaoiC,KACdn4D,KAAK4gG,KAAO/qE,eAAasiC,IACzB,MACJ,KAAKpiC,gBAAam+B,MACdl0D,KAAK4gG,KAAO/qE,eAAaq+B,MAGjCl0D,KAAKsgG,mBAObH,EAAuBxgG,UAAU2gG,eAAiB,WAC9CtgG,KAAKg0D,UAAYl+B,oBAAkBpT,MAMvCy9E,EAAuBxgG,UAAU6gG,aAAe,SAAUxsC,GACtD,GAAIh0D,KAAK4gG,OAAS/qE,eAAanT,KAC3B1iB,KAAKugG,eAAiBvsC,MAErB,CAED,GAAI6sC,IAAW,CACf,QAAQ7gG,KAAK4gG,MACT,IAAK/qE,gBAAasiC,KACd0oC,EAAY7sC,IAAcl+B,oBAAkBgrE,SAAW9sC,IAAcl+B,oBAAkBirE,YACnF/sC,IAAcl+B,oBAAkBkrE,YAAchtC,IAAcl+B,oBAAkBpT,IAClF,MACJ,KAAKmT,gBAAazT,IACdy+E,EAAY7sC,IAAcl+B,oBAAkBgrE,SAAW9sC,IAAcl+B,oBAAkBmrE,WACnFjtC,IAAcl+B,oBAAkBorE,UAAYltC,IAAcl+B,oBAAkBpT,IAChF,MACJ,KAAKmT,gBAAaq+B,MACd2sC,EAAY7sC,IAAcl+B,oBAAkBorE,UAAYltC,IAAcl+B,oBAAkBqrE,aACpFntC,IAAcl+B,oBAAkBsrE,aAAeptC,IAAcl+B,oBAAkBpT,IACnF,MACJ,KAAKmT,gBAAaw+B,OACdwsC,EAAY7sC,IAAcl+B,oBAAkBkrE,YAAchtC,IAAcl+B,oBAAkBurE,cACnFrtC,IAAcl+B,oBAAkBsrE,aAAeptC,IAAcl+B,oBAAkBpT,IACtF,MACJ,KAAKmT,gBAAa82B,KACdk0C,EAAY7sC,IAAcl+B,oBAAkBwrE,cAAgBttC,IAAcl+B,oBAAkBpT,KAGhGm+E,IACA7gG,KAAKugG,eAAiBvsC,KAQlCmsC,EAAuBxgG,UAAUygC,KAAO,SAAU4vB,EAAO30C,GACrD,GAAIslB,GAAOqvB,EAAMrvB,KACbnsB,EAASxU,KAAKyyE,gBAAgB9xC,EAAMtlB,EACxC20C,GAAM/wB,SAASyvB,gBAAgB1uD,KAAK2uD,SAAU,GAAIxvC,GAAO3K,EAAO9B,EAAG8B,EAAO7B,GAAI,GAAIyM,GAAM5K,EAAOlL,MAAOkL,EAAOjL,UAMjH42F,EAAuBxgG,UAAU8yE,gBAAkB,SAAU9xC,EAAMtlB,GAC/D,GAAIpY,GAASjD,KAAKwU,MAOlB,OANIxU,MAAKugG,iBAAmBzqE,oBAAkBpT,KAC1Czf,EAASjD,KAAKuhG,mBAAmB5gE,EAAMtlB,GAElCrb,KAAKqgG,YAAcxqE,eAAanT,OACrCzf,EAASjD,KAAKwhG,cAAc7gE,EAAMtlB,IAE/BpY,GAMXk9F,EAAuBxgG,UAAU4hG,mBAAqB,SAAU5gE,EAAMtlB,GACrDrb,KAAKwU,MAOlB,OANIxU,MAAKqI,OAAS0tB,eAAarT,KAClB1iB,KAAKyhG,yBAAyB9gE,EAAMtlB,GAGpCrb,KAAK0hG,2BAA2B/gE,EAAMtlB,IAQvD8kF,EAAuBxgG,UAAU8hG,yBAA2B,SAAU9gE,EAAMtlB,GACxE,GAAI7G,GAASxU,KAAKwU,OAEdmtF,EADahhE,EAAKq0B,QACQqI,gBAAgBhiD,EAAUslB,GAAM,GAC1DjuB,EAAI1S,KAAK0S,EACTC,EAAI3S,KAAK2S,CACb,QAAQ3S,KAAKugG,gBACT,IAAKzqE,qBAAkBgrE,QACnBpuF,EAAI,EACJC,EAAI,CACJ,MACJ,KAAKmjB,qBAAkBmrE,UACnBvuF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,EAAI,CACJ,MACJ,KAAKmjB,qBAAkBorE,SACnBxuF,EAAIivF,EAAar4F,MAAQtJ,KAAKsJ,MAC9BqJ,EAAI,CACJ,MACJ,KAAKmjB,qBAAkBirE,WACnBruF,EAAI,EACJC,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBwrE,aACnB5uF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBqrE,YACnBzuF,EAAIivF,EAAar4F,MAAQtJ,KAAKsJ,MAC9BqJ,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBkrE,WACnBtuF,EAAI,EACJC,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,MAC/B,MACJ,KAAKusB,qBAAkBurE,aACnB3uF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,MAC/B,MACJ,KAAKusB,qBAAkBsrE,YACnB1uF,EAAIivF,EAAar4F,MAAQtJ,KAAKsJ,MAC9BqJ,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,OAKvC,MAFAiL,GAAO9B,EAAIA,EACX8B,EAAO7B,EAAIA,EACJ6B,GAMX2rF,EAAuBxgG,UAAU+hG,2BAA6B,SAAU/gE,EAAMtlB,GAC1E,GAAIpY,GAASjD,KAAKwU,OACdwgD,EAAUr0B,EAAKq0B,QACf2sC,EAAe3sC,EAAQqI,gBAAgBhiD,EAAUslB,GAAM,GACvDjuB,EAAI1S,KAAK0S,EACTC,EAAI3S,KAAK2S,CACb,QAAQ3S,KAAKugG,gBACT,IAAKzqE,qBAAkBgrE,QACf9gG,KAAKqI,OAAS0tB,eAAaoiC,MAC3BzlD,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAI,GAEC3S,KAAKqI,OAAS0tB,eAAa3T,MAChC1P,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAI3S,KAAK4hG,YAAYD,EAAahvF,GAEtC,MACJ,KAAKmjB,qBAAkBmrE,UACnBvuF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,EAAI3S,KAAK4hG,YAAYD,EAAahvF,EAClC,MACJ,KAAKmjB,qBAAkBorE,SACflhG,KAAKqI,OAAS0tB,eAAam+B,OAC3BxhD,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,EAAI,GAEC3S,KAAKqI,OAAS0tB,eAAa3T,MAChC1P,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,EAAI3S,KAAK4hG,YAAYD,EAAahvF,GAEtC,MACJ,KAAKmjB,qBAAkBirE,WACnBruF,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBwrE,aACnB5uF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBqrE,YACnBzuF,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,GAAKgvF,EAAap4F,OAASvJ,KAAKuJ,QAAU,CAC1C,MACJ,KAAKusB,qBAAkBkrE,WACfhhG,KAAKqI,OAAS0tB,eAAaoiC,MAC3BzlD,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,QAE1BvJ,KAAKqI,OAAS0tB,eAAas+B,SAChC3hD,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAIgvF,EAAap4F,OAASyrD,EAAQ2P,sBAAsBtpD,EAAUslB,GAAM,GAAS3gC,KAAKuJ,OAE1F,MACJ,KAAKusB,qBAAkBurE,aACnB3uF,GAAKivF,EAAar4F,MAAQtJ,KAAKsJ,OAAS,EACxCqJ,EAAIgvF,EAAap4F,OAASyrD,EAAQ2P,sBAAsBtpD,EAAUslB,GAAM,GAAS3gC,KAAKuJ,MACtF,MACJ,KAAKusB,qBAAkBsrE,YACfphG,KAAKqI,OAAS0tB,eAAam+B,OAC3BxhD,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,QAE1BvJ,KAAKqI,OAAS0tB,eAAas+B,SAChC3hD,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,EAAIgvF,EAAap4F,OAASyrD,EAAQ2P,sBAAsBtpD,EAAUslB,GAAM,GAAS3gC,KAAKuJ,QAMlG,MAFAtG,GAAOyP,EAAIA,EACXzP,EAAO0P,EAAIA,EACJ1P,GAMXk9F,EAAuBxgG,UAAU6hG,cAAgB,SAAU7gE,EAAMtlB,GAChDrb,KAAKwU,MAOlB,OANIxU,MAAKqI,OAAS0tB,eAAarT,KAClB1iB,KAAK6hG,oBAAoBlhE,EAAMtlB,GAG/Brb,KAAK8hG,sBAAsBnhE,EAAMtlB,IAQlD8kF,EAAuBxgG,UAAUkiG,oBAAsB,SAAUlhE,EAAMtlB,GACtDrb,KAAKwU,MAAlB,IAEImtF,GADUhhE,EAAKq0B,QACQqI,gBAAgBhiD,EAAUslB,GAAM,GACvDjuB,EAAI1S,KAAK0S,EACTC,EAAI3S,KAAK2S,EACTrJ,EAAQtJ,KAAKsJ,MACbC,EAASvJ,KAAKuJ,MAClB,QAAQvJ,KAAKqgG,WACT,IAAKxqE,gBAAasiC,KACdzlD,EAAI,EACJC,EAAI,EACJrJ,EAAQtJ,KAAKsJ,MACbC,EAASo4F,EAAap4F,MACtB,MACJ,KAAKssB,gBAAazT,IACd1P,EAAI,EACJC,EAAI,EACJrJ,EAAQq4F,EAAar4F,MACrBC,EAASvJ,KAAKuJ,MACd,MACJ,KAAKssB,gBAAaq+B,MACdxhD,EAAIivF,EAAar4F,MAAQtJ,KAAKsJ,MAC9BqJ,EAAI,EACJrJ,EAAQtJ,KAAKsJ,MACbC,EAASo4F,EAAap4F,MACtB,MACJ,KAAKssB,gBAAaw+B,OACd3hD,EAAI,EACJC,EAAIgvF,EAAap4F,OAASvJ,KAAKuJ,OAC/BD,EAAQq4F,EAAar4F,MACrBC,EAASvJ,KAAKuJ,MACd,MACJ,KAAKssB,gBAAa82B,KACdj6C,EAAI,EACJA,EAAI,EACJpJ,EAAQq4F,EAAar4F,MACrBC,EAASo4F,EAAap4F,OAI9B,MADS,IAAI8V,GAAW3M,EAAGC,EAAGrJ,EAAOC,IAOzC42F,EAAuBxgG,UAAUmiG,sBAAwB,SAAUnhE,EAAMtlB,GACxDrb,KAAKwU,MAAlB,IACIwgD,GAAUr0B,EAAKq0B,QACf2sC,EAAe3sC,EAAQqI,gBAAgBhiD,EAAUslB,GAAM,GACvD3Y,EAAagtC,EAAQsI,aAAa5lC,gBAClChlB,EAAI1S,KAAK0S,EACTC,EAAI3S,KAAK2S,EACTrJ,EAAQtJ,KAAKsJ,MACbC,EAASvJ,KAAKuJ,MAClB,QAAQvJ,KAAKqgG,WACT,IAAKxqE,gBAAasiC,KACdzlD,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAI,EACJrJ,EAAQtJ,KAAKsJ,MACbC,EAASo4F,EAAap4F,MACtB,MACJ,KAAKssB,gBAAazT,IACd1P,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAI3S,KAAK4hG,YAAYD,EAAahvF,GAClCrJ,EAAQ0e,EAAW1e,MACnBC,EAASvJ,KAAKuJ,OACVo4F,EAAap4F,OAAS,IACtBoJ,EAAIqV,EAAWze,OAASo4F,EAAahvF,EAEzC,MACJ,KAAKkjB,gBAAaq+B,MACdxhD,EAAIivF,EAAar4F,MAAQ0rD,EAAQ0P,oBAAoBrpD,EAAUslB,GAAM,GAAS3gC,KAAKsJ,MACnFqJ,EAAI,EACJrJ,EAAQtJ,KAAKsJ,MACbC,EAASo4F,EAAap4F,MACtB,MACJ,KAAKssB,gBAAaw+B,OACd3hD,EAAI1S,KAAK4hG,YAAYD,EAAajvF,GAClCC,EAAIgvF,EAAap4F,OAASyrD,EAAQ2P,sBAAsBtpD,EAAUslB,GAAM,GAAS3gC,KAAKuJ,OACtFD,EAAQ0e,EAAW1e,MACnBC,EAASvJ,KAAKuJ,OACVo4F,EAAap4F,OAAS,IACtBoJ,GAAKqV,EAAWze,OAEpB,MACJ,KAAKssB,gBAAa82B,KACdj6C,EAAI,EACJA,EAAI,EACJpJ,EAAQq4F,EAAar4F,MACrBC,EAASo4F,EAAap4F,OAI9B,MADS,IAAI8V,GAAW3M,EAAGC,EAAGrJ,EAAOC,IAOzC42F,EAAuBxgG,UAAUiiG,YAAc,SAAUrhG,GACrD,MAAkB,KAAVA,GAA0B,IAAVA,GAAe,EAAIA,IAAWwhG,EAAAA,GAAcxhG,EAAQA,GAEzE4/F"}