{"version":3,"file":"asoftwareworld-form-builder-pro-core.mjs","sources":["../../src/components/core/translate/translate.loader.ts","../../src/components/core/translate/missing-translation-handler.ts","../../src/components/core/translate/translate.parser.ts","../../src/components/core/translate/translate.compiler.ts","../../src/components/core/translate/translate.store.ts","../../src/components/core/translate/i18n/language.ts","../../src/components/core/translate/http-loader.ts","../../src/components/core/translate/translate.service.ts","../../src/components/core/translate/translate.directive.ts","../../src/components/core/translate/translate.pipe.ts","../../src/components/core/translate/translate.module.ts","../../src/components/core/license/algo/sha256.ts","../../src/components/core/license/encode/base64Decode.ts","../../src/components/core/license/encode/base64Encode.ts","../../src/components/core/license/license.ts","../../src/components/core/license/algo/aes.ts","../../src/components/core/watermark/watermark.service.ts","../../src/components/core/public_api.ts","../../src/components/core/asoftwareworld-form-builder-pro-core.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nexport abstract class AswTranslateLoader {\n    abstract getTranslation(lang: string): Observable<any>;\n}\n\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\n@Injectable()\nexport class AswTranslateFakeLoader extends AswTranslateLoader {\n    getTranslation(lang: string): Observable<any> {\n        return of({});\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Injectable } from '@angular/core';\nimport { AswTranslateService } from './translate.service';\n\nexport interface AswMissingTranslationHandlerParams {\n    /**\n     * the key that's missing in translation files\n     */\n    key: string;\n\n    /**\n     * an instance of the service that was unable to translate the key.\n     */\n    aswTranslateService: AswTranslateService;\n\n    /**\n     * interpolation params that were passed along for translating the given key.\n     */\n    interpolateParams?: object;\n}\n\nexport abstract class AswMissingTranslationHandler {\n    /**\n     * A function that handles missing translations.\n     *\n     * @param params context for resolving a missing translation\n     * @returns a value or an observable\n     * If it returns a value, then this value is used.\n     * If it return an observable, the value returned by this observable will be used (except if the method was 'instant').\n     * If it doesn't return then the key will be used as a value\n     */\n    abstract handle(params: AswMissingTranslationHandlerParams): any;\n}\n\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\n@Injectable()\nexport class AswFakeMissingTranslationHandler implements AswMissingTranslationHandler {\n    handle(params: AswMissingTranslationHandlerParams): string {\n        return params.key;\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Injectable } from '@angular/core';\nimport { isDefined } from '@asoftwareworld/form-builder-pro/utils';\n\nexport abstract class AswTranslateParser {\n    /**\n     * Interpolates a string to replace parameters\n     * 'This is a {{ key }}' ==> 'This is a value', with params = { key: 'value' }\n     */\n    abstract interpolate(expr: string | any, params?: any): string | undefined;\n\n    /**\n     * Gets a value from an object by composed key\n     * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\n     */\n    abstract getValue(target: any, key: string): any;\n}\n\n@Injectable()\nexport class AswTranslateDefaultParser extends AswTranslateParser {\n    templateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g;\n\n    public interpolate(expr: string | any, params?: any): string {\n        let result: string;\n\n        if (typeof expr === 'string') {\n            result = this.interpolateString(expr, params);\n        } else if (typeof expr === 'function') {\n            result = this.interpolateFunction(expr, params);\n        } else {\n            // this should not happen, but an unrelated TranslateService test depends on it\n            result = expr as string;\n        }\n\n        return result;\n    }\n\n    getValue(target: any, key: string): any {\n        const keys = typeof key === 'string' ? key.split('.') : [key];\n        key = '';\n        do {\n            key += keys.shift();\n            if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n                target = target[key];\n                key = '';\n            } else if (!keys.length) {\n                target = undefined;\n            } else {\n                key += '.';\n            }\n        } while (keys.length);\n\n        return target;\n    }\n\n    private interpolateFunction(fn: any, params?: any): any {\n        return fn(params);\n    }\n\n    private interpolateString(expr: string, params?: any): string {\n        if (!params) {\n            return expr;\n        }\n\n        return expr.replace(this.templateMatcher, (substring: string, b: string) => {\n            const r = this.getValue(params, b);\n            return isDefined(r) ? r : substring;\n        });\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Injectable } from '@angular/core';\n\nexport abstract class AswTranslateCompiler {\n    abstract compile(value: string, lang: string): string | any;\n\n    abstract compileTranslations(translations: any, lang: string): any;\n}\n\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\n@Injectable()\nexport class AswTranslateFakeCompiler extends AswTranslateCompiler {\n    compile(value: string, lang: string): string | any {\n        return value;\n    }\n\n    compileTranslations(translations: any, lang: string): any {\n        return translations;\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { EventEmitter } from '@angular/core';\nimport { AswDefaultLangChangeEvent, AswLangChangeEvent, AswTranslationChangeEvent } from './translate.service';\n\nexport class AswTranslateStore {\n    /**\n     * The default lang to fallback when translations are missing on the current lang\n     */\n    public defaultLang!: string;\n\n    /**\n     * The lang currently used\n     */\n    public currentLang: string = this.defaultLang;\n\n    /**\n     * a list of translations per lang\n     */\n    public translations: any = {};\n\n    /**\n     * an array of langs\n     */\n    public langs: Array<string> = [];\n\n    /**\n     * An EventEmitter to listen to translation change events\n     * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n     *     // do something\n     * });\n     */\n    public onTranslationChange: EventEmitter<AswTranslationChangeEvent> = new EventEmitter<AswTranslationChangeEvent>();\n\n    /**\n     * An EventEmitter to listen to lang change events\n     * onLangChange.subscribe((params: LangChangeEvent) => {\n     *     // do something\n     * });\n     */\n    public onLangChange: EventEmitter<AswLangChangeEvent> = new EventEmitter<AswLangChangeEvent>();\n\n    /**\n     * An EventEmitter to listen to default lang change events\n     * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n     *     // do something\n     * });\n     */\n    public onDefaultLangChange: EventEmitter<AswDefaultLangChangeEvent> = new EventEmitter<AswDefaultLangChangeEvent>();\n}\n","function getLanguages(): any {\n    const en = {\n        FormBuilder: {\n            BasicControls: 'Basic controls',\n            ChoiceControls: 'Choice controls',\n            AdvancedControls: 'Advanced controls',\n            DigitalControls: 'Digital controls',\n            LayoutControls: 'Layout controls',\n            DragAndDrop: 'Drag and Drop a form component',\n            Preview: 'Preview',\n            JsonData: 'Json data',\n            Publish: 'Publish'\n        },\n        FormControl: {\n            Edit: 'Edit',\n            UniqueId: 'Unique Id',\n            Label: 'Label',\n            CustomCSSClass: 'Custom CSS class',\n            Tooltip: 'Tooltip',\n            InputMask: 'Input mask',\n            InputMaskCustomErrorMsg: 'Input mask custom error msg',\n            Value: 'Value',\n            Style: 'Style',\n            ColumnSize: 'Column size',\n            SelectColumnSize: 'Select column size',\n            SelectStyle: 'Select style',\n            MinLength: 'Min length',\n            MaxLength: 'Max length',\n            Required: 'Required',\n            NotRequired: 'Not required',\n            Disabled: 'Disabled',\n            Enabled: 'Enabled',\n            No: 'No',\n            Yes: 'Yes',\n            Properties: 'Properties',\n            API: 'API',\n            OptionValue: 'Option value',\n            OptionKey: 'Option key',\n            Add: 'Add',\n            Delete: 'Delete',\n            Duplicate: 'Duplicate',\n            Imageurl: 'Image url',\n            Width: 'Width',\n            Height: 'Height',\n            ClearPastRequests: 'Clear Past Requests',\n            Method: 'Method',\n            EnterRequestURL: 'Enter request URL',\n            Key: 'Key',\n            DataType: 'Data type',\n            SendRequest: 'Send Request',\n            Headers: 'Headers',\n            Body: 'Body',\n            UntitledRequest: 'Untitled Request',\n            MyWorkspace: 'My Workspace',\n            Response: 'Response',\n            IsRequired: 'is required.',\n            Color: 'Color',\n            SelectColor: 'Select color',\n            Type: 'Type',\n            SelectType: 'Select type',\n            Warning: 'Warning',\n            EditCalculation: 'Edit calculation',\n            SelectOperation: 'Select operation',\n            Operation: 'Operation',\n            Operator: 'Operator',\n            SelectOperator: 'Select operator',\n            MaxDate: 'Max date',\n            MinDate: 'Min date',\n            DrawImage: 'Draw image',\n            Latitude: 'Latitude',\n            Longitude: 'Longitude',\n            SearchLocation: 'Search location',\n            SelectImageShape: 'Select image shape',\n            LoadImage: 'Load image',\n            RemoveImage: 'Remove image',\n            LeftRotate: 'Left rotate',\n            RightRotate: 'Right rotate',\n            SwapHorizontal: 'Swap horizontal',\n            SwapVertical: 'Swap vertical',\n            ResetImage: 'Reset image',\n            ZoomOut: 'Zoom out',\n            ZoomIn: 'Zoom in',\n            Close: 'Close',\n            CopyData: 'Copy Data',\n            Signature: 'Signature',\n            SelectValue: 'Select value',\n            CenterImage: 'Center image',\n            CenterImageSize: 'Center image size',\n            ErrorCorrectionLevel: 'Error correction level',\n            SelectErrorCorrectionLevel: 'Select error correction level',\n            QRCodeSize: 'QR code size',\n            EditParagraph: 'Edit paragraph',\n            Save: 'Save',\n            Options: 'Options',\n            BrushSize: 'Brush size',\n            Colors: 'Colors',\n            ClearCanvas: 'Clear Canvas',\n            FillAspectRatio: 'Fill aspect ratio',\n            ContainWithinAspectRatio: 'Contain within the aspect ratio',\n            MoveLeft: 'Move left',\n            MoveRight: 'Move right',\n            MoveTop: 'Move top',\n            MoveBottom: 'Move bottom',\n            ImagePreview: 'Image preview',\n            ImageCrop: 'Image crop',\n            ImageSize: 'Image size',\n            CropType: 'Crop type',\n            Square: 'Square',\n            Circle: 'Circle',\n            Upload: 'Upload',\n            MaxSize: 'Maximum size (in KB = Kilobytes)',\n            MinSize: 'Minimum size (in KB = Kilobytes)',\n            AllowMultipleFile: 'Allow multiple files',\n            FileTypes: 'File types',\n            DisabledWeekend: 'Disabled weekend dates',\n            EnabledWeekend: 'Enabled weekend dates',\n            Readonly: 'Readonly',\n            CurrencySymbol: 'Choose currency symbol',\n            AddOption: 'Add option',\n            AddOperation: 'Add operation',\n            Copied: 'Copied',\n            UploadHide: 'Hide upload button',\n            UploadShow: 'Show upload button',\n            Data: 'Data',\n            DrawType: 'Draw type',\n            OuterMargin: 'Outer margin',\n            Density: 'Density',\n            TypeNumber: 'Type number',\n            Mode: 'Mode',\n            MiddleShape: 'Middle shape',\n            CornerInnerShape: 'Corner inner shape',\n            CornerOuterShape: 'Corner outer shape',\n            Logo: 'Logo',\n            LogoSize: 'Logo size',\n            LogoMargin: 'Logo margin',\n            Background: 'Background',\n            Format: 'Format',\n            CornerInner: 'Corner inner',\n            CornerOuter: 'Corner outer',\n            HideBackgroundDots: 'Hide background dots',\n            Size: 'Size',\n            AddColumn: 'Add Column',\n            LabelType: 'Label type',\n            SelectLabelType: 'Select label type',\n            DefaultView: 'Default view',\n            hideControl: 'Hide control',\n            hideControlInfo: 'Hide or show column controls dynamically based on the selected option'\n        },\n        editor: {\n            Undo: 'Undo',\n            Redo: 'Redo',\n            Bold: 'Bold',\n            Italic: 'Italic',\n            Underline: 'Underline',\n            Strikethrough: 'Strikethrough',\n            Subscript: 'Subscript',\n            Superscript: 'Superscript',\n            JustifyLeft: 'Justify left',\n            JustifyCenter: 'Justify center',\n            JustifyRight: 'Justify right',\n            JustifyFull: 'Justify full',\n            Indent: 'Indent',\n            Outdent: 'Outdent',\n            UnorderedList: 'Unordered list',\n            OrderedList: 'Ordered list',\n            TextColor: 'Text color',\n            BackgroundColor: 'Background color',\n            InsertLink: 'Insert link',\n            Unlink: 'Unlink',\n            InsertImage: 'Insert image',\n            InsertVideo: 'Insert video',\n            HorizontalLine: 'Horizontal line',\n            ClearFormatting: 'Clear formatting',\n            HTMLCode: 'HTML code'\n        },\n        Header: 'Header',\n        'Text field': 'Text Field',\n        'Text area': 'Text Area',\n        Number: 'Number',\n        Calculation: 'Calculation',\n        Paragraph: 'Paragraph',\n        Divider: 'Divider',\n        'Slide Toggle': 'Slide Toggle',\n        Button: 'Button',\n        Autocomplete: 'Autocomplete',\n        Select: 'Select',\n        'Multi select': 'Multi Select',\n        'Radio Button': 'Radio Button',\n        Radio: 'Radio',\n        Checkbox: 'Checkbox',\n        Datepicker: 'Datepicker',\n        GPS: 'GPS',\n        Email: 'Email',\n        'Phone number': 'Phone Number',\n        Url: 'URL',\n        Currency: 'Currency',\n        Image: 'Image',\n        Signature: 'Signature',\n        Drawing: 'Drawing',\n        'File Upload': 'File Upload',\n        'QR Code': 'QR Code',\n        Columns: 'Columns',\n        '2 Column': '2 Column',\n        '3 Column': '3 Column',\n        '4 Column': '4 Column',\n        'Left Split': 'Left Split',\n        'Right Split': 'Right Split',\n        'Label is required.': 'Label is required.',\n        'Label must be at least 2 characters long.': 'Label must be at least 2 characters long.',\n        'Minlength is required.': 'Minlength is required.',\n        'Minlength must contain only numbers.': 'Minlength must contain only numbers.',\n        'Option key is required.': 'Option key is required.',\n        'Sorry, your option key must be between 1 and 50 characters long.': 'Sorry, your option key must be between 1 and 50 characters long.',\n        'Sorry, only letters (a-z), numbers (0-9), and periods (- and _) are allowed.': 'Sorry, only letters (a-z), numbers (0-9), and periods (- and _) are allowed.',\n        'Option key already exists. Try another.': 'Option key already exists. Try another.',\n        'Option value is required.': 'Option value is required.',\n        'Sorry, your option value must be between 1 and 999 characters long.': 'Sorry, your option value must be between 1 and 999 characters long.',\n        'Unique id is required.': 'Unique id is required.',\n        'Operation is required.': 'Operation is required.',\n        'Operator is required.': 'Operator is required.',\n        'Api URL is required.': 'Api URL is required.',\n        'Are you sure you want to remove this field?': 'Are you sure you want to remove this field?',\n        'Searched address not found.': 'Searched address not found.',\n        Primary: 'Primary',\n        Secondary: 'Secondary',\n        Success: 'Success',\n        Danger: 'Danger',\n        Info: 'Info',\n        Light: 'Light',\n        Dark: 'Dark',\n        Link: 'link',\n        Submit: 'Submit',\n        Reset: 'Reset',\n        Basic: 'Basic',\n        Raised: 'Raised',\n        Stroked: 'Stroked',\n        Flat: 'Flat',\n        Warning: 'Warning',\n        Rose: 'Rose',\n        'Slide me!': 'Slide me!',\n        'Enter currency': 'Enter currency',\n        'Field 1 + Field 2 = ': 'Field 1 + Field 2 = ',\n        'Drag and drop files here or': 'Drag and drop files here or',\n        Browse: 'Browse',\n        'Please enter a valid email address': 'Please enter a valid email address',\n        Sorry: 'Sorry',\n        'must be at least': 'must be at least',\n        'characters long': 'characters long',\n        'Not a valid Phone Number': 'Not a valid Phone Number',\n        'Email format should be xyz@example.com': 'Email format should be xyz@example.com',\n        \"Yikes! That's not a valid URL\": \"Yikes! That's not a valid URL\"\n    };\n\n    const fr = {\n        FormBuilder: {\n            BasicControls: 'Commandes de base',\n            ChoiceControls: 'Commandes de choix',\n            AdvancedControls: 'Contrôles avancés',\n            DigitalControls: 'Commandes numériques',\n            LayoutControls: 'Commandes de mise en page',\n            DragAndDrop: 'Glisser-déposer un composant de formulaire',\n            Preview: 'Aperçu',\n            JsonData: 'Données Json',\n            Publish: 'Publier'\n        },\n        FormControl: {\n            Edit: 'Éditer',\n            UniqueId: 'Identifiant unique',\n            Label: 'Étiquette',\n            CustomCSSClass: 'Classe CSS personnalisée',\n            Tooltip: 'Info-bulle',\n            InputMask: 'Masque de saisie',\n            InputMaskCustomErrorMsg: \"Message d'erreur personnalisé du masque de saisie\",\n            Value: 'Évaluer',\n            Style: 'Style',\n            ColumnSize: 'Taille de la colonne',\n            SelectColumnSize: 'Sélectionnez la taille de la colonne',\n            SelectStyle: 'Sélectionnez le modèle',\n            MinLength: 'Longueur minimale',\n            MaxLength: 'longueur maximale',\n            Required: 'Obligatoire',\n            NotRequired: 'Non requis',\n            Disabled: 'désactivé',\n            Enabled: 'Activé',\n            No: 'Non',\n            Yes: 'Oui',\n            Properties: 'Propriétés',\n            API: 'API',\n            OptionValue: \"Valeur d'option\",\n            OptionKey: \"Clé d'options\",\n            Add: 'Ajouter',\n            Delete: 'Effacer',\n            Duplicate: 'Dupliquer',\n            Imageurl: \"URL de l'image\",\n            Width: 'Largeur',\n            Height: 'Hauteur',\n            ClearPastRequests: 'Effacer les demandes passées',\n            Method: 'Méthode',\n            EnterRequestURL: \"Entrez l'URL de la demande\",\n            Key: 'Clé',\n            DataType: 'Type de données',\n            SendRequest: 'Envoyer une demande',\n            Headers: 'En-têtes',\n            Body: 'Corps',\n            UntitledRequest: 'Demande sans titre',\n            MyWorkspace: 'Mon espace de travail',\n            Response: 'Réponse',\n            IsRequired: 'est requis.',\n            Color: 'Couleur',\n            SelectColor: 'Choisissez la couleur',\n            Type: 'Taper',\n            SelectType: 'Sélectionner le genre',\n            Warning: 'Avertissement',\n            EditCalculation: 'Modifier le calcul',\n            SelectOperation: \"Sélectionnez l'opération\",\n            Operation: 'Opération',\n            Operator: 'Opérateur',\n            SelectOperator: \"Sélectionnez l'opérateur\",\n            MaxDate: 'Date maximale',\n            MinDate: 'Date minimale',\n            DrawImage: 'Dessiner une image',\n            'Searched address not found.': 'Adresse recherchée introuvable.',\n            Latitude: 'Latitude',\n            Longitude: 'Longitude',\n            SearchLocation: 'Lieu de recherche',\n            SelectImageShape: \"Sélectionnez la forme de l'image\",\n            LoadImage: \"Charger l'image\",\n            RemoveImage: \"Supprimer l'image\",\n            LeftRotate: 'Rotation à gauche',\n            RightRotate: 'Rotation à droite',\n            SwapHorizontal: 'Permuter horizontalement',\n            SwapVertical: 'Permuter verticalement',\n            ResetImage: \"Réinitialiser l'image\",\n            ZoomOut: 'Dézoomer',\n            ZoomIn: 'Agrandir',\n            Close: 'proche',\n            CopyData: 'Copier les données',\n            Signature: 'Signature',\n            SelectValue: 'Sélectionnez la valeur',\n            CenterImage: \"Centrer l'image\",\n            CenterImageSize: \"Taille de l'image centrale\",\n            ErrorCorrectionLevel: \"Niveau de correction d'erreur\",\n            SelectErrorCorrectionLevel: \"Sélectionnez le niveau de correction d'erreur\",\n            QRCodeSize: 'Taille du code QR',\n            EditParagraph: 'Modifier le paragraphe',\n            Save: 'sauvegarder',\n            Options: 'Choix',\n            BrushSize: 'Taille de la brosse',\n            Colors: 'Couleurs',\n            ClearCanvas: 'Toile transparente',\n            FillAspectRatio: 'Remplir les proportions',\n            ContainWithinAspectRatio: \"Contenir dans le rapport d'aspect\",\n            MoveLeft: 'Se déplacer à gauche',\n            MoveRight: 'Déplacer vers la droite',\n            MoveTop: 'Déplacer vers le haut',\n            MoveBottom: 'Déplacer vers le bas',\n            ImagePreview: \"Aperçu de l'image\",\n            ImageCrop: \"Recadrage de l'image\",\n            ImageSize: \"Taille de l'image\",\n            CropType: 'Type de culture',\n            Square: 'Carré',\n            Circle: 'Cercle',\n            Upload: 'Télécharger',\n            MaxSize: 'Taille maximale (en Ko = Kilooctets)',\n            MinSize: 'Taille minimale (en Ko = Kilooctets)',\n            AllowMultipleFile: 'Autoriser plusieurs fichiers',\n            FileTypes: 'Types de fichier',\n            DisabledWeekend: 'Dates de week-end désactivées',\n            EnabledWeekend: 'Dates de week-end activées',\n            Readonly: 'Lecture seulement',\n            CurrencySymbol: 'Choisissez le symbole monétaire',\n            AddOption: 'Ajouter une option',\n            AddOperation: 'Ajouter une opération',\n            Copied: 'Copié',\n            UploadHide: 'Masquer le bouton de téléchargement',\n            UploadShow: 'Afficher le bouton de téléchargement',\n            Data: 'Données',\n            DrawType: 'Type de dessin',\n            OuterMargin: 'Marge extérieure',\n            Density: 'Densité',\n            TypeNumber: 'Numéro de type',\n            Mode: 'Mode',\n            MiddleShape: 'Forme moyenne',\n            CornerInnerShape: 'Forme intérieure du coin',\n            CornerOuterShape: 'Forme extérieure du coin',\n            Logo: 'Logo',\n            LogoSize: 'Taille du logo',\n            LogoMargin: 'Marge du logo',\n            Background: 'Arrière-plan',\n            Format: 'Format',\n            CornerInner: 'Coin intérieur',\n            CornerOuter: 'Coin extérieur',\n            HideBackgroundDots: \"Masquer les points d'arrière-plan\",\n            Size: 'Taille',\n            AddColumn: 'Ajouter une colonne',\n            LabelType: \"Type d'étiquette\",\n            SelectLabelType: \"Sélectionnez le type d'étiquette\",\n            DefaultView: 'Vue par défaut',\n            hideControl: 'Masquer le contrôle',\n            hideControlInfo: \"Masquer ou afficher les contrôles de colonne de manière dynamique en fonction de l'option sélectionnée\"\n        },\n        editor: {\n            Undo: 'annuler',\n            Redo: 'Refaire',\n            Bold: 'Audacieux',\n            Italic: 'Italique',\n            Underline: 'Souligner',\n            Strikethrough: 'Barré',\n            Subscript: 'Indice',\n            Superscript: 'Exposant',\n            JustifyLeft: 'Justifier à gauche',\n            JustifyCenter: 'Justifier le centre',\n            JustifyRight: 'Justifier à droite',\n            JustifyFull: 'Justifier complet',\n            Indent: 'Retrait',\n            Outdent: 'Retrait extérieur',\n            UnorderedList: 'Liste non ordonnée',\n            OrderedList: 'Liste ordonnée',\n            TextColor: 'Couleur du texte',\n            BackgroundColor: \"Couleur de l'arrière plan\",\n            InsertLink: 'Insérer un lien',\n            Unlink: 'Dissocier',\n            InsertImage: 'Insérer une image',\n            InsertVideo: 'Insérer une vidéo',\n            HorizontalLine: 'Ligne horizontale',\n            ClearFormatting: 'Supprimer le formattage',\n            HTMLCode: 'HTML code'\n        },\n        Header: 'Entête',\n        'Text field': 'Champ de texte',\n        'Text area': 'Zone de texte',\n        Number: 'Numéro',\n        Calculation: 'Calcul',\n        Paragraph: 'Paragraphe',\n        Divider: 'Diviseur',\n        'Slide Toggle': 'Bascule de diapositive',\n        Button: 'Bouton',\n        Autocomplete: 'Saisie automatique',\n        Select: 'Sélectionner',\n        'Multi select': 'Sélection multiple',\n        'Radio Button': 'Bouton radio',\n        Radio: 'radio',\n        Checkbox: 'Case à cocher',\n        Datepicker: 'Sélecteur de date',\n        GPS: 'GPS',\n        Email: 'E-mail',\n        'Phone number': 'Numéro de téléphone',\n        Url: 'URL',\n        Currency: 'Devise',\n        Image: 'Image',\n        Signature: 'Signature',\n        Drawing: 'Dessin',\n        'File Upload': 'Téléchargement de fichiers',\n        'QR Code': 'QR Code',\n        Columns: 'Colonnes',\n        '2 Column': '2 Colonne',\n        '3 Column': '3 Colonne',\n        '4 Column': '4 Colonne',\n        'Left Split': 'Division gauche',\n        'Right Split': 'Division à droite',\n        'Label is required.': \"L'étiquette est obligatoire.\",\n        'Label must be at least 2 characters long.': 'Le libellé doit comporter au moins 2 caractères.',\n        'Minlength is required.': 'Minlength est requis.',\n        'Minlength must contain only numbers.': 'Minlength ne doit contenir que des nombres.',\n        'Option key is required.': \"La clé d'option est requise.\",\n        'Sorry, your option key must be between 1 and 50 characters long.': \"Désolé, votre clé d'option doit contenir entre 1 et 50 caractères.\",\n        'Sorry, only letters (a-z), numbers (0-9), and periods (- and _) are allowed.': 'Désolé, seuls les lettres (a-z), les chiffres (0-9) et les points (- et _) sont autorisés.',\n        'Option key already exists. Try another.': \"La clé d'option existe déjà. Essaie un autre.\",\n        'Option value is required.': \"La valeur de l'option est requise.\",\n        'Sorry, your option value must be between 1 and 999 characters long.': 'Désolé, la valeur de votre option doit être comprise entre 1 et 999 caractères.',\n        'Unique id is required.': 'Un identifiant unique est requis.',\n        'Operation is required.': \"L'opération est requise.\",\n        'Operator is required.': \"L'opérateur est requis.\",\n        'Api URL is required.': \"L'URL de l'API est requise.\",\n        'Are you sure you want to remove this field?': 'Voulez-vous vraiment supprimer ce champ?',\n        Primary: 'Primary',\n        Secondary: 'Secondaire',\n        Success: 'Succès',\n        Danger: 'Danger',\n        Info: 'Info',\n        Light: 'Lumière',\n        Dark: 'Sombre',\n        Link: 'lien',\n        Submit: 'Soumettre',\n        Reset: 'Réinitialiser',\n        Basic: 'Basique',\n        Raised: 'Soulevé',\n        Stroked: 'Caressé',\n        Flat: 'Plat',\n        Warning: 'Avertissement',\n        Rose: 'Rose',\n        'Slide me!': 'Faites-moi glisser !',\n        'Enter currency': 'Saisir la devise',\n        'Field 1 + Field 2 = ': 'Champ 1 + Champ 2 = ',\n        'Drag and drop files here or': 'Faites glisser et déposez les fichiers ici ou',\n        Browse: 'Parcourir',\n        'Please enter a valid email address': \"S'il vous plaît, mettez une adresse email valide\",\n        Sorry: 'Désolé',\n        'must be at least': 'doit être au moins',\n        'characters long': 'caractères longs',\n        'Not a valid Phone Number': 'Pas un numéro de téléphone valide',\n        'Email format should be xyz@example.com': \"Le format de l'e-mail doit être xyz@example.com\",\n        \"Yikes! That's not a valid URL\": \"Ouais ! Ce n'est pas une URL valide\"\n    };\n\n    const es = {\n        FormBuilder: {\n            BasicControls: 'Controles básicos',\n            ChoiceControls: 'Controles de elección',\n            AdvancedControls: 'Controles avanzados',\n            DigitalControls: 'Controles digitales',\n            LayoutControls: 'Controles de diseño',\n            DragAndDrop: 'Arrastrar y soltar un componente de formulario',\n            Preview: 'Avance',\n            JsonData: 'datos json',\n            Publish: 'Publicar'\n        },\n        FormControl: {\n            Edit: 'Editar',\n            UniqueId: 'Identificación única',\n            Label: 'Etiqueta',\n            CustomCSSClass: 'Clase CSS personalizada',\n            Tooltip: 'Información sobre herramientas',\n            InputMask: 'Máscara de entrada',\n            InputMaskCustomErrorMsg: 'Mensaje de error personalizado de máscara de entrada',\n            Value: 'Valor',\n            Style: 'Estilo',\n            ColumnSize: 'Tamaño de columna',\n            SelectColumnSize: 'Seleccionar tamaño de columna',\n            SelectStyle: 'Seleccionar estilo',\n            MinLength: 'Longitud mínima',\n            MaxLength: 'longitud máxima',\n            Required: 'Requerido',\n            NotRequired: 'No requerido',\n            Disabled: 'Desactivado',\n            Enabled: 'Activado',\n            No: 'No',\n            Yes: 'Sí',\n            Properties: 'Propiedades',\n            API: 'API',\n            OptionValue: 'Valor de la opción',\n            OptionKey: 'tecla de opción',\n            Add: 'Agregar',\n            Delete: 'Borrar',\n            Duplicate: 'Duplicado',\n            Imageurl: 'URL de la imagen',\n            Width: 'Ancho',\n            Height: 'Altura',\n            ClearPastRequests: 'Borrar solicitudes anteriores',\n            Method: 'Método',\n            EnterRequestURL: 'Introduzca la URL de la solicitud',\n            Key: 'Llave',\n            DataType: 'Tipo de datos',\n            SendRequest: 'Enviar petición',\n            Headers: 'Encabezados',\n            Body: 'Cuerpo',\n            UntitledRequest: 'Solicitud sin título',\n            MyWorkspace: 'Mi espacio de trabajo',\n            Response: 'Respuesta',\n            IsRequired: 'es requerido.',\n            Color: 'Color',\n            SelectColor: 'Seleccionar el color',\n            Type: 'Escribe',\n            SelectType: 'Seleccione tipo',\n            Warning: 'Advertencia',\n            EditCalculation: 'Editar cálculo',\n            SelectOperation: 'Seleccionar operación',\n            Operation: 'Operación',\n            Operator: 'Operador',\n            SelectOperator: 'Seleccionar operador',\n            MaxDate: 'Fecha máxima',\n            MinDate: 'Fecha mínima',\n            DrawImage: 'Dibujar imagen',\n            Latitude: 'Latitud',\n            Longitude: 'Longitud',\n            SearchLocation: 'Buscar ubicación',\n            SelectImageShape: 'Seleccione la forma de la imagen',\n            LoadImage: 'Cargar imagen',\n            RemoveImage: 'Quita la imagen',\n            LeftRotate: 'Girar a la izquierda',\n            RightRotate: 'Rotar a la derecha',\n            SwapHorizontal: 'Intercambiar horizontales',\n            SwapVertical: 'Intercambiar verticales',\n            ResetImage: 'Restablecer imagen',\n            ZoomOut: 'Disminuir el zoom',\n            ZoomIn: 'Acercarse',\n            Close: 'Cerca',\n            CopyData: 'Copiar datos',\n            Signature: 'Firma',\n            SelectValue: 'Selecciona valor',\n            CenterImage: 'imagen central',\n            CenterImageSize: 'Tamaño de la imagen central',\n            ErrorCorrectionLevel: 'Nivel de corrección de errores',\n            SelectErrorCorrectionLevel: 'Seleccione el nivel de corrección de errores',\n            QRCodeSize: 'Tamaño del código QR',\n            EditParagraph: 'Editar párrafo',\n            Save: 'Ahorrar',\n            Options: 'Opciones',\n            BrushSize: 'Tamaño del pincel',\n            Colors: 'Colores',\n            ClearCanvas: 'lienzo transparente',\n            FillAspectRatio: 'relación de aspecto de relleno',\n            ContainWithinAspectRatio: 'Contener dentro de la relación de aspecto',\n            MoveLeft: 'Mover hacia la izquierda',\n            MoveRight: 'Mover a la derecha',\n            MoveTop: 'Mover arriba',\n            MoveBottom: 'Mover abajo',\n            ImagePreview: 'Vista previa de la imagen',\n            ImageCrop: 'Recorte de imagen',\n            ImageSize: 'Tamaño de la imagen',\n            CropType: 'tipo de cultivo',\n            Square: 'Cuadrado',\n            Circle: 'Circulo',\n            Upload: 'Subir',\n            MaxSize: 'Tamaño máximo (en KB = Kilobytes)',\n            MinSize: 'Tamaño mínimo (en KB = Kilobytes)',\n            AllowMultipleFile: 'Permitir múltiples archivos',\n            FileTypes: 'Tipos de archivo',\n            DisabledWeekend: 'Fechas de fin de semana deshabilitadas',\n            EnabledWeekend: 'Fechas de fin de semana habilitadas',\n            Readonly: 'Solo lectura',\n            CurrencySymbol: 'Elija el símbolo de moneda',\n            AddOption: 'Añadir opción',\n            AddOperation: 'Añadir operación',\n            Copied: 'Copiado',\n            UploadHide: 'Ocultar botón de carga',\n            UploadShow: 'Mostrar botón de carga',\n            Data: 'Datos',\n            DrawType: 'Tipo de sorteo',\n            OuterMargin: 'margen exterior',\n            Density: 'Densidad',\n            TypeNumber: 'Teclea un número',\n            Mode: 'Mode',\n            MiddleShape: 'Forma media',\n            CornerInnerShape: 'Forma interior de esquina',\n            CornerOuterShape: 'Forma exterior de la esquina',\n            Logo: 'Logo',\n            LogoSize: 'Tamaño del logotipo',\n            LogoMargin: 'Margen del logotipo',\n            Background: 'Fondo',\n            Format: 'Formato',\n            CornerInner: 'Esquina interior',\n            CornerOuter: 'Esquina exterior',\n            HideBackgroundDots: 'Ocultar puntos de fondo',\n            Size: 'Tamaño',\n            AddColumn: 'Añadir columna',\n            LabelType: 'Tipo de etiqueta',\n            SelectLabelType: 'Seleccionar tipo de etiqueta',\n            DefaultView: 'Vista predeterminada',\n            hideControl: 'Ocultar control',\n            hideControlInfo: 'Ocultar o mostrar controles de columna dinámicamente según la opción seleccionada'\n        },\n        editor: {\n            Undo: 'Deshacer',\n            Redo: 'Rehacer',\n            Bold: 'Negrito',\n            Italic: 'Itálico',\n            Underline: 'Subrayar',\n            Strikethrough: 'tachado',\n            Subscript: 'Subíndice',\n            Superscript: 'Sobrescrito',\n            JustifyLeft: 'Justificar a la izquierda',\n            JustifyCenter: 'Justificar centro',\n            JustifyRight: 'Justificar bien',\n            JustifyFull: 'Justificar completo',\n            Indent: 'Sangrar',\n            Outdent: 'anular la sangría',\n            UnorderedList: 'Lista desordenada',\n            OrderedList: 'Lista ordenada',\n            TextColor: 'Color de texto',\n            BackgroundColor: 'Color de fondo',\n            InsertLink: 'Insertar el link',\n            Unlink: 'Desconectar',\n            InsertImage: 'Insertar imagen',\n            InsertVideo: 'Insertar vídeo',\n            HorizontalLine: 'Linea horizontal',\n            ClearFormatting: 'Formato claro',\n            HTMLCode: 'Código HTML'\n        },\n        Header: 'Encabezamiento',\n        'Text field': 'Campo de texto',\n        'Text area': 'Área de texto',\n        Number: 'Número',\n        Calculation: 'Cálculo',\n        Paragraph: 'Párrafo',\n        Divider: 'Divisor',\n        'Slide Toggle': 'Alternar diapositiva',\n        Button: 'Botón',\n        Autocomplete: 'Autocompletar',\n        Select: 'Seleccione',\n        'Multi select': 'Selección múltiple',\n        'Radio Button': 'Boton de radio',\n        Radio: 'radio',\n        Checkbox: 'Caja',\n        Datepicker: 'Selector de fechas',\n        GPS: 'GPS',\n        Email: 'Correo electrónico',\n        'Phone number': 'Número de teléfono',\n        Url: 'URL',\n        Currency: 'Currency',\n        Image: 'Imagen',\n        Signature: 'Firma',\n        Drawing: 'Dibujo',\n        'File Upload': 'Subir archivo',\n        'QR Code': 'Código QR',\n        Columns: 'columnas',\n        '2 Column': '2 Columna',\n        '3 Column': '3 Columna',\n        '4 Column': '4 Columna',\n        'Left Split': 'División izquierda',\n        'Right Split': 'División derecha',\n        'Label is required.': 'Se requiere etiqueta.',\n        'Label must be at least 2 characters long.': 'La etiqueta debe tener al menos 2 caracteres.',\n        'Minlength is required.': 'Se requiere longitud mínima.',\n        'Minlength must contain only numbers.': 'Minlength debe contener solo números.',\n        'Option key is required.': 'Se requiere clave de opción.',\n        'Sorry, your option key must be between 1 and 50 characters long.': 'Lo sentimos, su clave de opción debe tener entre 1 y 50 caracteres.',\n        'Sorry, only letters (a-z), numbers (0-9), and periods (- and _) are allowed.': 'Lo sentimos, solo se permiten letras (a-z), números (0-9) y puntos (- y _).',\n        'Option key already exists. Try another.': 'Option key already exists. Try another.',\n        'Option value is required.': 'El valor de la opción es obligatorio.',\n        'Sorry, your option value must be between 1 and 999 characters long.': 'Lo sentimos, el valor de su opción debe tener entre 1 y 999 caracteres.',\n        'Unique id is required.': 'Se requiere identificación única.',\n        'Operation is required.': 'Se requiere operación.',\n        'Operator is required.': 'Se requiere operador.',\n        'Api URL is required.': 'Se requiere la URL de API.',\n        'Are you sure you want to remove this field?': '¿Estás seguro de que quieres eliminar este campo?',\n        'Searched address not found.': 'Dirección buscada no encontrada.',\n        Primary: 'Primario',\n        Secondary: 'Secundario',\n        Success: 'Éxito',\n        Danger: 'Peligro',\n        Info: 'Información',\n        Light: 'Ligero',\n        Dark: 'Oscuro',\n        Link: 'enlace',\n        Submit: 'Entregar',\n        Reset: 'Reiniciar',\n        Basic: 'Básico',\n        Raised: 'Aumentó',\n        Stroked: 'Acariciado',\n        Flat: 'Departamento',\n        Warning: 'Advertencia',\n        Rose: 'Rosa',\n        'Slide me!': '¡Deslízame!',\n        'Enter currency': 'Introducir moneda',\n        'Field 1 + Field 2 = ': 'Campo 1 + Campo 2 = ',\n        'Drag and drop files here or': 'Arrastre y suelte archivos aquí o',\n        Browse: 'Navegar',\n        'Please enter a valid email address': 'Por favor, introduce una dirección de correo electrónico válida',\n        Sorry: 'Lo siento',\n        'must be at least': 'debe ser al menos',\n        'characters long': 'Caracteres largos',\n        'Not a valid Phone Number': 'No es un número de teléfono válido',\n        'Email format should be xyz@example.com': 'El formato del correo electrónico debe ser xyz@example.com',\n        \"Yikes! That's not a valid URL\": '¡Ay! Esa no es una URL válida'\n    };\n\n    const ar = {\n        FormBuilder: {\n            BasicControls: 'ضوابط أساسية',\n            ChoiceControls: 'ضوابط الإختيار',\n            AdvancedControls: 'ضوابط متقدمة',\n            DigitalControls: 'ضوابط رقمية',\n            LayoutControls: 'ضوابط التخطيط',\n            DragAndDrop: 'سحب وإفلات مكونات الإستمارة',\n            Preview: 'معاينة',\n            JsonData: 'Json بيانات',\n            Publish: 'نشر'\n        },\n        FormControl: {\n            Edit: 'تعديل',\n            UniqueId: 'معرف فريد',\n            Label: 'اسم الحقل',\n            CustomCSSClass: 'فئة CSS مخصصة',\n            Tooltip: 'رسالة تعريف الأدوات',\n            InputMask: 'قناع الإدخال',\n            InputMaskCustomErrorMsg: 'رسالة خطأ مخصصة لقناع الإدخال',\n            Value: 'قيمة',\n            Style: 'تصميم',\n            ColumnSize: 'حجم العامود',\n            SelectColumnSize: 'إختر حجم العامود',\n            SelectStyle: 'إختر التصميم',\n            MinLength: 'الحد الأدنى للطول',\n            MaxLength: 'الحد الأقصى للطول',\n            Required: 'إلزامي',\n            NotRequired: 'غير إلزامي',\n            Disabled: 'معطل',\n            Enabled: 'ممكّن',\n            No: 'لا',\n            Yes: 'أجل',\n            Properties: 'خصائص',\n            API: 'API',\n            OptionValue: 'قيمة الخيار',\n            OptionKey: 'مفتاح الخيار',\n            Add: 'إضافة',\n            Delete: 'حذف',\n            Duplicate: 'استنسخ',\n            Imageurl: 'رابط الصورة',\n            Width: 'العرض',\n            Height: 'الطول',\n            ClearPastRequests: 'محو الطلبات السابقة',\n            Method: 'طريقة',\n            EnterRequestURL: 'أدخل رابط الطلب',\n            Key: 'مفتاح',\n            DataType: 'نوع البيانات',\n            SendRequest: 'إرسال الطلب',\n            Headers: 'العناوين',\n            Body: 'المحتوى الرئيسي',\n            UntitledRequest: 'طلب غير معنون',\n            MyWorkspace: 'مساحة العمل الخاصة بي',\n            Response: 'استجابة',\n            IsRequired: 'مطلوب',\n            Color: 'اللون',\n            SelectColor: 'إختر اللون',\n            Type: 'النوع',\n            SelectType: 'إختر النوع',\n            Warning: 'إنذار',\n            EditCalculation: 'تعديل الحساب',\n            SelectOperation: 'اختر العملية',\n            Operation: 'العملية',\n            Operator: 'العامل',\n            SelectOperator: 'اختر العامل',\n            MaxDate: 'الحد الأقصى للتاريخ',\n            MinDate: 'الحد الأدنى للتاريخ',\n            DrawImage: 'رسم صورة',\n            Latitude: 'خط العرض',\n            Longitude: 'خط الطول',\n            SearchLocation: 'ابحث عن موقع',\n            SelectImageShape: 'اختر شكل الصورة',\n            LoadImage: 'حمل الصورة',\n            RemoveImage: 'إزالة الصورة',\n            LeftRotate: 'تدوير لليسار',\n            RightRotate: 'تدوير لليمين',\n            SwapHorizontal: 'تبديل أفقي',\n            SwapVertical: 'تبديل عامودي',\n            ResetImage: 'إعادة تعيين الصورة',\n            ZoomOut: 'تصغير',\n            ZoomIn: 'تكبير',\n            Close: 'إغلاق',\n            CopyData: 'نسخ البيانات',\n            Signature: 'توقيع',\n            SelectValue: 'اختر القيمة',\n            CenterImage: 'توسيط الصورة',\n            CenterImageSize: 'توسيط حجم الصورة',\n            ErrorCorrectionLevel: 'مستوى تصحيح الخطأ',\n            SelectErrorCorrectionLevel: 'اختر مستوى تصحيح الخطأ',\n            QRCodeSize: 'حجم رمز QR',\n            EditParagraph: 'تعديل الفقرة',\n            Save: 'حفظ',\n            Options: 'الإحتمالات',\n            BrushSize: 'حجم الفرشاة',\n            Colors: 'الألوان',\n            ClearCanvas: 'محو محتويات لوح الرسم',\n            FillAspectRatio: 'ملء نسبة العرض إلى الارتفاع',\n            ContainWithinAspectRatio: 'احتواء ضمن نسبة العرض إلى الارتفاع',\n            MoveLeft: 'تحريك لليسار',\n            MoveRight: 'تحريك لليمين',\n            MoveTop: 'تحريك للأعلى',\n            MoveBottom: 'تحريك للأسفل',\n            ImagePreview: 'معاينة الصورة',\n            ImageCrop: 'اقتصاص الصورة',\n            ImageSize: 'حجم الصورة',\n            CropType: 'نوع الاقتصاص',\n            Square: 'مربع',\n            Circle: 'دائرة',\n            Upload: 'رفع',\n            MaxSize: 'الحجم الأقصى (بالكيلوبايت)',\n            MinSize: 'الحجم الأدنى (بالكيلوبايت)',\n            AllowMultipleFile: 'السماح بعدة ملفات',\n            FileTypes: 'أنواع الملفات',\n            DisabledWeekend: 'تعطيل تواريخ عطلة نهاية الأسبوع',\n            EnabledWeekend: 'تمكين تواريخ عطلة نهاية الأسبوع',\n            Readonly: 'للقراءة فقط',\n            CurrencySymbol: 'اختر رمز العملة',\n            AddOption: 'أضف احتمال',\n            AddOperation: 'أضف عملية',\n            Copied: 'تم النسخ',\n            UploadHide: 'إخفاء زر الرفع',\n            UploadShow: 'إظهار زر الرفع',\n            Data: 'البيانات',\n            DrawType: 'نوع الرسم',\n            OuterMargin: 'الهامش الخارجي',\n            Density: 'الكثافة',\n            TypeNumber: 'رقم النوع',\n            Mode: 'وضع',\n            MiddleShape: 'الشكل في الوسط',\n            CornerInnerShape: 'شكل الزاوية الداخلي',\n            CornerOuterShape: 'شكل الزاوية الخارجي',\n            Logo: 'شعار',\n            LogoSize: 'حجم الشعار',\n            LogoMargin: 'هامش الشعار',\n            Background: 'خلفية',\n            Format: 'نسق',\n            CornerInner: 'الزاوية الداخلية',\n            CornerOuter: 'الزاوية الخارجية',\n            HideBackgroundDots: 'إخفاء نقاط الخلفية',\n            Size: 'الحجم',\n            AddColumn: 'إضافة عامود',\n            LabelType: 'نوع الملصق',\n            SelectLabelType: 'اختر نوع الملصق',\n            DefaultView: 'طريقة العرض الافتراضية',\n            hideControl: 'إخفاء التحكم',\n            hideControlInfo: 'إخفاء أو إظهار عناصر التحكم في الأعمدة بشكل ديناميكي استنادًا إلى الخيار المحدد'\n        },\n        editor: {\n            Undo: 'تراجع',\n            Redo: 'إعادة',\n            Bold: 'خط عريض',\n            Italic: 'خط مائل',\n            Underline: 'تسطير',\n            Strikethrough: 'تخطيط (خط متوسط)',\n            Subscript: 'خط منخفض',\n            Superscript: 'خط مرتفع',\n            JustifyLeft: 'محاذاة النص يسارا',\n            JustifyCenter: 'محاذاة للوسط',\n            JustifyRight: 'محاذاة النص يمينا',\n            JustifyFull: 'محاذاة كاملة',\n            Indent: 'إزاحة عبر زيادة مستوى المسافة البادئة',\n            Outdent: 'إزاحة عبر إنقاص مستوى المسافة البادئة',\n            UnorderedList: 'قائمة غير مرتبة',\n            OrderedList: 'قائمة مرتبة',\n            TextColor: 'لون النص',\n            BackgroundColor: 'لون الخلفية',\n            InsertLink: 'أدخل الرابط',\n            Unlink: 'إلغاء الربط',\n            InsertImage: 'إدراج صورة',\n            InsertVideo: 'إدراج فيديو',\n            HorizontalLine: 'خط أفقي',\n            ClearFormatting: 'مسح التنسيقات',\n            HTMLCode: 'شفرة HTML'\n        },\n        Header: 'عنوان',\n        'Text field': 'حقل النص',\n        'Text area': 'منطقة النص',\n        Number: 'رقم',\n        Calculation: 'حساب',\n        Paragraph: 'فقرة',\n        Divider: 'فاصل',\n        'Slide Toggle': 'مفتاح التبديل',\n        Button: 'زر',\n        Autocomplete: 'الإكمال التلقائي',\n        Select: 'قائمة الإختيارات',\n        'Multi select': 'قائمة متعددة الإختيارات',\n        'Radio Button': 'زر انتقاء',\n        Radio: 'راديو',\n        Checkbox: 'خانة تأشير',\n        Datepicker: 'منتقي التاريخ',\n        GPS: 'نظام تحديد المواقع',\n        Email: 'بَريد الكتروني',\n        'Phone number': 'رقم الهاتف',\n        Url: 'عنوان URL',\n        Currency: 'عملة',\n        Image: 'صورة',\n        Signature: 'توقيع',\n        Drawing: 'رسم',\n        'File Upload': 'رفع ملف',\n        'QR Code': 'رمز الاستجابة السريعة(QR)',\n        Columns: 'أعمدة',\n        '2 Column': 'عامودين 2',\n        '3 Column': '3 أعمدة',\n        '4 Column': '4 أعمدة',\n        'Left Split': 'تقسيم أيسر',\n        'Right Split': 'تقسيم أيمن',\n        'Label is required.': 'اسم الحقل مطلوب.',\n        'Label must be at least 2 characters long.': 'اسم الحقل يجب أن يحتوي على حرفين على الأقل.',\n        'Minlength is required.': 'يجب إدخال الحد الأدنى للطول.',\n        'Minlength must contain only numbers.': 'حقل الحد الأدنى للطول يجب أن يحتوي على أرقام فقط.',\n        'Option key is required.': 'مفتاح الخيار مطلوب.',\n        'Sorry, your option key must be between 1 and 50 characters long.': 'عذرًا، يجب أن يكون مفتاح الخيار الخاص بك بين 1 و 50 حرفًا ',\n        'Sorry, only letters (a-z), numbers (0-9), and periods (- and _) are allowed.': ' (a-z) عذرًا، يُسمح فقط بالأحرف والأرقام (0-9) والنقاط (.) والشرطات (- و_). ',\n        'Option key already exists. Try another.': 'مفتاح الخيار موجود بالفعل. جرب مفتاحا آخر ',\n        'Option value is required.': 'قيمة الخيار مطلوبة.',\n        'Sorry, your option value must be between 1 and 999 characters long.': 'عذرًا، يجب أن يتراوح طول قيمة الخيار بين 1 و 999 حرفًا.',\n        'Unique id is required.': 'المعرف الفريد مطلوب.',\n        'Operation is required.': 'العملية مطلوبة.',\n        'Operator is required.': 'العامل مطلوب.',\n        'Api URL is required.': 'مطلوب عنوان الرابط API',\n        'Are you sure you want to remove this field?': 'هل أنت متأكد أنك تريد إزالة هذا الحقل؟',\n        'Searched address not found.': 'العنوان الذي تم البحث عنه غير موجود.',\n        Primary: 'أساسي',\n        Secondary: 'ثانوي',\n        Success: 'نجاح',\n        Danger: 'خطر',\n        Info: 'معلومات',\n        Light: 'ضوء',\n        Dark: 'مظلم',\n        Link: 'وصلة',\n        Submit: 'يُقدِّم',\n        Reset: 'إعادة ضبط',\n        Basic: 'أساسي',\n        Raised: 'نشأ',\n        Stroked: 'السكتة الدماغية',\n        Flat: 'مستوي',\n        Warning: 'إنذار',\n        Rose: 'وَردَة',\n        'Slide me!': 'حركني!',\n        'Enter currency': 'أدخل العملة',\n        'Field 1 + Field 2 = ': 'الحقل 1 + الحقل 2 =',\n        'Drag and drop files here or': 'قم بسحب وإسقاط الملفات هنا أو',\n        Browse: 'تصفح',\n        'Please enter a valid email address': 'يرجى إدخال عنوان بريد إلكتروني صالح',\n        Sorry: 'آسف',\n        'must be at least': 'يجب أن يكون على الأقل',\n        'characters long': 'الشخصيات طويلة',\n        'Not a valid Phone Number': 'رقم هاتف غير صالح',\n        'Email format should be xyz@example.com': 'يجب أن يكون تنسيق البريد الإلكتروني xyz@example.com',\n        \"Yikes! That's not a valid URL\": 'نعم! هذا ليس عنوان URL صالحًا'\n    };\n\n    const libraryLanguages = {\n        en,\n        es,\n        fr,\n        ar\n    };\n\n    return libraryLanguages;\n}\nexport const Languages = getLanguages();\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Observable, of } from 'rxjs';\nimport { Languages } from './i18n/language';\nimport { AswTranslateLoader } from './translate.loader';\n\nexport class AswTranslateHttpLoader implements AswTranslateLoader {\n    /**\n     * Gets the translations from the server\n     */\n    public getTranslation(lang: string): Observable<any> {\n        return of(Languages[lang]);\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { EventEmitter, Inject, Injectable, InjectionToken } from '@angular/core';\nimport { concat, defer, forkJoin, isObservable, Observable, of } from 'rxjs';\nimport { concatMap, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { AswMissingTranslationHandler, AswMissingTranslationHandlerParams } from './missing-translation-handler';\nimport { AswTranslateCompiler } from './translate.compiler';\nimport { AswTranslateLoader } from './translate.loader';\nimport { AswTranslateParser } from './translate.parser';\n\nimport { isDefined, mergeDeep } from '@asoftwareworld/form-builder-pro/utils';\nimport { AswTranslateStore } from './translate.store';\n\nexport const USE_STORE = new InjectionToken<string>('USE_STORE');\nexport const USE_DEFAULT_LANG = new InjectionToken<string>('USE_DEFAULT_LANG');\nexport const DEFAULT_LANGUAGE = new InjectionToken<string>('DEFAULT_LANGUAGE');\nexport const USE_EXTEND = new InjectionToken<string>('USE_EXTEND');\n\nexport interface AswTranslationChangeEvent {\n    translations: any;\n    lang: string;\n}\n\nexport interface AswLangChangeEvent {\n    lang: string;\n    translations: any;\n}\n\nexport interface AswDefaultLangChangeEvent {\n    lang: string;\n    translations: any;\n}\n\ndeclare interface Window {\n    navigator: any;\n}\n\ndeclare const window: Window;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AswTranslateService {\n    private loadingTranslations!: Observable<any>;\n    private pending = false;\n    private onTranslationChange$: EventEmitter<AswTranslationChangeEvent> = new EventEmitter<AswTranslationChangeEvent>();\n    private onLangChange$: EventEmitter<AswLangChangeEvent> = new EventEmitter<AswLangChangeEvent>();\n    private onDefaultLangChange$: EventEmitter<AswDefaultLangChangeEvent> = new EventEmitter<AswDefaultLangChangeEvent>();\n    private defaultLang$!: string;\n    private currentLang$!: string;\n    private langs$: Array<string> = [];\n    private translations$: any = {};\n    private translationRequests$: any = {};\n\n    /**\n     * An EventEmitter to listen to translation change events\n     * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n     *     // do something\n     * });\n     */\n    get onTranslationChange(): EventEmitter<AswTranslationChangeEvent> {\n        return this.isolate ? this.onTranslationChange$ : this.store.onTranslationChange;\n    }\n\n    /**\n     * An EventEmitter to listen to lang change events\n     * onLangChange.subscribe((params: AswLangChangeEvent) => {\n     *     // do something\n     * });\n     */\n    get onLangChange(): EventEmitter<AswLangChangeEvent> {\n        return this.isolate ? this.onLangChange$ : this.store.onLangChange;\n    }\n\n    /**\n     * An EventEmitter to listen to default lang change events\n     * onDefaultLangChange.subscribe((params: AswDefaultLangChangeEvent) => {\n     *     // do something\n     * });\n     */\n    get onDefaultLangChange(): any {\n        return this.isolate ? this.onDefaultLangChange$ : this.store.onDefaultLangChange;\n    }\n\n    /**\n     * The default lang to fallback when translations are missing on the current lang\n     */\n    get defaultLang(): string {\n        return this.isolate ? this.defaultLang$ : this.store.defaultLang;\n    }\n\n    set defaultLang(defaultLang: string) {\n        if (this.isolate) {\n            this.defaultLang$ = defaultLang;\n        } else {\n            this.store.defaultLang = defaultLang;\n        }\n    }\n\n    /**\n     * The lang currently used\n     */\n    get currentLang(): string {\n        return this.isolate ? this.currentLang$ : this.store.currentLang;\n    }\n\n    set currentLang(currentLang: string) {\n        if (this.isolate) {\n            this.currentLang$ = currentLang;\n        } else {\n            this.store.currentLang = currentLang;\n        }\n    }\n\n    /**\n     * an array of langs\n     */\n    get langs(): string[] {\n        return this.isolate ? this.langs$ : this.store.langs;\n    }\n\n    set langs(langs: string[]) {\n        if (this.isolate) {\n            this.langs$ = langs;\n        } else {\n            this.store.langs = langs;\n        }\n    }\n\n    /**\n     * a list of translations per lang\n     */\n    get translations(): any {\n        return this.isolate ? this.translations$ : this.store.translations;\n    }\n\n    set translations(translations: any) {\n        if (this.isolate) {\n            this.translations$ = translations;\n        } else {\n            this.store.translations = translations;\n        }\n    }\n\n    /**\n     *\n     * @param store an instance of the store (that is supposed to be unique)\n     * @param currentLoader An instance of the loader currently used\n     * @param compiler An instance of the compiler currently used\n     * @param parser An instance of the parser currently used\n     * @param missingTranslationHandler A handler for missing translations.\n     * @param useDefaultLang whether we should use default language translation when current language translation is missing.\n     * @param isolate whether this service should use the store or not\n     * @param extend To make a child module extend (and use) translations from parent modules.\n     * @param defaultLanguage Set the default language using configuration\n     */\n    constructor(\n        public store: AswTranslateStore,\n        public currentLoader: AswTranslateLoader,\n        public compiler: AswTranslateCompiler,\n        public parser: AswTranslateParser,\n        public missingTranslationHandler: AswMissingTranslationHandler,\n        @Inject(USE_DEFAULT_LANG) private useDefaultLang: boolean = true,\n        @Inject(USE_STORE) private isolate: boolean = false,\n        @Inject(USE_EXTEND) private extend: boolean = false,\n        @Inject(DEFAULT_LANGUAGE) defaultLanguage: string\n    ) {\n        /** set the default language from configuration */\n        if (defaultLanguage) {\n            this.setDefaultLang(defaultLanguage);\n        }\n    }\n\n    /**\n     * Sets the default language to use as a fallback\n     */\n    public setDefaultLang(lang: string): void {\n        if (lang === this.defaultLang) {\n            return;\n        }\n\n        const pending = this.retrieveTranslations(lang);\n\n        if (typeof pending !== 'undefined') {\n            // on init set the defaultLang immediately\n            if (this.defaultLang == null) {\n                this.defaultLang = lang;\n            }\n\n            pending.pipe(take(1)).subscribe((res: any) => {\n                this.changeDefaultLang(lang);\n            });\n        } else {\n            // we already have this language\n            this.changeDefaultLang(lang);\n        }\n    }\n\n    /**\n     * Gets the default language used\n     */\n    public getDefaultLang(): string {\n        return this.defaultLang;\n    }\n\n    /**\n     * Changes the lang currently used\n     */\n    public use(lang: string): Observable<any> {\n        // don't change the language if the language given is already selected\n        if (lang === this.currentLang) {\n            return of(this.translations[lang]);\n        }\n\n        const pending = this.retrieveTranslations(lang);\n\n        if (typeof pending !== 'undefined') {\n            // on init set the currentLang immediately\n            if (!this.currentLang) {\n                this.currentLang = lang;\n            }\n\n            pending.pipe(take(1)).subscribe((res: any) => {\n                this.changeLang(lang);\n            });\n\n            return pending;\n        } else {\n            // we have this language, return an Observable\n            this.changeLang(lang);\n\n            return of(this.translations[lang]);\n        }\n    }\n\n    /**\n     * Retrieves the given translations\n     */\n    private retrieveTranslations(lang: string): Observable<any> | undefined {\n        let pending: Observable<any> | undefined;\n\n        // if this language is unavailable or extend is true, ask for it\n        if (typeof this.translations[lang] === 'undefined' || this.extend) {\n            this.translationRequests$[lang] = this.translationRequests$[lang] || this.getTranslation(lang);\n            pending = this.translationRequests$[lang];\n        }\n\n        return pending;\n    }\n\n    /**\n     * Gets an object of translations for a given language with the current loader\n     * and passes it through the compiler\n     */\n    public getTranslation(lang: string): Observable<any> {\n        this.pending = true;\n        const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\n\n        this.loadingTranslations = loadingTranslations.pipe(\n            map((res: object) => this.compiler.compileTranslations(res, lang)),\n            shareReplay(1),\n            take(1)\n        );\n\n        this.loadingTranslations.subscribe({\n            next: (res: object) => {\n                this.translations[lang] = this.extend && this.translations[lang] ? { ...res, ...this.translations[lang] } : res;\n                this.updateLangs();\n                this.pending = false;\n            },\n            error: (err: any) => {\n                this.pending = false;\n            }\n        });\n\n        return loadingTranslations;\n    }\n\n    /**\n     * Manually sets an object of translations for a given language\n     * after passing it through the compiler\n     */\n    public setTranslation(lang: string, translations: object, shouldMerge: boolean = false): void {\n        translations = this.compiler.compileTranslations(translations, lang);\n        if ((shouldMerge || this.extend) && this.translations[lang]) {\n            this.translations[lang] = mergeDeep(this.translations[lang], translations);\n        } else {\n            this.translations[lang] = translations;\n        }\n        this.updateLangs();\n        this.onTranslationChange.emit({ lang, translations: this.translations[lang] });\n    }\n\n    /**\n     * Returns an array of currently available langs\n     */\n    public getLangs(): Array<string> {\n        return this.langs;\n    }\n\n    /**\n     * Add available langs\n     */\n    public addLangs(langs: Array<string>): void {\n        langs.forEach((lang: string) => {\n            if (this.langs.indexOf(lang) === -1) {\n                this.langs.push(lang);\n            }\n        });\n    }\n\n    /**\n     * Update the list of available langs\n     */\n    private updateLangs(): void {\n        this.addLangs(Object.keys(this.translations));\n    }\n\n    /**\n     * Returns the parsed result of the translations\n     */\n    public getParsedResult(translations: any, key: any, interpolateParams?: object): any {\n        let res: string | Observable<string> | undefined;\n\n        if (key instanceof Array) {\n            const result: any = {};\n            let observables = false;\n            for (const k of key) {\n                result[k] = this.getParsedResult(translations, k, interpolateParams);\n                if (isObservable(result[k])) {\n                    observables = true;\n                }\n            }\n            if (observables) {\n                const sources = key.map((k) => (isObservable(result[k]) ? result[k] : of(result[k] as string)));\n                return forkJoin(sources).pipe(\n                    map((arr: any) => {\n                        const obj: any = {};\n                        arr.forEach((value: string, index: number) => {\n                            obj[key[index]] = value;\n                        });\n                        return obj;\n                    })\n                );\n            }\n            return result;\n        }\n\n        if (translations) {\n            res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n        }\n\n        if (typeof res === 'undefined' && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n            res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n        }\n\n        if (typeof res === 'undefined') {\n            const params: AswMissingTranslationHandlerParams = { key, aswTranslateService: this };\n            if (typeof interpolateParams !== 'undefined') {\n                params.interpolateParams = interpolateParams;\n            }\n            res = this.missingTranslationHandler.handle(params);\n        }\n\n        return typeof res !== 'undefined' ? res : key;\n    }\n\n    /**\n     * Gets the translated value of a key (or an array of keys)\n     * @returns the translated key, or an object of translated keys\n     */\n    public get(key: string | Array<string>, interpolateParams?: object): Observable<string | any> {\n        if (!isDefined(key) || !key.length) {\n            throw new Error(`Parameter 'key' required`);\n        }\n        // check if we are loading a new translation to use\n        if (this.pending) {\n            return this.loadingTranslations.pipe(\n                concatMap((res: any) => {\n                    res = this.getParsedResult(res, key, interpolateParams);\n                    return isObservable(res) ? res : of(res);\n                })\n            );\n        } else {\n            const res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n            return isObservable(res) ? res : of(res);\n        }\n    }\n\n    /**\n     * Returns a stream of translated values of a key (or an array of keys) which updates\n     * whenever the translation changes.\n     * @returns A stream of the translated key, or an object of translated keys\n     */\n    public getStreamOnTranslationChange(key: string | Array<string>, interpolateParams?: object): Observable<string | any> {\n        if (!isDefined(key) || !key.length) {\n            throw new Error(`Parameter 'key' required`);\n        }\n\n        return concat(\n            defer(() => this.get(key, interpolateParams)),\n            this.onTranslationChange.pipe(\n                switchMap((event: AswTranslationChangeEvent) => {\n                    const res = this.getParsedResult(event.translations, key, interpolateParams);\n                    if (typeof res.subscribe === 'function') {\n                        return res;\n                    } else {\n                        return of(res);\n                    }\n                })\n            )\n        );\n    }\n\n    /**\n     * Returns a stream of translated values of a key (or an array of keys) which updates\n     * whenever the language changes.\n     * @returns A stream of the translated key, or an object of translated keys\n     */\n    public stream(key: string | Array<string>, interpolateParams?: object): Observable<string | any> {\n        if (!isDefined(key) || !key.length) {\n            throw new Error(`Parameter 'key' required`);\n        }\n\n        return concat(\n            defer(() => this.get(key, interpolateParams)),\n            this.onLangChange.pipe(\n                switchMap((event: AswLangChangeEvent) => {\n                    const res = this.getParsedResult(event.translations, key, interpolateParams);\n                    return isObservable(res) ? res : of(res);\n                })\n            )\n        );\n    }\n\n    /**\n     * Returns a translation instantly from the internal state of loaded translation.\n     * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n     */\n    public instant(key: string | Array<string>, interpolateParams?: object): string | any {\n        if (!isDefined(key) || !key.length) {\n            throw new Error(`Parameter 'key' required`);\n        }\n\n        const res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n        if (isObservable(res)) {\n            if (key instanceof Array) {\n                const obj: any = {};\n                key.forEach((value: string, index: number) => {\n                    obj[key[index]] = key[index];\n                });\n                return obj;\n            }\n            return key;\n        } else {\n            return res;\n        }\n    }\n\n    /**\n     * Sets the translated value of a key, after compiling it\n     */\n    public set(key: string, value: string, lang: string = this.currentLang): void {\n        this.translations[lang][key] = this.compiler.compile(value, lang);\n        this.updateLangs();\n        this.onTranslationChange.emit({ lang, translations: this.translations[lang] });\n    }\n\n    /**\n     * Changes the current lang\n     */\n    private changeLang(lang: string): void {\n        this.currentLang = lang;\n        this.onLangChange.emit({ lang, translations: this.translations[lang] });\n\n        // if there is no default lang, use the one that we just set\n        if (this.defaultLang == null) {\n            this.changeDefaultLang(lang);\n        }\n    }\n\n    /**\n     * Changes the default lang\n     */\n    private changeDefaultLang(lang: string): void {\n        this.defaultLang = lang;\n        this.onDefaultLangChange.emit({ lang, translations: this.translations[lang] });\n    }\n\n    /**\n     * Allows to reload the lang file from the file\n     */\n    public reloadLang(lang: string): Observable<any> {\n        this.resetLang(lang);\n        return this.getTranslation(lang);\n    }\n\n    /**\n     * Deletes inner translation\n     */\n    public resetLang(lang: string): void {\n        this.translationRequests$[lang] = undefined;\n        this.translations[lang] = undefined;\n    }\n\n    /**\n     * Returns the language code name from the browser, e.g. 'de'\n     */\n    public getBrowserLang(): string | undefined {\n        if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n            return undefined;\n        }\n\n        let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\n        browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n\n        if (typeof browserLang === 'undefined') {\n            return undefined;\n        }\n\n        if (browserLang.indexOf('-') !== -1) {\n            browserLang = browserLang.split('-')[0];\n        }\n\n        if (browserLang.indexOf('_') !== -1) {\n            browserLang = browserLang.split('_')[0];\n        }\n\n        return browserLang;\n    }\n\n    /**\n     * Returns the culture language code name from the browser, e.g. 'de-DE'\n     */\n    public getBrowserCultureLang(): string | undefined {\n        if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n            return undefined;\n        }\n\n        let browserCultureLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\n        browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n\n        return browserCultureLang;\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { AfterViewChecked, ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { equals, isDefined } from '@asoftwareworld/form-builder-pro/utils';\nimport { isObservable, Subscription } from 'rxjs';\nimport { AswDefaultLangChangeEvent, AswLangChangeEvent, AswTranslateService, AswTranslationChangeEvent } from './translate.service';\n\n@Directive({\n    selector: '[aswTranslate],[asw-translate]'\n})\nexport class AswTranslateDirective implements AfterViewChecked, OnDestroy {\n    key!: string;\n    lastParams: any;\n    currentParams: any;\n    onLangChangeSub!: Subscription;\n    onDefaultLangChangeSub!: Subscription;\n    onTranslationChangeSub!: Subscription;\n\n    @Input() set translate(key: string) {\n        if (key) {\n            this.key = key;\n            this.checkNodes();\n        }\n    }\n\n    @Input() set translateParams(params: any) {\n        if (!equals(this.currentParams, params)) {\n            this.currentParams = params;\n            this.checkNodes(true);\n        }\n    }\n\n    constructor(\n        private translateService: AswTranslateService,\n        private element: ElementRef,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        // subscribe to onTranslationChange event, in case the translations of the current lang change\n        if (!this.onTranslationChangeSub) {\n            this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((event: AswTranslationChangeEvent) => {\n                if (event.lang === this.translateService.currentLang) {\n                    this.checkNodes(true, event.translations);\n                }\n            });\n        }\n\n        // subscribe to onLangChange event, in case the language changes\n        if (!this.onLangChangeSub) {\n            this.onLangChangeSub = this.translateService.onLangChange.subscribe((event: AswLangChangeEvent) => {\n                this.checkNodes(true, event.translations);\n            });\n        }\n\n        // subscribe to onDefaultLangChange event, in case the default language changes\n        if (!this.onDefaultLangChangeSub) {\n            this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((event: AswDefaultLangChangeEvent) => {\n                this.checkNodes(true);\n            });\n        }\n    }\n\n    ngAfterViewChecked(): void {\n        this.checkNodes();\n    }\n\n    checkNodes(forceUpdate = false, translations?: any): void {\n        let nodes: NodeList = this.element.nativeElement.childNodes;\n        // if the element is empty\n        if (!nodes.length) {\n            // we add the key as content\n            this.setContent(this.element.nativeElement, this.key);\n            nodes = this.element.nativeElement.childNodes;\n        }\n        // tslint:disable-next-line:prefer-for-of\n        for (let i = 0; i < nodes.length; ++i) {\n            const node: any = nodes[i];\n            if (node.nodeType === 3) {\n                // node type 3 is a text node\n                let key!: string;\n                if (forceUpdate) {\n                    node.lastKey = null;\n                }\n                if (isDefined(node.lookupKey)) {\n                    key = node.lookupKey;\n                } else if (this.key) {\n                    key = this.key;\n                } else {\n                    const content = this.getContent(node);\n                    const trimmedContent = content.trim();\n                    if (trimmedContent.length) {\n                        node.lookupKey = trimmedContent;\n                        // we want to use the content as a key, not the translation value\n                        if (content !== node.currentValue) {\n                            key = trimmedContent;\n                            // the content was changed from the user, we'll use it as a reference if needed\n                            node.originalContent = content || node.originalContent;\n                        } else if (node.originalContent) {\n                            // the content seems ok, but the lang has changed\n                            // the current content is the translation, not the key, use the last real content as key\n                            key = node.originalContent.trim();\n                        } else if (content !== node.currentValue) {\n                            // we want to use the content as a key, not the translation value\n                            key = trimmedContent;\n                            // the content was changed from the user, we'll use it as a reference if needed\n                            node.originalContent = content || node.originalContent;\n                        }\n                    }\n                }\n                this.updateValue(key, node, translations);\n            }\n        }\n    }\n\n    updateValue(key: string, node: any, translations: any): void {\n        if (key) {\n            if (node.lastKey === key && this.lastParams === this.currentParams) {\n                return;\n            }\n\n            this.lastParams = this.currentParams;\n\n            const onTranslation = (res: unknown) => {\n                if (res !== key) {\n                    node.lastKey = key;\n                }\n                if (!node.originalContent) {\n                    node.originalContent = this.getContent(node);\n                }\n                node.currentValue = isDefined(res) ? res : node.originalContent || key;\n                // we replace in the original content to preserve spaces that we might have trimmed\n                this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n                this.changeDetectorRef.markForCheck();\n            };\n\n            if (isDefined(translations)) {\n                const res = this.translateService.getParsedResult(translations, key, this.currentParams);\n                if (isObservable(res)) {\n                    res.subscribe({ next: onTranslation });\n                } else {\n                    onTranslation(res);\n                }\n            } else {\n                this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n            }\n        }\n    }\n\n    getContent(node: any): string {\n        return isDefined(node.textContent) ? node.textContent : node.data;\n    }\n\n    setContent(node: any, content: string): void {\n        if (isDefined(node.textContent)) {\n            node.textContent = content;\n        } else {\n            node.data = content;\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.onLangChangeSub) {\n            this.onLangChangeSub.unsubscribe();\n        }\n\n        if (this.onDefaultLangChangeSub) {\n            this.onDefaultLangChangeSub.unsubscribe();\n        }\n\n        if (this.onTranslationChangeSub) {\n            this.onTranslationChangeSub.unsubscribe();\n        }\n    }\n}\n","import { ChangeDetectorRef, Injectable, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { equals, isDefined } from '@asoftwareworld/form-builder-pro/utils';\nimport { isObservable, Subscription } from 'rxjs';\nimport { AswLangChangeEvent, AswTranslateService, AswTranslationChangeEvent } from './translate.service';\n\n@Injectable()\n@Pipe({\n    name: 'aswTranslate',\n    pure: false // required to update the value when the promise is resolved\n})\nexport class AswTranslatePipe implements PipeTransform, OnDestroy {\n    value = '';\n    lastKey: string | null = null;\n    lastParams: any[] = [];\n    onTranslationChange: Subscription | undefined;\n    onLangChange: Subscription | undefined;\n    onDefaultLangChange: Subscription | undefined;\n\n    constructor(\n        private translate: AswTranslateService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {}\n\n    updateValue(key: string, interpolateParams?: object, translations?: any): void {\n        const onTranslation = (res: string) => {\n            this.value = res !== undefined ? res : key;\n            this.lastKey = key;\n            this.changeDetectorRef.markForCheck();\n        };\n        if (translations) {\n            const res = this.translate.getParsedResult(translations, key, interpolateParams);\n            if (isObservable(res.subscribe)) {\n                res.subscribe(onTranslation);\n            } else {\n                onTranslation(res);\n            }\n        }\n        this.translate.get(key, interpolateParams).subscribe(onTranslation);\n    }\n\n    transform(query: string, ...args: any[]): any {\n        if (!query || !query.length) {\n            return query;\n        }\n\n        // if we ask another time for the same key, return the last value\n        if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n            return this.value;\n        }\n\n        let interpolateParams: object | undefined;\n        if (isDefined(args[0]) && args.length) {\n            if (typeof args[0] === 'string' && args[0].length) {\n                // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n                // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n                const validArgs: string = args[0].replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":').replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n                try {\n                    interpolateParams = JSON.parse(validArgs);\n                } catch (e) {\n                    throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n                }\n            } else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n                interpolateParams = args[0];\n            }\n        }\n\n        // store the query, in case it changes\n        this.lastKey = query;\n\n        // store the params, in case they change\n        this.lastParams = args;\n\n        // set the value\n        this.updateValue(query, interpolateParams);\n\n        // if there is a subscription to onLangChange, clean it\n        this._dispose();\n\n        // subscribe to onTranslationChange event, in case the translations change\n        if (!this.onTranslationChange) {\n            this.onTranslationChange = this.translate.onTranslationChange.subscribe((event: AswTranslationChangeEvent) => {\n                if (this.lastKey && event.lang === this.translate.currentLang) {\n                    this.lastKey = null;\n                    this.updateValue(query, interpolateParams, event.translations);\n                }\n            });\n        }\n\n        // subscribe to onLangChange event, in case the language changes\n        if (!this.onLangChange) {\n            this.onLangChange = this.translate.onLangChange.subscribe((event: AswLangChangeEvent) => {\n                if (this.lastKey) {\n                    this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n                    this.updateValue(query, interpolateParams, event.translations);\n                }\n            });\n        }\n\n        // subscribe to onDefaultLangChange event, in case the default language changes\n        if (!this.onDefaultLangChange) {\n            this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(() => {\n                if (this.lastKey) {\n                    this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n                    this.updateValue(query, interpolateParams);\n                }\n            });\n        }\n\n        return this.value;\n    }\n\n    /**\n     * Clean any existing subscription to change events\n     */\n    private _dispose(): void {\n        if (typeof this.onTranslationChange !== 'undefined') {\n            this.onTranslationChange.unsubscribe();\n            this.onTranslationChange = undefined;\n        }\n        if (typeof this.onLangChange !== 'undefined') {\n            this.onLangChange.unsubscribe();\n            this.onLangChange = undefined;\n        }\n        if (typeof this.onDefaultLangChange !== 'undefined') {\n            this.onDefaultLangChange.unsubscribe();\n            this.onDefaultLangChange = undefined;\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._dispose();\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { AswFakeMissingTranslationHandler, AswMissingTranslationHandler } from './missing-translation-handler';\nimport { AswTranslateCompiler, AswTranslateFakeCompiler } from './translate.compiler';\nimport { AswTranslateDirective } from './translate.directive';\nimport { AswTranslateFakeLoader, AswTranslateLoader } from './translate.loader';\nimport { AswTranslateDefaultParser, AswTranslateParser } from './translate.parser';\nimport { AswTranslatePipe } from './translate.pipe';\nimport { AswTranslateService, DEFAULT_LANGUAGE, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE } from './translate.service';\nimport { AswTranslateStore } from './translate.store';\n\nexport interface AswTranslateModuleConfig {\n    loader?: Provider;\n    compiler?: Provider;\n    parser?: Provider;\n    missingTranslationHandler?: Provider;\n    // isolate the service instance, only works for lazy loaded modules or components with the 'providers' property\n    isolate?: boolean;\n    // extends translations for a given language instead of ignoring them if present\n    extend?: boolean;\n    useDefaultLang?: boolean;\n    defaultLanguage?: string;\n}\n\n@NgModule({\n    declarations: [AswTranslatePipe, AswTranslateDirective],\n    exports: [AswTranslatePipe, AswTranslateDirective]\n})\nexport class AswTranslateModule {\n    /**\n     * Use this method in your root module to provide the TranslateService\n     */\n    static forRoot(config: AswTranslateModuleConfig = {}): ModuleWithProviders<AswTranslateModule> {\n        return {\n            ngModule: AswTranslateModule,\n            providers: [\n                config.loader || { provide: AswTranslateLoader, useClass: AswTranslateFakeLoader },\n                config.compiler || { provide: AswTranslateCompiler, useClass: AswTranslateFakeCompiler },\n                config.parser || { provide: AswTranslateParser, useClass: AswTranslateDefaultParser },\n                config.missingTranslationHandler || { provide: AswMissingTranslationHandler, useClass: AswFakeMissingTranslationHandler },\n                AswTranslateStore,\n                { provide: USE_STORE, useValue: config.isolate },\n                { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n                { provide: USE_EXTEND, useValue: config.extend },\n                { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n                AswTranslateService\n            ]\n        };\n    }\n\n    /**\n     * Use this method in your other (non root) modules to import the directive/pipe\n     */\n    static forChild(config: AswTranslateModuleConfig = {}): ModuleWithProviders<AswTranslateModule> {\n        return {\n            ngModule: AswTranslateModule,\n            providers: [\n                config.loader || { provide: AswTranslateLoader, useClass: AswTranslateFakeLoader },\n                config.compiler || { provide: AswTranslateCompiler, useClass: AswTranslateFakeCompiler },\n                config.parser || { provide: AswTranslateParser, useClass: AswTranslateDefaultParser },\n                config.missingTranslationHandler || { provide: AswMissingTranslationHandler, useClass: AswFakeMissingTranslationHandler },\n                { provide: USE_STORE, useValue: config.isolate },\n                { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n                { provide: USE_EXTEND, useValue: config.extend },\n                { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n                AswTranslateService\n            ]\n        };\n    }\n}\n","export class SHA256 {\n    static hash(msg: any): any {\n        msg = SHA256.utf8Encode(msg);\n        // constants [§4.2.2]\n        const K = [\n            0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6,\n            0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb,\n            0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee,\n            0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n        ];\n\n        // initial hash value\n        const hex: any = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n\n        // PREPROCESSING\n        msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string\n\n        // convert string msg into 512-bit blocks (array of 16 32-bit integers)\n        // length (in 32-bit integers) of msg + ‘1’ + appended length\n        const l = msg.length / 4 + 2;\n\n        // number of 16-integer (512-bit) blocks required to hold 'l' ints\n        const N = Math.ceil(l / 16);\n\n        // message M is N×16 array of 32-bit integers\n        const M = new Array(N);\n\n        for (let i = 0; i < N; i++) {\n            M[i] = new Array(16);\n            for (let j = 0; j < 16; j++) {\n                // encode 4 chars per integer (64 per block), big-endian encoding\n                M[i][j] = (msg.charCodeAt(i * 64 + j * 4 + 0) << 24) | (msg.charCodeAt(i * 64 + j * 4 + 1) << 16) | (msg.charCodeAt(i * 64 + j * 4 + 2) << 8) | (msg.charCodeAt(i * 64 + j * 4 + 3) << 0);\n            } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n        }\n        // add length (in bits) into final pair of 32-bit integers (big-endian)\n        // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n        // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n        const lenHi = ((msg.length - 1) * 8) / Math.pow(2, 32);\n        const lenLo = ((msg.length - 1) * 8) >>> 0;\n        M[N - 1][14] = Math.floor(lenHi);\n        M[N - 1][15] = lenLo;\n\n        // HASH COMPUTATION\n        for (let i = 0; i < N; i++) {\n            const W = new Array(64);\n\n            // 1 - prepare message schedule 'W'\n            for (let t = 0; t < 16; t++) {\n                W[t] = M[i][t];\n            }\n            for (let t = 16; t < 64; t++) {\n                W[t] = (SHA256.σ1(W[t - 2]) + W[t - 7] + SHA256.σ0(W[t - 15]) + W[t - 16]) >>> 0;\n            }\n\n            // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value\n            let a = hex[0];\n            let b = hex[1];\n            let c = hex[2];\n            let d = hex[3];\n            let e = hex[4];\n            let f = hex[5];\n            let g = hex[6];\n            let h = hex[7];\n\n            // 3 - main loop (note '>>> 0' for 'addition modulo 2^32')\n            for (let t = 0; t < 64; t++) {\n                const T1 = h + SHA256.Σ1(e) + SHA256.choice(e, f, g) + K[t] + W[t];\n                const T2 = SHA256.Σ0(a) + SHA256.majority(a, b, c);\n                h = g;\n                g = f;\n                f = e;\n                e = (d + T1) >>> 0;\n                d = c;\n                c = b;\n                b = a;\n                a = (T1 + T2) >>> 0;\n            }\n\n            // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32')\n            hex[0] = (hex[0] + a) >>> 0;\n            hex[1] = (hex[1] + b) >>> 0;\n            hex[2] = (hex[2] + c) >>> 0;\n            hex[3] = (hex[3] + d) >>> 0;\n            hex[4] = (hex[4] + e) >>> 0;\n            hex[5] = (hex[5] + f) >>> 0;\n            hex[6] = (hex[6] + g) >>> 0;\n            hex[7] = (hex[7] + h) >>> 0;\n        }\n\n        // convert H0..H7 to hex strings (with leading zeros)\n        for (let h = 0; h < hex.length; h++) {\n            hex[h] = ('00000000' + hex[h].toString(16)).slice(-8);\n        }\n        return hex.join('');\n    }\n\n    private static utf8Encode(str: string): string {\n        try {\n            return new TextEncoder().encode(str).reduce((prev, curr) => prev + String.fromCharCode(curr), '');\n        } catch (e) {\n            // no TextEncoder available?\n            return unescape(encodeURIComponent(str));\n        }\n    }\n\n    /**\n     * Rotates right (circular right shift) value x by n positions.\n     * @private\n     */\n    private static ROTR(n: number, x: any): number {\n        return (x >>> n) | (x << (32 - n));\n    }\n\n    /**\n     * Logical functions\n     * @private\n     */\n    private static Σ0(x: any): number {\n        return SHA256.ROTR(2, x) ^ SHA256.ROTR(13, x) ^ SHA256.ROTR(22, x);\n    }\n    private static Σ1(x: any): number {\n        return SHA256.ROTR(6, x) ^ SHA256.ROTR(11, x) ^ SHA256.ROTR(25, x);\n    }\n    private static σ0(x: any): number {\n        return SHA256.ROTR(7, x) ^ SHA256.ROTR(18, x) ^ (x >>> 3);\n    }\n    private static σ1(x: any): number {\n        return SHA256.ROTR(17, x) ^ SHA256.ROTR(19, x) ^ (x >>> 10);\n    }\n    private static choice(x: any, y: any, z: any): number {\n        return (x & y) ^ (~x & z);\n    }\n    private static majority(x: any, y: any, z: any): number {\n        return (x & y) ^ (x & z) ^ (y & z);\n    }\n}\n","import { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\n\nexport class Base64Decode {\n    /**\n     * Returns a URL-safe plaintext decoded string from b64 encoded input.\n     */\n    static decode(input: string): string {\n        let encodedString = input.replace(/-/g, '+').replace(/_/g, '/');\n        switch (encodedString.length % 4) {\n            case 0:\n                break;\n            case 2:\n                encodedString += '==';\n                break;\n            case 3:\n                encodedString += '=';\n                break;\n            default:\n                throw new Error('Invalid base64 string');\n        }\n\n        const inputUtf8Arr = this.base64DecToArr(encodedString);\n        return ObjectUtils.utf8ArrToString(inputUtf8Arr);\n    }\n\n    /**\n     * Decodes base64 into Uint8Array\n     */\n    private static base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\n        const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n        const nInLen = sB64Enc.length;\n        const nOutLen = nBlockSize ? Math.ceil(((nInLen * 3 + 1) >>> 2) / nBlockSize) * nBlockSize : (nInLen * 3 + 1) >>> 2;\n        const aBytes = new Uint8Array(nOutLen);\n\n        for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n            nMod4 = nInIdx & 3;\n            nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (18 - 6 * nMod4);\n            if (nMod4 === 3 || nInLen - nInIdx === 1) {\n                for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n                    aBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255;\n                }\n                nUint24 = 0;\n            }\n        }\n\n        return aBytes;\n    }\n\n    /**\n     * Base64 string to array decoding helper\n     */\n    private static b64ToUint6(charNum: number): number {\n        return charNum > 64 && charNum < 91 ? charNum - 65 : charNum > 96 && charNum < 123 ? charNum - 71 : charNum > 47 && charNum < 58 ? charNum + 4 : charNum === 43 ? 62 : charNum === 47 ? 63 : 0;\n    }\n}\n","import { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\n\nexport class Base64Encode {\n    /**\n     * Returns URL Safe base64 encoded string from a plaintext string.\n     */\n    static urlEncode(input: string): string {\n        return encodeURIComponent(this.encode(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_'));\n    }\n\n    /**\n     * Returns URL Safe base64 encoded string from an int8Array.\n     */\n    static urlEncodeArr(inputArr: Uint8Array): string {\n        return this.base64EncArr(inputArr).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n    }\n\n    /**\n     * Returns base64 encoded string from plaintext string.\n     */\n    static encode(input: string): string {\n        const inputUtf8Arr = ObjectUtils.stringToUtf8Arr(input);\n        return this.base64EncArr(inputUtf8Arr);\n    }\n\n    /**\n     * Base64 encode byte array\n     */\n    private static base64EncArr(aBytes: Uint8Array): string {\n        const eqLen = (3 - (aBytes.length % 3)) % 3;\n        let sB64Enc = '';\n\n        for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n            nMod3 = nIdx % 3;\n            /* Uncomment the following line in order to split the output in lines 76-character long: */\n            /*\n             *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n             */\n            nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24);\n            if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n                sB64Enc += String.fromCharCode(this.uint6ToB64((nUint24 >>> 18) & 63), this.uint6ToB64((nUint24 >>> 12) & 63), this.uint6ToB64((nUint24 >>> 6) & 63), this.uint6ToB64(nUint24 & 63));\n                nUint24 = 0;\n            }\n        }\n\n        return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? '=' : '==');\n    }\n\n    /**\n     * Base64 string to array encoding helper\n     */\n    private static uint6ToB64(nUint6: number): number {\n        return nUint6 < 26 ? nUint6 + 65 : nUint6 < 52 ? nUint6 + 71 : nUint6 < 62 ? nUint6 - 4 : nUint6 === 62 ? 43 : nUint6 === 63 ? 47 : 65;\n    }\n}\n","import { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport { SHA256 } from './algo/sha256';\nimport { Base64Decode } from './encode/base64Decode';\nimport { Base64Encode } from './encode/base64Encode';\n\nexport class AswLicense {\n    private static licenseKey: string;\n    private static watermarkMessage: string | undefined = undefined;\n\n    private static extractExpiry(license: string): Date {\n        const restrictionHashed = license.substring(license.lastIndexOf('-') + 1, license.length);\n        return new Date(parseInt(Base64Decode.decode(restrictionHashed), 10));\n    }\n\n    private static extractLicenseKey(licenseKey: string): any {\n        // when users copy the license key from a PDF extra zero width characters are sometimes copied too\n        // carriage returns and line feeds are problematic too\n        // all of which causes license key validation to fail - strip these out\n        let cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n        cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n\n        const hashStart = cleanedLicenseKey.length - 64;\n        const sha256 = cleanedLicenseKey.substring(hashStart);\n        const license = cleanedLicenseKey.substring(0, hashStart);\n        return { sha256, license };\n    }\n\n    private static formatDate(date: any): string {\n        const monthNames: string[] = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n        const day = date.getDate();\n        const monthIndex = date.getMonth();\n        const year = date.getFullYear();\n\n        return day + ' ' + monthNames[monthIndex] + ' ' + year;\n    }\n\n    static registerLicenseKey(licenseKey: string): void {\n        AswLicense.licenseKey = licenseKey;\n        this.validateLicense();\n    }\n\n    public static validateLicense(): void {\n        if (ObjectUtils.missingOrEmpty(AswLicense.licenseKey)) {\n            this.outputMissingLicenseKey();\n        } else if (AswLicense.licenseKey.length > 64) {\n            const { sha256, license } = AswLicense.extractLicenseKey(AswLicense.licenseKey);\n            const lic = Base64Encode.encode(license);\n            if (sha256 === SHA256.hash(lic)) {\n                this.validateExpiryDate(license);\n            } else {\n                this.outputInvalidLicenseKey();\n            }\n        } else {\n            this.outputInvalidLicenseKey();\n        }\n    }\n\n    private static validateExpiryDate(license: string): void {\n        const expiry = AswLicense.extractExpiry(license);\n        const now = new Date();\n\n        let valid = false;\n        let current = false;\n        if (!isNaN(expiry.getTime())) {\n            valid = true;\n            current = expiry > now;\n        }\n\n        if (!valid) {\n            this.outputInvalidLicenseKey();\n        } else if (!current) {\n            const formattedExpiryDate = AswLicense.formatDate(expiry);\n            if (license.indexOf('Trail') > -1) {\n                this.outputExpiredTrialKey(formattedExpiryDate);\n            } else {\n                this.outputExpiredLicenseKey(formattedExpiryDate);\n            }\n        }\n    }\n\n    public static isDisplayWatermark(): boolean {\n        if (ObjectUtils.missingOrEmpty(AswLicense.licenseKey)) {\n            this.outputInvalidLicenseKey();\n        }\n        return !ObjectUtils.missingOrEmpty(this.watermarkMessage);\n    }\n\n    public static getWatermarkMessage(): string {\n        return this.watermarkMessage || '';\n    }\n\n    private static outputInvalidLicenseKey(): void {\n        console.error('**********************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************');\n        console.error('*                                              ASW Form Builder pro License                                               *');\n        console.error('*                                                         Invalid License                                                        *');\n        console.error('* Your license for ASW Form Builder pro is not valid - please contact asoftwareworld@gmail.com to obtain a valid license. *');\n        console.error('**********************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************');\n\n        this.watermarkMessage = 'Invalid License';\n    }\n\n    private static outputExpiredTrialKey(formattedExpiryDate: string): void {\n        console.error('**********************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************');\n        console.error('*                                            ASW Form Builder pro License                                                 *');\n        console.error('*                                                  Trial Period Expired.                                                         *');\n        console.error(`*                    Your license for ASW Form Builder pro expired on ${formattedExpiryDate}.                             *`);\n        console.error('*                              Please email asoftwareworld@gmail.com to purchase a license.                                      *');\n        console.error('**********************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************');\n\n        this.watermarkMessage = 'Trial Period Expired';\n    }\n\n    private static outputMissingLicenseKey(): void {\n        console.error('*************************************************************************************************************************');\n        console.error('*************************************************************************************************************************');\n        console.error('*                                          ASW Form Builder pro License                                          *');\n        console.error('*                                                License Key Not Found                                                  *');\n        console.error('*                                 All ASW Form Builder pro features are unlocked.                                *');\n        console.error('*        This is an evaluation only version, it is not licensed for development projects intended for production.       *');\n        console.error('*           If you want to hide the watermark, please email asoftwareworld@gmail.com for a trial license.               *');\n        console.error('*************************************************************************************************************************');\n        console.error('*************************************************************************************************************************');\n\n        this.watermarkMessage = 'For Trial Use Only';\n    }\n\n    private static outputExpiredLicenseKey(formattedExpiryDate: string): void {\n        console.error('**********************************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************************');\n        console.error('*                                                   ASW Form Builder pro License                                                      *');\n        console.error('*                                                         License key is expired.                                                            *');\n        console.error('*                                                                                                                                            *');\n        console.error(`* Your ASW Form Builder License entitles you to all versions of ASW Form Builder that we release within the time covered by your license     *`);\n        console.error(`* - typically we provide one year licenses which entitles you to all releases / updates of ASW Form Builder within that year.                *`);\n        console.error(`* Your license has an end (expiry) date which stops the license key working with versions of ASW Form Builder released after the             *`);\n        console.error(`* license end date. The license key that you have expires on ${formattedExpiryDate}, however the version of ASW Form Builder you             *`);\n        console.error(`* are trying to use was released on                                                                                 *`);\n        console.error('*                                                                                                                                            *');\n        console.error('*                 Please contact asoftwareworld@gmail.com to renew your license key to work with this ASW Form Builder.                      *');\n        console.error('**********************************************************************************************************************************************');\n        console.error('**********************************************************************************************************************************************');\n\n        this.watermarkMessage = 'License Expired';\n    }\n}\n","// Number of rounds by keysize\nconst numberOfRounds: Record<number, number> = { 16: 10, 24: 12, 32: 14 };\n\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [\n    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34,\n    0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1,\n    0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda,\n    0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a,\n    0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b,\n    0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6,\n    0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16\n];\nconst Si = [\n    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee,\n    0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70,\n    0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd,\n    0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71,\n    0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27,\n    0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77,\n    0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d\n];\n\n// Transformations for encryption\nconst T1 = [\n    0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87,\n    0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,\n    0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,\n    0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,\n    0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16,\n    0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,\n    0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47,\n    0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,\n    0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,\n    0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,\n    0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0,\n    0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,\n    0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a\n];\nconst T2 = [\n    0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d,\n    0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,\n    0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2,\n    0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,\n    0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb,\n    0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,\n    0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d,\n    0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,\n    0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d,\n    0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,\n    0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9,\n    0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,\n    0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616\n];\nconst T3 = [\n    0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d,\n    0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,\n    0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2,\n    0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,\n    0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb,\n    0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,\n    0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d,\n    0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,\n    0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d,\n    0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,\n    0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9,\n    0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,\n    0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16\n];\nconst T4 = [\n    0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa,\n    0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,\n    0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf,\n    0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,\n    0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed,\n    0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,\n    0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a,\n    0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,\n    0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da,\n    0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,\n    0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069,\n    0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,\n    0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c\n];\n\n// Transformations for decryption\nconst T5 = [\n    0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1,\n    0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,\n    0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5,\n    0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,\n    0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000,\n    0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,\n    0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163,\n    0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,\n    0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3,\n    0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,\n    0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e,\n    0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,\n    0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742\n];\nconst T6 = [\n    0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0,\n    0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,\n    0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708,\n    0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,\n    0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000,\n    0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,\n    0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1,\n    0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,\n    0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512,\n    0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,\n    0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41,\n    0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,\n    0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857\n];\nconst T7 = [\n    0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe,\n    0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,\n    0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337,\n    0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,\n    0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000,\n    0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,\n    0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4,\n    0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,\n    0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25,\n    0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,\n    0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b,\n    0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,\n    0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8\n];\nconst T8 = [\n    0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d,\n    0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,\n    0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3,\n    0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,\n    0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000,\n    0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,\n    0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8,\n    0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,\n    0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf,\n    0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,\n    0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb,\n    0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,\n    0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0\n];\n\n// Transformations for decryption key expansion\nconst U1 = [\n    0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad,\n    0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a,\n    0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n    0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f,\n    0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190,\n    0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n    0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2,\n    0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e,\n    0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n    0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430,\n    0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4,\n    0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n    0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3\n];\nconst U2 = [\n    0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7,\n    0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498,\n    0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814,\n    0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126,\n    0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1,\n    0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225,\n    0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5,\n    0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41,\n    0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6,\n    0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594,\n    0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918,\n    0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647,\n    0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697\n];\nconst U3 = [\n    0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b,\n    0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104,\n    0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8,\n    0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701,\n    0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456,\n    0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2,\n    0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf,\n    0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b,\n    0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c,\n    0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5,\n    0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59,\n    0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6,\n    0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46\n];\nconst U4 = [\n    0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2,\n    0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1,\n    0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59,\n    0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7,\n    0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064,\n    0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc,\n    0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223,\n    0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb,\n    0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168,\n    0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6,\n    0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e,\n    0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d,\n    0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d\n];\n\nfunction convertToInt32(bytes: Uint8Array): Array<number> {\n    const result = [];\n    for (let i = 0; i < bytes.length; i += 4) {\n        result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n    }\n    return result;\n}\n\nclass AES {\n    readonly key$: Uint8Array;\n    readonly kd$: Array<Array<number>>;\n    readonly ke$: Array<Array<number>>;\n\n    get key(): Uint8Array {\n        return this.key$.slice();\n    }\n\n    constructor(key: Uint8Array) {\n        if (!(this instanceof AES)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.key$ = new Uint8Array(key);\n\n        const rounds = numberOfRounds[this.key.length];\n        if (rounds == null) {\n            throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n        }\n\n        // encryption round keys\n        this.ke$ = [];\n\n        // decryption round keys\n        this.kd$ = [];\n\n        for (let i = 0; i <= rounds; i++) {\n            this.ke$.push([0, 0, 0, 0]);\n            this.kd$.push([0, 0, 0, 0]);\n        }\n\n        const roundKeyCount = (rounds + 1) * 4;\n        const KC = this.key.length / 4;\n\n        // convert the key into ints\n        const tk = convertToInt32(this.key);\n\n        // copy values into round key arrays\n        let index;\n        for (let i = 0; i < KC; i++) {\n            index = i >> 2;\n            this.ke$[index][i % 4] = tk[i];\n            this.kd$[rounds - index][i % 4] = tk[i];\n        }\n\n        // key expansion (fips-197 section 5.2)\n        let rconpointer = 0;\n        let t = KC;\n        let tt;\n        while (t < roundKeyCount) {\n            tt = tk[KC - 1];\n            tk[0] ^= (S[(tt >> 16) & 0xff] << 24) ^ (S[(tt >> 8) & 0xff] << 16) ^ (S[tt & 0xff] << 8) ^ S[(tt >> 24) & 0xff] ^ (rcon[rconpointer] << 24);\n            rconpointer += 1;\n\n            // key expansion (for non-256 bit)\n            if (KC !== 8) {\n                for (let a = 1; a < KC; a++) {\n                    tk[a] ^= tk[a - 1];\n                }\n\n                // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n            } else {\n                for (let b = 1; b < KC / 2; b++) {\n                    tk[b] ^= tk[b - 1];\n                }\n                tt = tk[KC / 2 - 1];\n\n                tk[KC / 2] ^= S[tt & 0xff] ^ (S[(tt >> 8) & 0xff] << 8) ^ (S[(tt >> 16) & 0xff] << 16) ^ (S[(tt >> 24) & 0xff] << 24);\n\n                for (let x = KC / 2 + 1; x < KC; x++) {\n                    tk[x] ^= tk[x - 1];\n                }\n            }\n\n            // copy values into round key arrays\n            let i = 0;\n            let r;\n            let c;\n            while (i < KC && t < roundKeyCount) {\n                r = t >> 2;\n                c = t % 4;\n                this.ke$[r][c] = tk[i];\n                this.kd$[rounds - r][c] = tk[i++];\n                t++;\n            }\n        }\n\n        // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n        for (let r = 1; r < rounds; r++) {\n            for (let c = 0; c < 4; c++) {\n                tt = this.kd$[r][c];\n                this.kd$[r][c] = U1[(tt >> 24) & 0xff] ^ U2[(tt >> 16) & 0xff] ^ U3[(tt >> 8) & 0xff] ^ U4[tt & 0xff];\n            }\n        }\n    }\n\n    encrypt(plaintext: Uint8Array): Uint8Array {\n        if (plaintext.length !== 16) {\n            throw new TypeError('invalid plaintext size (must be 16 bytes)');\n        }\n\n        const rounds = this.ke$.length - 1;\n        const a = [0, 0, 0, 0];\n\n        // convert plaintext to (ints ^ key)\n        let t = convertToInt32(plaintext);\n        for (let i = 0; i < 4; i++) {\n            t[i] ^= this.ke$[0][i];\n        }\n\n        // apply round transforms\n        for (let r = 1; r < rounds; r++) {\n            for (let i = 0; i < 4; i++) {\n                a[i] = T1[(t[i] >> 24) & 0xff] ^ T2[(t[(i + 1) % 4] >> 16) & 0xff] ^ T3[(t[(i + 2) % 4] >> 8) & 0xff] ^ T4[t[(i + 3) % 4] & 0xff] ^ this.ke$[r][i];\n            }\n            t = a.slice();\n        }\n\n        // the last round is special\n        const result = new Uint8Array(16);\n        let tt = 0;\n        for (let i = 0; i < 4; i++) {\n            tt = this.ke$[rounds][i];\n            result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n            result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n            result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n            result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n        }\n\n        return result;\n    }\n\n    decrypt(ciphertext: Uint8Array): Uint8Array {\n        if (ciphertext.length !== 16) {\n            throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n        }\n\n        const rounds = this.kd$.length - 1;\n        const a = [0, 0, 0, 0];\n\n        // convert plaintext to (ints ^ key)\n        let t = convertToInt32(ciphertext);\n        for (let i = 0; i < 4; i++) {\n            t[i] ^= this.kd$[0][i];\n        }\n\n        // apply round transforms\n        for (let r = 1; r < rounds; r++) {\n            for (let i = 0; i < 4; i++) {\n                a[i] = T5[(t[i] >> 24) & 0xff] ^ T6[(t[(i + 3) % 4] >> 16) & 0xff] ^ T7[(t[(i + 2) % 4] >> 8) & 0xff] ^ T8[t[(i + 1) % 4] & 0xff] ^ this.kd$[r][i];\n            }\n            t = a.slice();\n        }\n\n        // the last round is special\n        const result = new Uint8Array(16);\n        let tt = 0;\n        for (let i = 0; i < 4; i++) {\n            tt = this.kd$[rounds][i];\n            result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n            result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n            result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n            result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n        }\n\n        return result;\n    }\n}\n\nabstract class ModeOfOperation {\n    readonly aes!: AES;\n    readonly name!: string;\n\n    constructor(name: string, key: Uint8Array, cls?: any) {\n        if (cls && !(this instanceof cls)) {\n            throw new Error(`${name} must be instantiated with \"new\"`);\n        }\n\n        Object.defineProperties(this, {\n            aes: { enumerable: true, value: new AES(key) },\n            name: { enumerable: true, value: name }\n        });\n    }\n\n    abstract encrypt(plaintext: Uint8Array): Uint8Array;\n    abstract decrypt(ciphertext: Uint8Array): Uint8Array;\n}\n\nclass CTR extends ModeOfOperation {\n    // Remaining bytes for the one-time pad\n    remaining$: Uint8Array;\n    remainingIndex$: number;\n\n    // The current counter\n    counter$: Uint8Array;\n\n    constructor(key: Uint8Array, initialValue?: number | Uint8Array) {\n        super('CTR', key, CTR);\n\n        this.counter$ = new Uint8Array(16);\n        this.counter$.fill(0);\n\n        this.remaining$ = this.counter$; // This will be discarded immediately\n        this.remainingIndex$ = 16;\n\n        if (initialValue == null) {\n            initialValue = 1;\n        }\n\n        if (typeof initialValue === 'number') {\n            this.setCounterValue(initialValue);\n        } else {\n            this.setCounterBytes(initialValue);\n        }\n    }\n\n    get counter(): Uint8Array {\n        return new Uint8Array(this.counter$);\n    }\n\n    setCounterValue(value: number): void {\n        if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n            throw new TypeError('invalid counter initial integer value');\n        }\n\n        for (let index = 15; index >= 0; --index) {\n            this.counter$[index] = value % 256;\n            value = Math.floor(value / 256);\n        }\n    }\n\n    setCounterBytes(value: Uint8Array): void {\n        if (value.length !== 16) {\n            throw new TypeError('invalid counter initial Uint8Array value length');\n        }\n\n        this.counter$.set(value);\n    }\n\n    increment(): void {\n        for (let i = 15; i >= 0; i--) {\n            if (this.counter$[i] === 255) {\n                this.counter$[i] = 0;\n            } else {\n                this.counter$[i]++;\n                break;\n            }\n        }\n    }\n\n    encrypt(plaintext: Uint8Array): Uint8Array {\n        const crypttext = new Uint8Array(plaintext);\n\n        for (let i = 0; i < crypttext.length; i++) {\n            if (this.remainingIndex$ === 16) {\n                this.remaining$ = this.aes.encrypt(this.counter$);\n                this.remainingIndex$ = 0;\n                this.increment();\n            }\n            crypttext[i] ^= this.remaining$[this.remainingIndex$++];\n        }\n\n        return crypttext;\n    }\n\n    decrypt(ciphertext: Uint8Array): Uint8Array {\n        return this.encrypt(ciphertext);\n    }\n}\n\nclass ECB extends ModeOfOperation {\n    constructor(key: Uint8Array) {\n        super('ECB', key, ECB);\n    }\n\n    encrypt(plaintext: Uint8Array): Uint8Array {\n        if (plaintext.length % 16) {\n            throw new TypeError('invalid plaintext size (must be multiple of 16 bytes)');\n        }\n\n        const crypttext = new Uint8Array(plaintext.length);\n        for (let i = 0; i < plaintext.length; i += 16) {\n            crypttext.set(this.aes.encrypt(plaintext.subarray(i, i + 16)), i);\n        }\n\n        return crypttext;\n    }\n\n    decrypt(crypttext: Uint8Array): Uint8Array {\n        if (crypttext.length % 16) {\n            throw new TypeError('invalid ciphertext size (must be multiple of 16 bytes)');\n        }\n\n        const plaintext = new Uint8Array(crypttext.length);\n        for (let i = 0; i < crypttext.length; i += 16) {\n            plaintext.set(this.aes.decrypt(crypttext.subarray(i, i + 16)), i);\n        }\n\n        return plaintext;\n    }\n}\n\nexport class ABC {\n    static Hex = '0123456789abcdef';\n    // tslint:disable-next-line:radix\n    static checkInt = (value: any) => parseInt(value) === value;\n    static enc(key: Uint8Array, plaintext: Uint8Array): Uint8Array {\n        const ctr = new CTR(key);\n        return ctr.encrypt(plaintext);\n    }\n\n    static dec(key: Uint8Array, crypttext: Uint8Array): Uint8Array {\n        const ctr = new CTR(key);\n        return ctr.decrypt(crypttext);\n    }\n\n    static hexBytesToString(bytes: number[]): string {\n        const result = [];\n        // tslint:disable-next-line:prefer-for-of\n        for (let i = 0; i < bytes.length; i++) {\n            const v = bytes[i];\n            result.push(this.Hex[(v & 0xf0) >> 4] + this.Hex[v & 0x0f]);\n        }\n        return result.join('');\n    }\n\n    static hexStringToBytes(str: string): number[] {\n        const result = [];\n        for (let i = 0; i < str.length; i += 2) {\n            result.push(parseInt(str.substr(i, 2), 16));\n        }\n        return result;\n    }\n\n    static utf8BytesToString(bytes: number[]): string {\n        const result = [];\n        let i = 0;\n\n        while (i < bytes.length) {\n            const c = bytes[i];\n\n            if (c < 128) {\n                result.push(String.fromCharCode(c));\n                i++;\n            } else if (c > 191 && c < 224) {\n                result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n                i += 2;\n            } else {\n                result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n                i += 3;\n            }\n        }\n\n        return result.join('');\n    }\n\n    static utf8StringToBytes(str: string): Uint8Array {\n        const result = [];\n        let i = 0;\n        str = encodeURI(str);\n        while (i < str.length) {\n            const c = str.charCodeAt(i++);\n\n            // if it is a % sign, encode the following 2 bytes as a hex value\n            if (c === 37) {\n                result.push(parseInt(str.substr(i, 2), 16));\n                i += 2;\n\n                // otherwise, just the actual byte\n            } else {\n                result.push(c);\n            }\n        }\n\n        return this.coerceArray(result);\n    }\n\n    private static coerceArray(arg: unknown, copy?: boolean): Uint8Array {\n        // ArrayBuffer view\n        if (this.isUint8Array(arg)) {\n            return copy ? arg.slice() : arg;\n        }\n\n        // It's an array-like; check it is a valid representation of a byte\n        if (Array.isArray(arg) || (arg && typeof arg === 'object' && 'length' in arg)) {\n            if (!this.checkInts(arg)) {\n                throw new Error('Array contains invalid value: ' + arg);\n            }\n            return new Uint8Array(arg);\n        }\n\n        throw new Error('unsupported array-like object');\n    }\n\n    private static isUint8Array(arg: any): arg is Uint8Array {\n        if (!arg || typeof arg !== 'object') {\n            return false;\n        }\n        if (arg[Symbol.toStringTag] === 'Uint8Array') {\n            return true;\n        }\n        if (arg instanceof Uint8Array) {\n            return true;\n        }\n        return false;\n    }\n\n    private static checkInts(arrayish: any): arrayish is number[] {\n        if (!this.checkInt(arrayish.length)) {\n            return false;\n        }\n\n        // tslint:disable-next-line:prefer-for-of\n        for (let i = 0; i < arrayish.length; i++) {\n            if (!this.checkInt(arrayish[i])) {\n                return false;\n            }\n            if (arrayish[i] < 0 || arrayish[i] > 255) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n\n// export const bytesToString = (bytes: number[]): string => {\n//     return bytes.map((x) => String.fromCharCode(x)).join('');\n// };\n\n// export const stringToBytes = (str: string): number[] => {\n//     return str.split('').map((x) => x.charCodeAt(0));\n// };\n\n// // tslint:disable-next-line:no-namespace\n// export namespace UTF8 {\n//     export function bytesToString1(bytes: number[]): string {\n//         return decodeURIComponent(escape(bytesToString(bytes)));\n//     }\n\n//     export function stringToBytes1(str: string): number[] {\n//         return stringToBytes(unescape(encodeURIComponent(str)));\n//     }\n// }\n\n// export default {\n//     bytesToString,\n//     stringToBytes,\n// };\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class WatermarkService {\n    private renderer: Renderer2;\n\n    constructor(rendererFactory: RendererFactory2) {\n        this.renderer = rendererFactory.createRenderer(null, null);\n    }\n\n    showWatermark(): void {\n        // Create a dynamic div element and set its properties\n        const watermark = this.renderer.createElement('div');\n        this.renderer.addClass(watermark, 'asw-watermark');\n        const label = this.renderer.createElement('div');\n        this.renderer.addClass(label, 'asw-watermark-label');\n        const text = this.renderer.createText('For trial use only');\n        this.renderer.appendChild(label, text);\n        this.renderer.appendChild(watermark, label);\n\n        // Add the dynamic element to the DOM\n        document.body.appendChild(watermark);\n\n        // Set a timeout function to remove the watermark after 2 minutes\n        // setTimeout(() => {\n        //     this.hideWatermark(watermark);\n        // }, 10000); // 2 minutes in milliseconds\n    }\n\n    private hideWatermark(watermark: HTMLElement): void {\n        // Remove the watermark from the DOM\n        watermark.remove();\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './translate/translate.loader';\nexport * from './translate/missing-translation-handler';\nexport * from './translate/translate.parser';\nexport * from './translate/translate.compiler';\nexport * from './translate/translate.store';\nexport * from './translate/http-loader';\nexport * from './translate/translate.module';\nexport * from './translate/i18n/language';\n\nexport * from './translate/translate.service';\nexport * from './translate/translate.directive';\nexport * from './translate/translate.pipe';\n\nexport * from './license/license';\nexport * from './license/algo/sha256';\nexport * from './license/algo/aes';\nexport * from './watermark/watermark.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.AswTranslateService"],"mappings":"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,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;CACzD;AACD,MAAM,EAAE,GAAG;AACP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpP,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;CACzD;AAED;AACA,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AAED;AACA,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AAED;AACA,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;CACvL;AACD,MAAM,EAAE,GAAG;AACP,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC9O,IAAA,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU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"}