stimulsoft-forms
Version:
Stimulsoft PDF Forms
1,237 lines (1,231 loc) • 3.67 MB
JavaScript
import * as i0 from '@angular/core';
import { Injectable, Component, Input, ViewChild, Directive, EventEmitter, Output, TemplateRef, ContentChild, HostListener, NgModule } from '@angular/core';
import * as _ from 'lodash';
import { camelCase, indexOf } from 'lodash';
import { Subject, Observable, throwError } from 'rxjs';
import { first, timeout, catchError } from 'rxjs/operators';
import * as i1 from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
import * as i5 from '@angular/common';
import { CommonModule } from '@angular/common';
import * as i3 from '@angular/forms';
import { FormsModule } from '@angular/forms';
import { trigger, state, style, transition, animate, group } from '@angular/animations';
import ResizeObserver from 'resize-observer-polyfill';
import * as i2 from '@angular/platform-browser';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
/*
{*******************************************************************}
{ }
{ }
{ }
{ Copyright (C) Stimulsoft }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ ARE CONFIDENTIAL AND PROPRIETARY }
{ TRADE SECRETS OF Stimulsoft }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
*/
class Color {
constructor() {
this.propertyName = "color";
this.name = Color.customName;
}
static aliceBlue() {
let color = Color.fromArgb(0xf0, 0xf8, 0xff);
color.name = "Alice Blue";
return color;
}
static antiqueWhite() {
let color = Color.fromArgb(0xfa, 0xeb, 0xd7);
color.name = "Antique White";
return color;
}
static aqua() {
let color = Color.fromArgb(0x00, 0xff, 0xff);
color.name = "Aqua";
return color;
}
static aquamarine() {
let color = Color.fromArgb(0x7f, 0xff, 0xd4);
color.name = "Aquamarine";
return color;
}
static azure() {
let color = Color.fromArgb(0xf0, 0xff, 0xff);
color.name = "Azure";
return color;
}
static beige() {
let color = Color.fromArgb(0xf5, 0xf5, 0xdc);
color.name = "Beige";
return color;
}
static bisque() {
let color = Color.fromArgb(0xff, 0xe4, 0xc4);
color.name = "Bisque";
return color;
}
static black() {
let color = Color.fromArgb(0x00, 0x00, 0x00);
color.name = "Black";
return color;
}
static blanchedAlmond() {
let color = Color.fromArgb(0xff, 0xeb, 0xcd);
color.name = "Blanched Almond";
return color;
}
static blue() {
let color = Color.fromArgb(0x00, 0x00, 0xff);
color.name = "Blue";
return color;
}
static blueViolet() {
let color = Color.fromArgb(0x8a, 0x2b, 0xe2);
color.name = "Blue Violet";
return color;
}
static brown() {
let color = Color.fromArgb(0xa5, 0x2a, 0x2a);
color.name = "Brown";
return color;
}
static burlyWood() {
let color = Color.fromArgb(0xde, 0xb8, 0x87);
color.name = "Burly Wood";
return color;
}
static cadetBlue() {
let color = Color.fromArgb(0x5f, 0x9e, 0xa0);
color.name = "Cadet Blue";
return color;
}
static chartreuse() {
let color = Color.fromArgb(0x7f, 0xff, 0x00);
color.name = "Chartreuse";
return color;
}
static chocolate() {
let color = Color.fromArgb(0xd2, 0x69, 0x1e);
color.name = "Chocolate";
return color;
}
static coral() {
let color = Color.fromArgb(0xff, 0x7f, 0x50);
color.name = "Coral";
return color;
}
static cornflowerBlue() {
let color = Color.fromArgb(0x64, 0x95, 0xed);
color.name = "Cornflower Blue";
return color;
}
static cornsilk() {
let color = Color.fromArgb(0xff, 0xf8, 0xdc);
color.name = "Cornsilk";
return color;
}
static crimson() {
let color = Color.fromArgb(0xdc, 0x14, 0x3c);
color.name = "Crimson";
return color;
}
static cyan() {
let color = Color.fromArgb(0x00, 0xff, 0xff);
color.name = "Cyan";
return color;
}
static darkBlue() {
let color = Color.fromArgb(0x00, 0x00, 0x8b);
color.name = "Dark Blue";
return color;
}
static darkCyan() {
let color = Color.fromArgb(0x00, 0x8b, 0x8b);
color.name = "Dark Cyan";
return color;
}
static darkGoldenrod() {
let color = Color.fromArgb(0xb8, 0x86, 0x0b);
color.name = "Dark Goldenrod";
return color;
}
static darkGray() {
let color = Color.fromArgb(0xa9, 0xa9, 0xa9);
color.name = "Dark Gray";
return color;
}
static darkGreen() {
let color = Color.fromArgb(0x00, 0x64, 0x00);
color.name = "Dark Green";
return color;
}
static darkKhaki() {
let color = Color.fromArgb(0xbd, 0xb7, 0x6b);
color.name = "Dark Khaki";
return color;
}
static darkMagenta() {
let color = Color.fromArgb(0x8b, 0x00, 0x8b);
color.name = "Dark Magenta";
return color;
}
static darkOliveGreen() {
let color = Color.fromArgb(0x55, 0x6b, 0x2f);
color.name = "Dark Olive Green";
return color;
}
static darkOrange() {
let color = Color.fromArgb(0xff, 0x8c, 0x00);
color.name = "Dark Orange";
return color;
}
static darkOrchid() {
let color = Color.fromArgb(0x99, 0x32, 0xcc);
color.name = "Dark Orchid";
return color;
}
static darkRed() {
let color = Color.fromArgb(0x8b, 0x00, 0x00);
color.name = "Dark Red";
return color;
}
static darkSalmon() {
let color = Color.fromArgb(0xe9, 0x96, 0x7a);
color.name = "Dark Salmon";
return color;
}
static darkSeaGreen() {
let color = Color.fromArgb(0x8f, 0xbc, 0x8f);
color.name = "Dark Sea Green";
return color;
}
static darkSlateBlue() {
let color = Color.fromArgb(0x48, 0x3d, 0x8b);
color.name = "Dark Slate Blue";
return color;
}
static darkSlateGray() {
let color = Color.fromArgb(0x2f, 0x4f, 0x4f);
color.name = "Dark Slate Gray";
return color;
}
static darkTurquoise() {
let color = Color.fromArgb(0x00, 0xce, 0xd1);
color.name = "Dark Turquoise";
return color;
}
static darkViolet() {
let color = Color.fromArgb(0x94, 0x00, 0xd3);
color.name = "Dark Violet";
return color;
}
static deepPink() {
let color = Color.fromArgb(0xff, 0x14, 0x93);
color.name = "Deep Pink";
return color;
}
static deepSkyBlue() {
let color = Color.fromArgb(0x00, 0xbf, 0xff);
color.name = "Deep Sky Blue";
return color;
}
static dimGray() {
let color = Color.fromArgb(0x69, 0x69, 0x69);
color.name = "Dim Gray";
return color;
}
static dodgerBlue() {
let color = Color.fromArgb(0x1e, 0x90, 0xff);
color.name = "Dodger Blue";
return color;
}
static firebrick() {
let color = Color.fromArgb(0xb2, 0x22, 0x22);
color.name = "Firebrick";
return color;
}
static floralWhite() {
let color = Color.fromArgb(0xff, 0xfa, 0xf0);
color.name = "Floral White";
return color;
}
static forestGreen() {
let color = Color.fromArgb(0x22, 0x8b, 0x22);
color.name = "Forest Green";
return color;
}
static fuchsia() {
let color = Color.fromArgb(0xff, 0x00, 0xff);
color.name = "Fuchsia";
return color;
}
static gainsboro() {
let color = Color.fromArgb(0xdc, 0xdc, 0xdc);
color.name = "Gainsboro";
return color;
}
static ghostWhite() {
let color = Color.fromArgb(0xf8, 0xf8, 0xff);
color.name = "Ghost White";
return color;
}
static gold() {
let color = Color.fromArgb(0xff, 0xd7, 0x00);
color.name = "Gold";
return color;
}
static goldenrod() {
let color = Color.fromArgb(0xda, 0xa5, 0x20);
color.name = "Goldenrod";
return color;
}
static gray() {
let color = Color.fromArgb(0x80, 0x80, 0x80);
color.name = "Gray";
return color;
}
static green() {
let color = Color.fromArgb(0x00, 0x80, 0x00);
color.name = "Green";
return color;
}
static greenYellow() {
let color = Color.fromArgb(0xad, 0xff, 0x2f);
color.name = "Green Yellow";
return color;
}
static honeydew() {
let color = Color.fromArgb(0xf0, 0xff, 0xf0);
color.name = "Honeydew";
return color;
}
static hotPink() {
let color = Color.fromArgb(0xff, 0x69, 0xb4);
color.name = "Hot Pink";
return color;
}
static indianRed() {
let color = Color.fromArgb(0xcd, 0x5c, 0x5c);
color.name = "Indian Red";
return color;
}
static indigo() {
let color = Color.fromArgb(0x4b, 0x00, 0x82);
color.name = "Indigo";
return color;
}
static ivory() {
let color = Color.fromArgb(0xff, 0xff, 0xf0);
color.name = "Ivory";
return color;
}
static khaki() {
let color = Color.fromArgb(0xf0, 0xe6, 0x8c);
color.name = "Khaki";
return color;
}
static lavender() {
let color = Color.fromArgb(0xe6, 0xe6, 0xfa);
color.name = "Lavender";
return color;
}
static lavenderBlush() {
let color = Color.fromArgb(0xff, 0xf0, 0xf5);
color.name = "Lavender Blush";
return color;
}
static lawnGreen() {
let color = Color.fromArgb(0x7c, 0xfc, 0x00);
color.name = "Lawn Green";
return color;
}
static lemonChiffon() {
let color = Color.fromArgb(0xff, 0xfa, 0xcd);
color.name = "Lemon Chiffon";
return color;
}
static lightBlue() {
let color = Color.fromArgb(0xad, 0xd8, 0xe6);
color.name = "Light Blue";
return color;
}
static lightCoral() {
let color = Color.fromArgb(0xf0, 0x80, 0x80);
color.name = "Light Coral";
return color;
}
static lightCyan() {
let color = Color.fromArgb(0xe0, 0xff, 0xff);
color.name = "Light Cyan";
return color;
}
static lightGoldenrodYellow() {
let color = Color.fromArgb(0xfa, 0xfa, 0xd2);
color.name = "Light Goldenrod Yellow";
return color;
}
static lightGray() {
let color = Color.fromArgb(0xd3, 0xd3, 0xd3);
color.name = "Light Gray";
return color;
}
static lightGreen() {
let color = Color.fromArgb(0x90, 0xee, 0x90);
color.name = "Light Green";
return color;
}
static lightPink() {
let color = Color.fromArgb(0xff, 0xb6, 0xc1);
color.name = "Light Pink";
return color;
}
static lightSalmon() {
let color = Color.fromArgb(0xff, 0xa0, 0x7a);
color.name = "Light Salmon";
return color;
}
static lightSeaGreen() {
let color = Color.fromArgb(0x20, 0xb2, 0xaa);
color.name = "Light Sea Green";
return color;
}
static lightSkyBlue() {
let color = Color.fromArgb(0x87, 0xce, 0xfa);
color.name = "Light Sky Blue";
return color;
}
static lightSlateGray() {
let color = Color.fromArgb(0x77, 0x88, 0x99);
color.name = "Light Slate Gray";
return color;
}
static lightSteelBlue() {
let color = Color.fromArgb(0xb0, 0xc4, 0xde);
color.name = "Light Steel Blue";
return color;
}
static lightYellow() {
let color = Color.fromArgb(0xff, 0xff, 0xe0);
color.name = "Light Yellow";
return color;
}
static lime() {
let color = Color.fromArgb(0x00, 0xff, 0x00);
color.name = "Lime";
return color;
}
static limeGreen() {
let color = Color.fromArgb(0x32, 0xcd, 0x32);
color.name = "Lime Green";
return color;
}
static linen() {
let color = Color.fromArgb(0xfa, 0xf0, 0xe6);
color.name = "Linen";
return color;
}
static magenta() {
let color = Color.fromArgb(0xff, 0x00, 0xff);
color.name = "Magenta";
return color;
}
static maroon() {
let color = Color.fromArgb(0x80, 0x00, 0x00);
color.name = "Maroon";
return color;
}
static mediumAquamarine() {
let color = Color.fromArgb(0x66, 0xcd, 0xaa);
color.name = "Medium Aquamarine";
return color;
}
static mediumBlue() {
let color = Color.fromArgb(0x00, 0x00, 0xcd);
color.name = "Medium Blue";
return color;
}
static mediumOrchid() {
let color = Color.fromArgb(0xba, 0x55, 0xd3);
color.name = "Medium Orchid";
return color;
}
static mediumPurple() {
let color = Color.fromArgb(0x93, 0x70, 0xdb);
color.name = "Medium Purple";
return color;
}
static mediumSeaGreen() {
let color = Color.fromArgb(0x3c, 0xb3, 0x71);
color.name = "Medium Sea Green";
return color;
}
static mediumSlateBlue() {
let color = Color.fromArgb(0x7b, 0x68, 0xee);
color.name = "Medium Slate Blue";
return color;
}
static mediumSpringGreen() {
let color = Color.fromArgb(0x00, 0xfa, 0x9a);
color.name = "Medium Spring Green";
return color;
}
static mediumTurquoise() {
let color = Color.fromArgb(0x48, 0xd1, 0xcc);
color.name = "Medium Turquoise";
return color;
}
static mediumVioletRed() {
let color = Color.fromArgb(0xc7, 0x15, 0x85);
color.name = "Medium Violet Red";
return color;
}
static midnightBlue() {
let color = Color.fromArgb(0x19, 0x19, 0x70);
color.name = "Midnight Blue";
return color;
}
static mintCream() {
let color = Color.fromArgb(0xf5, 0xff, 0xfa);
color.name = "Mint Cream";
return color;
}
static mistyRose() {
let color = Color.fromArgb(0xff, 0xe4, 0xe1);
color.name = "Misty Rose";
return color;
}
static moccasin() {
let color = Color.fromArgb(0xff, 0xe4, 0xb5);
color.name = "Moccasin";
return color;
}
static navajoWhite() {
let color = Color.fromArgb(0xff, 0xde, 0xad);
color.name = "Navajo White";
return color;
}
static navy() {
let color = Color.fromArgb(0x00, 0x00, 0x80);
color.name = "Navy";
return color;
}
static oldLace() {
let color = Color.fromArgb(0xfd, 0xf5, 0xe6);
color.name = "Old Lace";
return color;
}
static olive() {
let color = Color.fromArgb(0x80, 0x80, 0x00);
color.name = "Olive";
return color;
}
static oliveDrab() {
let color = Color.fromArgb(0x6b, 0x8e, 0x23);
color.name = "Olive Drab";
return color;
}
static orange() {
let color = Color.fromArgb(0xff, 0xa5, 0x00);
color.name = "Orange";
return color;
}
static orangeRed() {
let color = Color.fromArgb(0xff, 0x45, 0x00);
color.name = "Orange Red";
return color;
}
static orchid() {
let color = Color.fromArgb(0xda, 0x70, 0xd6);
color.name = "Orchid";
return color;
}
static paleGoldenrod() {
let color = Color.fromArgb(0xee, 0xe8, 0xaa);
color.name = "Pale Goldenrod";
return color;
}
static paleGreen() {
let color = Color.fromArgb(0x98, 0xfb, 0x98);
color.name = "Pale Green";
return color;
}
static paleTurquoise() {
let color = Color.fromArgb(0xaf, 0xee, 0xee);
color.name = "Pale Turquoise";
return color;
}
static paleVioletRed() {
let color = Color.fromArgb(0xdb, 0x70, 0x93);
color.name = "Pale Violet Red";
return color;
}
static papayaWhip() {
let color = Color.fromArgb(0xff, 0xef, 0xd5);
color.name = "Papaya Whip";
return color;
}
static peachPuff() {
let color = Color.fromArgb(0xff, 0xda, 0xb9);
color.name = "Peach Puff";
return color;
}
static peru() {
let color = Color.fromArgb(0xcd, 0x85, 0x3f);
color.name = "Peru";
return color;
}
static pink() {
let color = Color.fromArgb(0xff, 0xc0, 0xcb);
color.name = "Pink";
return color;
}
static plum() {
let color = Color.fromArgb(0xdd, 0xa0, 0xdd);
color.name = "Plum";
return color;
}
static powderBlue() {
let color = Color.fromArgb(0xb0, 0xe0, 0xe6);
color.name = "Powder Blue";
return color;
}
static purple() {
let color = Color.fromArgb(0x80, 0x00, 0x80);
color.name = "Purple";
return color;
}
static red() {
let color = Color.fromArgb(0xff, 0x00, 0x00);
color.name = "Red";
return color;
}
static rosyBrown() {
let color = Color.fromArgb(0xbc, 0x8f, 0x8f);
color.name = "Rosy Brown";
return color;
}
static royalBlue() {
let color = Color.fromArgb(0x41, 0x69, 0xe1);
color.name = "Royal Blue";
return color;
}
static saddleBrown() {
let color = Color.fromArgb(0x8b, 0x45, 0x13);
color.name = "Saddle Brown";
return color;
}
static salmon() {
let color = Color.fromArgb(0xfa, 0x80, 0x72);
color.name = "Salmon";
return color;
}
static sandyBrown() {
let color = Color.fromArgb(0xf4, 0xa4, 0x60);
color.name = "Sandy Brown";
return color;
}
static seaGreen() {
let color = Color.fromArgb(0x2e, 0x8b, 0x57);
color.name = "Sea Green";
return color;
}
static seaShell() {
let color = Color.fromArgb(0xff, 0xf5, 0xee);
color.name = "Sea Shell";
return color;
}
static sienna() {
let color = Color.fromArgb(0xa0, 0x52, 0x2d);
color.name = "Sienna";
return color;
}
static silver() {
let color = Color.fromArgb(0xc0, 0xc0, 0xc0);
color.name = "Silver";
return color;
}
static skyBlue() {
let color = Color.fromArgb(0x87, 0xce, 0xeb);
color.name = "Sky Blue";
return color;
}
static slateBlue() {
let color = Color.fromArgb(0x6a, 0x5a, 0xcd);
color.name = "Slate Blue";
return color;
}
static slateGray() {
let color = Color.fromArgb(0x70, 0x80, 0x90);
color.name = "Slate Gray";
return color;
}
static snow() {
let color = Color.fromArgb(0xff, 0xfa, 0xfa);
color.name = "Snow";
return color;
}
static springGreen() {
let color = Color.fromArgb(0x00, 0xff, 0x7f);
color.name = "Spring Green";
return color;
}
static steelBlue() {
let color = Color.fromArgb(0x46, 0x82, 0xb4);
color.name = "Steel Blue";
return color;
}
static tan() {
let color = Color.fromArgb(0xd2, 0xb4, 0x8c);
color.name = "Tan";
return color;
}
static teal() {
let color = Color.fromArgb(0x00, 0x80, 0x80);
color.name = "Teal";
return color;
}
static thistle() {
let color = Color.fromArgb(0xd8, 0xbf, 0xd8);
color.name = "Thistle";
return color;
}
static tomato() {
let color = Color.fromArgb(0xff, 0x63, 0x47);
color.name = "Tomato";
return color;
}
static turquoise() {
let color = Color.fromArgb(0x40, 0xe0, 0xd0);
color.name = "Turquoise";
return color;
}
static violet() {
let color = Color.fromArgb(0xee, 0x82, 0xee);
color.name = "Violet";
return color;
}
static wheat() {
let color = Color.fromArgb(0xf5, 0xde, 0xb3);
color.name = "Wheat";
return color;
}
static white() {
let color = Color.fromArgb(0xff, 0xff, 0xff);
color.name = "White";
return color;
}
static whiteSmoke() {
let color = Color.fromArgb(0xf5, 0xf5, 0xf5);
color.name = "White Smoke";
return color;
}
static yellow() {
let color = Color.fromArgb(0xff, 0xff, 0x00);
color.name = "Yellow";
return color;
}
static yellowGreen() {
let color = Color.fromArgb(0x9a, 0xcd, 0x32);
color.name = "Yellow Green";
return color;
}
static transparent() {
let color = Color.fromArgb(0x00, 0xff, 0xff, 0xff);
color.name = "Transparent";
return color;
}
static empty() {
let color = Color.fromArgb(0x00, 0xff, 0xff, 0xff);
color.name = "Empty";
return color;
}
static fromName(name) {
name = name.replace(/ /gi, "");
if (this.isNullOrEmpty(name)) {
return null; // Color.empty;
}
name = name.charAt(0).toLowerCase() + name.substr(1);
let color = Color[name];
if (color && typeof color == "function") {
return color();
}
return null; //Color.empty;
}
static isNullOrEmpty(value) {
return value == null || value === "" || value === undefined;
}
clone() {
let color = new Color();
color.r = this.r;
color.g = this.g;
color.b = this.b;
color.a = this._a;
color.name = this.name;
return color;
}
isChanged() {
return this.savedColor == null || !this.savedColor.equals(this);
}
resetChanged() {
this.savedColor = this.clone();
}
get a() {
return this._a;
}
set a(value) {
this._a = value;
this.name = Color.customName;
}
get r() {
return this._r;
}
set r(value) {
this._r = value;
this.name = Color.customName;
}
get g() {
return this._g;
}
set g(value) {
this._g = value;
this.name = Color.customName;
}
get b() {
return this._b;
}
set b(value) {
this._b = value;
this.name = Color.customName;
}
static { this.customName = "Custom"; }
get isNamedColor() {
return this.name != Color.customName;
}
equals(color) {
if (color != null) {
if ((color._a == 0x00 && color._r == 0xff && color._g == 0xff && color._b == 0xff) ||
(this._a == 0x00 && this._r == 0xff && this._g == 0xff && this._b == 0xff))
return this._a == color._a;
else
return this._a == color._a && this._r == color._r && this._g == color._g && this._b == color._b;
}
return false;
}
static fromArgb(alpha, red, green, blue) {
if (typeof red == "undefined") {
blue = alpha & 0xff;
green = (alpha >> 8) & 0xff;
red = (alpha >> 16) & 0xff;
alpha = (alpha >> 24) & 0xff;
}
else if (typeof green == "undefined") {
blue = red._b;
green = red._g;
red = red._r;
}
else if (typeof blue == "undefined") {
blue = green;
green = red;
red = alpha;
alpha = 255;
}
let color = new Color();
color._a = alpha;
color._r = red;
color._g = green;
color._b = blue;
color.name = Color.customName;
return color;
}
toArgb() {
let argb = this._a << 24;
argb += this._r << 16;
argb += this._g << 8;
argb += this._b;
return argb;
}
componentToHex(c) {
let hex = c.toString(16);
return hex.length == 1 ? "0" + hex : hex;
}
getHashCode() {
return this.toArgb();
}
toHtmlColor() {
return `rgba(${this.r}, ${this.g}, ${this.b}, ${Math.round((100 * this.a) / 255) / 100})`;
}
toHexColor() {
return "#" + this.componentToHex(this.r) + this.componentToHex(this.g) + this.componentToHex(this.b);
}
get hexColor() {
return this.toHtmlColor();
}
getStringName() {
if (this.a == 0) {
return "Transparent";
}
else {
return `${this.a != 255 ? this.a + "," : ""}${this.r + ","}${this.g + ","}${this.b}`;
}
}
set hexColor(value) {
let oldColor = this.changesInterceptor ? this.clone() : null;
let num = parseInt(value.substring(1), 16);
if (num || num == 0) {
this.b = num & 0xff;
this.g = (num >> 8) & 0xff;
this.r = (num >> 16) & 0xff;
this.a = 255;
}
else {
let num = value.replace("rgba(", "").replace(")", "");
let array = num.split(",");
this.r = isNaN(Number(array[0])) ? 0 : Number(array[0]);
this.g = isNaN(Number(array[1])) ? 0 : Number(array[1]);
this.b = isNaN(Number(array[2])) ? 0 : Number(array[2]);
this.a = isNaN(Math.round(255 * Number(array[3]))) ? 255 : Math.round(255 * Number(array[3]));
}
this.name = Color.customName;
if (this.changesInterceptor) {
this.changesInterceptor.propertyChanged(this.propertyName, this.clone(), oldColor);
}
}
toString() {
return this.name != Color.customName ? this.name : this.hexColor;
}
deserializeFromString(value) {
let result;
if (value.indexOf(",") != -1) {
let strs = value.split(",");
if (strs.length == 4) {
result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()), parseFloat(strs[3].trim()));
}
else {
result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()));
}
}
else if (value.indexOf("[") == 0 && value.indexOf("]") == value.length - 1 && value.indexOf(":") != -1) {
let strs = value.substring(1, value.length - 1).split(":");
if (strs.length == 4) {
result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()), parseFloat(strs[3].trim()));
}
else {
result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()));
}
}
else {
result = Color.fromName(value);
}
this._r = result._r;
this._b = result._b;
this._g = result._g;
this._a = result._a;
this.name = result.name;
}
}
/*
{*******************************************************************}
{ }
{ }
{ }
{ Copyright (C) Stimulsoft }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ ARE CONFIDENTIAL AND PROPRIETARY }
{ TRADE SECRETS OF Stimulsoft }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
*/
var UnicodeCategory;
(function (UnicodeCategory) {
/**
* Uppercase letter. Signified by the Unicode designation "Lu" (letter, uppercase).
* The value is 0.
*/
UnicodeCategory[UnicodeCategory["UppercaseLetter"] = 0] = "UppercaseLetter";
/**
* Lowercase letter. Signified by the Unicode designation "Ll" (letter, lowercase).
* The value is 1.
*/
UnicodeCategory[UnicodeCategory["LowercaseLetter"] = 1] = "LowercaseLetter";
/**
* Titlecase letter. Signified by the Unicode designation "Lt" (letter, titlecase).
* The value is 2.
*/
UnicodeCategory[UnicodeCategory["TitlecaseLetter"] = 2] = "TitlecaseLetter";
/**
* Modifier letter character, which is free-standing spacing character that
* indicates modifications of a preceding letter. Signified by the Unicode designation
* "Lm" (letter, modifier). The value is 3.
*/
UnicodeCategory[UnicodeCategory["ModifierLetter"] = 3] = "ModifierLetter";
/**
* Letter that is not an uppercase letter, a lowercase letter, a titlecase letter,
* or a modifier letter. Signified by the Unicode designation "Lo" (letter,
* other). The value is 4.
*/
UnicodeCategory[UnicodeCategory["OtherLetter"] = 4] = "OtherLetter";
/**
* Nonspacing character that indicates modifications of a base character. Signified
* by the Unicode designation "Mn" (mark, nonspacing). The value is 5.
*/
UnicodeCategory[UnicodeCategory["NonSpacingMark"] = 5] = "NonSpacingMark";
/**
* Spacing character that indicates modifications of a base character and affects
* the width of the glyph for that base character. Signified by the Unicode
* designation "Mc" (mark, spacing combining). The value is 6.
*/
UnicodeCategory[UnicodeCategory["SpacingCombiningMark"] = 6] = "SpacingCombiningMark";
/**
* Enclosing mark character, which is a nonspacing combining character that
* surrounds all previous characters up to and including a base character. Signified
* by the Unicode designation "Me" (mark, enclosing). The value is 7.
*/
UnicodeCategory[UnicodeCategory["EnclosingMark"] = 7] = "EnclosingMark";
/**
* Decimal digit character, that is, a character in the range 0 through 9. Signified
* by the Unicode designation "Nd" (number, decimal digit). The value is 8.
*/
UnicodeCategory[UnicodeCategory["DecimalDigitNumber"] = 8] = "DecimalDigitNumber";
/**
* Number represented by a letter, instead of a decimal digit, for example,
* the Roman numeral for five, which is "V". The indicator is signified by the
* Unicode designation "Nl" (number, letter). The value is 9.
*/
UnicodeCategory[UnicodeCategory["LetterNumber"] = 9] = "LetterNumber";
/**
* Number that is neither a decimal digit nor a letter number, for example,
* the fraction 1/2. The indicator is signified by the Unicode designation "No"
* (number, other). The value is 10.
*/
UnicodeCategory[UnicodeCategory["OtherNumber"] = 10] = "OtherNumber";
/**
* Space character, which has no glyph but is not a control or format character.
* Signified by the Unicode designation "Zs" (separator, space). The value is 11.
*/
UnicodeCategory[UnicodeCategory["SpaceSeparator"] = 11] = "SpaceSeparator";
/**
* Character that is used to separate lines of text. Signified by the Unicode
* designation "Zl" (separator, line). The value is 12.
*/
UnicodeCategory[UnicodeCategory["LineSeparator"] = 12] = "LineSeparator";
/**
* Character used to separate paragraphs. Signified by the Unicode designation
* "Zp" (separator, paragraph). The value is 13.
*/
UnicodeCategory[UnicodeCategory["ParagraphSeparator"] = 13] = "ParagraphSeparator";
/**
* Control code character, with a Unicode value of U+007F or in the range U+0000
* through U+001F or U+0080 through U+009F. Signified by the Unicode designation
* "Cc" (other, control). The value is 14.
*/
UnicodeCategory[UnicodeCategory["Control"] = 14] = "Control";
/**
* Format character that affects the layout of text or the operation of text
* processes, but is not normally rendered. Signified by the Unicode designation
* "Cf" (other, format). The value is 15.
*/
UnicodeCategory[UnicodeCategory["Format"] = 15] = "Format";
/**
* High surrogate or a low surrogate character. Surrogate code values are in
* the range U+D800 through U+DFFF. Signified by the Unicode designation "Cs"
* (other, surrogate). The value is 16.
*/
UnicodeCategory[UnicodeCategory["Surrogate"] = 16] = "Surrogate";
/**
* Private-use character, with a Unicode value in the range U+E000 through U+F8FF.
* Signified by the Unicode designation "Co" (other, private use). The value is 17.
*/
UnicodeCategory[UnicodeCategory["PrivateUse"] = 17] = "PrivateUse";
/**
* Connector punctuation character that connects two characters. Signified by
* the Unicode designation "Pc" (punctuation, connector). The value is 18.
*/
UnicodeCategory[UnicodeCategory["ConnectorPunctuation"] = 18] = "ConnectorPunctuation";
/**
* Dash or hyphen character. Signified by the Unicode designation "Pd" (punctuation,
* dash). The value is 19.
*/
UnicodeCategory[UnicodeCategory["DashPunctuation"] = 19] = "DashPunctuation";
/**
* Opening character of one of the paired punctuation marks, such as parentheses,
* square brackets, and braces. Signified by the Unicode designation "Ps" (punctuation,
* open). The value is 20.
*/
UnicodeCategory[UnicodeCategory["OpenPunctuation"] = 20] = "OpenPunctuation";
/**
* Closing character of one of the paired punctuation marks, such as parentheses,
* square brackets, and braces. Signified by the Unicode designation "Pe" (punctuation,
* close). The value is 21.
*/
UnicodeCategory[UnicodeCategory["ClosePunctuation"] = 21] = "ClosePunctuation";
/**
* Opening or initial quotation mark character. Signified by the Unicode designation
* "Pi" (punctuation, initial quote). The value is 22.
*/
UnicodeCategory[UnicodeCategory["InitialQuotePunctuation"] = 22] = "InitialQuotePunctuation";
/**
* Closing or final quotation mark character. Signified by the Unicode designation
* "Pf" (punctuation, final quote). The value is 23.
*/
UnicodeCategory[UnicodeCategory["FinalQuotePunctuation"] = 23] = "FinalQuotePunctuation";
/**
* Punctuation character that is not a connector, a dash, open punctuation,
* close punctuation, an initial quote, or a final quote. Signified by the Unicode
* designation "Po" (punctuation, other). The value is 24.
*/
UnicodeCategory[UnicodeCategory["OtherPunctuation"] = 24] = "OtherPunctuation";
/**
* Mathematical symbol character, such as "+" or "= ". Signified by the Unicode
* designation "Sm" (symbol, math). The value is 25.
*/
UnicodeCategory[UnicodeCategory["MathSymbol"] = 25] = "MathSymbol";
/**
* Currency symbol character. Signified by the Unicode designation "Sc" (symbol,
* currency). The value is 26.
*/
UnicodeCategory[UnicodeCategory["CurrencySymbol"] = 26] = "CurrencySymbol";
/**
* Modifier symbol character, which indicates modifications of surrounding characters.
* For example, the fraction slash indicates that the number to the left is
* the numerator and the number to the right is the denominator. The indicator
* is signified by the Unicode designation "Sk" (symbol, modifier). The value is 27.
*/
UnicodeCategory[UnicodeCategory["ModifierSymbol"] = 27] = "ModifierSymbol";
/**
* Symbol character that is not a mathematical symbol, a currency symbol or
* a modifier symbol. Signified by the Unicode designation "So" (symbol, other).
* The value is 28.
*/
UnicodeCategory[UnicodeCategory["OtherSymbol"] = 28] = "OtherSymbol";
/**
* Character that is not assigned to any Unicode category. Signified by the
* Unicode designation "Cn" (other, not assigned). The value is 29.
*/
UnicodeCategory[UnicodeCategory["OtherNotAssigned"] = 29] = "OtherNotAssigned";
})(UnicodeCategory || (UnicodeCategory = {}));
/*
{*******************************************************************}
{ }
{ }
{ }
{ Copyright (C) Stimulsoft }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ ARE CONFIDENTIAL AND PROPRIETARY }
{ TRADE SECRETS OF Stimulsoft }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
*/
class Chars {
static getUnicodeCategory(char) {
if (char < 0x3400)
return this._table_0[char];
if (char < 0x4db6)
return UnicodeCategory.OtherLetter;
if (char < 0x4dc0)
return UnicodeCategory.OtherNotAssigned;
if (char < 0x4e00)
return UnicodeCategory.OtherSymbol;
if (char < 0x9fc0)
return UnicodeCategory.OtherLetter;
if (char < 0xac00)
return this._table_9fc0[char - 0x9fc0];
if (char < 0xd780)
return UnicodeCategory.OtherLetter;
if (char < 0xd800)
return this._table_d780[char - 0xd780];
if (char < 0xe000)
return UnicodeCategory.Surrogate;
if (char < 0xf900)
return UnicodeCategory.PrivateUse;
if (char < 0xfa40)
return UnicodeCategory.OtherLetter;
if (char < 0x10000)
return this._table_fa40[char - 0xfa40];
return UnicodeCategory.OtherNotAssigned;
}
static { this._table_0 = [
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 24, 24, 26, 24, 24, 24, 20, 21, 24, 25, 24, 19, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 25, 25, 25, 24,
24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 24, 21, 27, 18, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 25, 21, 25, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 26, 26, 26, 26, 28, 28, 27, 28, 1, 22, 25, 19, 28, 27, 28, 25, 10, 10, 27, 1, 28, 24, 27, 10, 1, 23, 10, 10, 10, 24,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1,
1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 4, 0, 1, 1, 1,
4, 4, 4, 4, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 27, 27, 27, 27, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 3, 3, 3, 3, 3, 27, 27, 27, 27, 27, 27, 27, 3, 27, 3, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 1, 3, 27, 0, 1, 29, 29, 3, 1, 1, 1, 24, 0,
29, 29, 29, 29, 27, 27, 0, 24, 0, 0, 0, 29, 0, 29, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 25, 0, 1, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 28, 5, 5, 5, 5, 5, 7, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 3, 24, 24, 24, 24, 24, 24, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 29, 24, 19, 29, 29, 28, 28, 26, 29, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 19, 5,
24, 5, 5, 24, 5, 5, 24, 5, 29, 29, 29, 29, 29, 29, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 29, 29, 29, 4, 4, 4, 24, 24, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
15, 15, 15, 15, 15, 15, 25, 25, 25, 24, 24, 26, 24, 24, 28, 28, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 15, 29, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 24, 4, 5, 5, 5, 5, 5, 5, 5, 15, 28, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 28, 5, 5, 5, 5, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 28, 28, 4,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 29, 15, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 28, 24, 24, 24, 3, 29, 29, 29, 29, 29,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 5, 5, 5, 5, 5, 29, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 29,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 29, 29, 24, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 5, 4, 6, 6,
6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, 4, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 5, 6, 6, 29, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 4, 4, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 4, 4, 4, 4, 4, 4, 4, 29, 4, 29, 29, 29, 4, 4, 4, 4, 29, 29, 5, 4, 6, 6,
6, 5, 5, 5, 5, 29, 29, 6, 6, 29, 29, 6, 6, 5, 4, 29, 29, 29, 29, 29, 29, 2