@schoolbelle/common
Version:
Demo library to showcase Angular packaging format
1,069 lines (1,050 loc) • 113 kB
JavaScript
import { InjectionToken, Injectable, Inject, Component, forwardRef, Input, NgModule, ChangeDetectionStrategy, ChangeDetectorRef, Directive, HostListener, ElementRef, Renderer2, ViewEncapsulation } from '@angular/core';
import { find } from 'lodash';
import { NG_VALUE_ACCESSOR, FormsModule, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { parseNumber, formatNumber, AsYouType, isValidNumber, parse } from 'libphonenumber-js';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
const /** @type {?} */ INTL_TEL_INPUT_CONFIG = new InjectionToken('IntlTelCountryConfigInterface');
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
const /** @type {?} */ IntlTelCountryConfigDefault = {
preSelectedCountry: /** @type {?} */ ('KR'),
allowedCountries: /** @type {?} */ (['KR', 'RU']),
preferredCountries: []
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class CountryCode {
constructor() {
this.allCountries = [
['Afghanistan (افغانستان)', 'af', '93'],
['Albania (Shqipëri)', 'al', '355'],
['Algeria (الجزائر)', 'dz', '213'],
['American Samoa', 'as', '1684'],
['Andorra', 'ad', '376'],
['Angola', 'ao', '244'],
['Anguilla', 'ai', '1264'],
['Antigua and Barbuda', 'ag', '1268'],
['Argentina', 'ar', '54'],
['Armenia (Հայաստան)', 'am', '374'],
['Aruba', 'aw', '297'],
['Australia', 'au', '61', 0],
['Austria (Österreich)', 'at', '43'],
['Azerbaijan (Azərbaycan)', 'az', '994'],
['Bahamas', 'bs', '1242'],
['Bahrain (البحرين)', 'bh', '973'],
['Bangladesh (বাংলাদেশ)', 'bd', '880'],
['Barbados', 'bb', '1246'],
['Belarus (Беларусь)', 'by', '375'],
['Belgium (België)', 'be', '32'],
['Belize', 'bz', '501'],
['Benin (Bénin)', 'bj', '229'],
['Bermuda', 'bm', '1441'],
['Bhutan (འབྲུག)', 'bt', '975'],
['Bolivia', 'bo', '591'],
['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'],
['Botswana', 'bw', '267'],
['Brazil (Brasil)', 'br', '55'],
['British Indian Ocean Territory', 'io', '246'],
['British Virgin Islands', 'vg', '1284'],
['Brunei', 'bn', '673'],
['Bulgaria (България)', 'bg', '359'],
['Burkina Faso', 'bf', '226'],
['Burundi (Uburundi)', 'bi', '257'],
['Cambodia (កម្ពុជា)', 'kh', '855'],
['Cameroon (Cameroun)', 'cm', '237'],
[
'Canada',
'ca',
'1',
1,
[
'204',
'226',
'236',
'249',
'250',
'289',
'306',
'343',
'365',
'387',
'403',
'416',
'418',
'431',
'437',
'438',
'450',
'506',
'514',
'519',
'548',
'579',
'581',
'587',
'604',
'613',
'639',
'647',
'672',
'705',
'709',
'742',
'778',
'780',
'782',
'807',
'819',
'825',
'867',
'873',
'902',
'905'
]
],
['Cape Verde (Kabu Verdi)', 'cv', '238'],
['Caribbean Netherlands', 'bq', '599', 1],
['Cayman Islands', 'ky', '1345'],
['Central African Republic (République centrafricaine)', 'cf', '236'],
['Chad (Tchad)', 'td', '235'],
['Chile', 'cl', '56'],
['China (中国)', 'cn', '86'],
['Christmas Island', 'cx', '61', 2],
['Cocos (Keeling) Islands', 'cc', '61', 1],
['Colombia', 'co', '57'],
['Comoros (جزر القمر)', 'km', '269'],
['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'],
['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'],
['Cook Islands', 'ck', '682'],
['Costa Rica', 'cr', '506'],
['Côte d’Ivoire', 'ci', '225'],
['Croatia (Hrvatska)', 'hr', '385'],
['Cuba', 'cu', '53'],
['Curaçao', 'cw', '599', 0],
['Cyprus (Κύπρος)', 'cy', '357'],
['Czech Republic (Česká republika)', 'cz', '420'],
['Denmark (Danmark)', 'dk', '45'],
['Djibouti', 'dj', '253'],
['Dominica', 'dm', '1767'],
[
'Dominican Republic (República Dominicana)',
'do',
'1',
2,
['809', '829', '849']
],
['Ecuador', 'ec', '593'],
['Egypt (مصر)', 'eg', '20'],
['El Salvador', 'sv', '503'],
['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'],
['Eritrea', 'er', '291'],
['Estonia (Eesti)', 'ee', '372'],
['Ethiopia', 'et', '251'],
['Falkland Islands (Islas Malvinas)', 'fk', '500'],
['Faroe Islands (Føroyar)', 'fo', '298'],
['Fiji', 'fj', '679'],
['Finland (Suomi)', 'fi', '358', 0],
['France', 'fr', '33'],
['French Guiana (Guyane française)', 'gf', '594'],
['French Polynesia (Polynésie française)', 'pf', '689'],
['Gabon', 'ga', '241'],
['Gambia', 'gm', '220'],
['Georgia (საქართველო)', 'ge', '995'],
['Germany (Deutschland)', 'de', '49'],
['Ghana (Gaana)', 'gh', '233'],
['Gibraltar', 'gi', '350'],
['Greece (Ελλάδα)', 'gr', '30'],
['Greenland (Kalaallit Nunaat)', 'gl', '299'],
['Grenada', 'gd', '1473'],
['Guadeloupe', 'gp', '590', 0],
['Guam', 'gu', '1671'],
['Guatemala', 'gt', '502'],
['Guernsey', 'gg', '44', 1],
['Guinea (Guinée)', 'gn', '224'],
['Guinea-Bissau (Guiné Bissau)', 'gw', '245'],
['Guyana', 'gy', '592'],
['Haiti', 'ht', '509'],
['Honduras', 'hn', '504'],
['Hong Kong (香港)', 'hk', '852'],
['Hungary (Magyarország)', 'hu', '36'],
['Iceland (Ísland)', 'is', '354'],
['India (भारत)', 'in', '91'],
['Indonesia', 'id', '62'],
['Iran (ایران)', 'ir', '98'],
['Iraq (العراق)', 'iq', '964'],
['Ireland', 'ie', '353'],
['Isle of Man', 'im', '44', 2],
['Israel (ישראל)', 'il', '972'],
['Italy (Italia)', 'it', '39', 0],
['Jamaica', 'jm', '1876'],
['Japan (日本)', 'jp', '81'],
['Jersey', 'je', '44', 3],
['Jordan (الأردن)', 'jo', '962'],
['Kazakhstan (Казахстан)', 'kz', '7', 1],
['Kenya', 'ke', '254'],
['Kiribati', 'ki', '686'],
['Kosovo', 'xk', '383'],
['Kuwait (الكويت)', 'kw', '965'],
['Kyrgyzstan (Кыргызстан)', 'kg', '996'],
['Laos (ລາວ)', 'la', '856'],
['Latvia (Latvija)', 'lv', '371'],
['Lebanon (لبنان)', 'lb', '961'],
['Lesotho', 'ls', '266'],
['Liberia', 'lr', '231'],
['Libya (ليبيا)', 'ly', '218'],
['Liechtenstein', 'li', '423'],
['Lithuania (Lietuva)', 'lt', '370'],
['Luxembourg', 'lu', '352'],
['Macau (澳門)', 'mo', '853'],
['Macedonia (FYROM) (Македонија)', 'mk', '389'],
['Madagascar (Madagasikara)', 'mg', '261'],
['Malawi', 'mw', '265'],
['Malaysia', 'my', '60'],
['Maldives', 'mv', '960'],
['Mali', 'ml', '223'],
['Malta', 'mt', '356'],
['Marshall Islands', 'mh', '692'],
['Martinique', 'mq', '596'],
['Mauritania (موريتانيا)', 'mr', '222'],
['Mauritius (Moris)', 'mu', '230'],
['Mayotte', 'yt', '262', 1],
['Mexico (México)', 'mx', '52'],
['Micronesia', 'fm', '691'],
['Moldova (Republica Moldova)', 'md', '373'],
['Monaco', 'mc', '377'],
['Mongolia (Монгол)', 'mn', '976'],
['Montenegro (Crna Gora)', 'me', '382'],
['Montserrat', 'ms', '1664'],
['Morocco (المغرب)', 'ma', '212', 0],
['Mozambique (Moçambique)', 'mz', '258'],
['Myanmar (Burma) (မြန်မာ)', 'mm', '95'],
['Namibia (Namibië)', 'na', '264'],
['Nauru', 'nr', '674'],
['Nepal (नेपाल)', 'np', '977'],
['Netherlands (Nederland)', 'nl', '31'],
['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'],
['New Zealand', 'nz', '64'],
['Nicaragua', 'ni', '505'],
['Niger (Nijar)', 'ne', '227'],
['Nigeria', 'ng', '234'],
['Niue', 'nu', '683'],
['Norfolk Island', 'nf', '672'],
['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'],
['Northern Mariana Islands', 'mp', '1670'],
['Norway (Norge)', 'no', '47', 0],
['Oman (عُمان)', 'om', '968'],
['Pakistan (پاکستان)', 'pk', '92'],
['Palau', 'pw', '680'],
['Palestine (فلسطين)', 'ps', '970'],
['Panama (Panamá)', 'pa', '507'],
['Papua New Guinea', 'pg', '675'],
['Paraguay', 'py', '595'],
['Peru (Perú)', 'pe', '51'],
['Philippines', 'ph', '63'],
['Poland (Polska)', 'pl', '48'],
['Portugal', 'pt', '351'],
['Puerto Rico', 'pr', '1', 3, ['787', '939']],
['Qatar (قطر)', 'qa', '974'],
['Réunion (La Réunion)', 're', '262', 0],
['Romania (România)', 'ro', '40'],
['Russia (Россия)', 'ru', '7', 0],
['Rwanda', 'rw', '250'],
['Saint Barthélemy (Saint-Barthélemy)', 'bl', '590', 1],
['Saint Helena', 'sh', '290'],
['Saint Kitts and Nevis', 'kn', '1869'],
['Saint Lucia', 'lc', '1758'],
['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2],
['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'],
['Saint Vincent and the Grenadines', 'vc', '1784'],
['Samoa', 'ws', '685'],
['San Marino', 'sm', '378'],
['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'],
['Saudi Arabia (المملكة العربية السعودية)', 'sa', '966'],
['Senegal (Sénégal)', 'sn', '221'],
['Serbia (Србија)', 'rs', '381'],
['Seychelles', 'sc', '248'],
['Sierra Leone', 'sl', '232'],
['Singapore', 'sg', '65'],
['Sint Maarten', 'sx', '1721'],
['Slovakia (Slovensko)', 'sk', '421'],
['Slovenia (Slovenija)', 'si', '386'],
['Solomon Islands', 'sb', '677'],
['Somalia (Soomaaliya)', 'so', '252'],
['South Africa', 'za', '27'],
['South Korea (대한민국)', 'kr', '82'],
['South Sudan (جنوب السودان)', 'ss', '211'],
['Spain (España)', 'es', '34'],
['Sri Lanka (ශ්රී ලංකාව)', 'lk', '94'],
['Sudan (السودان)', 'sd', '249'],
['Suriname', 'sr', '597'],
['Svalbard and Jan Mayen', 'sj', '47', 1],
['Swaziland', 'sz', '268'],
['Sweden (Sverige)', 'se', '46'],
['Switzerland (Schweiz)', 'ch', '41'],
['Syria (سوريا)', 'sy', '963'],
['Taiwan (台灣)', 'tw', '886'],
['Tajikistan', 'tj', '992'],
['Tanzania', 'tz', '255'],
['Thailand (ไทย)', 'th', '66'],
['Timor-Leste', 'tl', '670'],
['Togo', 'tg', '228'],
['Tokelau', 'tk', '690'],
['Tonga', 'to', '676'],
['Trinidad and Tobago', 'tt', '1868'],
['Tunisia (تونس)', 'tn', '216'],
['Turkey (Türkiye)', 'tr', '90'],
['Turkmenistan', 'tm', '993'],
['Turks and Caicos Islands', 'tc', '1649'],
['Tuvalu', 'tv', '688'],
['U.S. Virgin Islands', 'vi', '1340'],
['Uganda', 'ug', '256'],
['Ukraine (Україна)', 'ua', '380'],
['United Arab Emirates (الإمارات العربية المتحدة)', 'ae', '971'],
['United Kingdom', 'gb', '44', 0],
['United States', 'us', '1', 0],
['Uruguay', 'uy', '598'],
['Uzbekistan (Oʻzbekiston)', 'uz', '998'],
['Vanuatu', 'vu', '678'],
['Vatican City (Città del Vaticano)', 'va', '39', 1],
['Venezuela', 've', '58'],
['Vietnam (Việt Nam)', 'vn', '84'],
['Wallis and Futuna', 'wf', '681'],
['Western Sahara (الصحراء الغربية)', 'eh', '212', 1],
['Yemen (اليمن)', 'ye', '967'],
['Zambia', 'zm', '260'],
['Zimbabwe', 'zw', '263'],
['Åland Islands', 'ax', '358', 1]
];
}
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class Country {
constructor() { }
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class IntTelCountryService {
/**
* @param {?} countryCodeData
* @param {?} intltelInputConfig
*/
constructor(countryCodeData, intltelInputConfig) {
this.countryCodeData = countryCodeData;
this.allCountries = [];
this.preferredCountries = [];
const /** @type {?} */ defaultIntlTelInputConfig = IntlTelCountryConfigDefault;
this.intltelInputConfig = Object.assign({}, defaultIntlTelInputConfig, intltelInputConfig);
this.fetchCountryData();
if (this.intltelInputConfig.preferredCountries.length) {
this.intltelInputConfig.preferredCountries.forEach(iso2 => {
let /** @type {?} */ preferredCountry = this.allCountries.filter(c => {
return c.iso2 === iso2;
});
this.preferredCountries.push(preferredCountry[0]);
});
}
// if (this.intltelInputConfig.preSelectedCountry) {
// this.allCountries.forEach(country=>{
// if (country.iso2 === this.intltelInputConfig.preSelectedCountry) this.selectedCountry = country;
// });
// }
}
/**
* @param {?} conditions
* @return {?}
*/
find(conditions) {
return find(this.allCountries, conditions);
}
/**
* @return {?}
*/
fetchCountryData() {
this.countryCodeData.allCountries.forEach(c => {
let /** @type {?} */ iso2 = /** @type {?} */ (c[1].toString().toUpperCase());
if (!this.intltelInputConfig.allowedCountries ||
this.intltelInputConfig.allowedCountries.indexOf(iso2) !== -1) {
let /** @type {?} */ country = new Country();
country.name = c[0].toString();
(country.iso2 = iso2), (country.dialCode = c[2].toString());
country.priority = +c[3] || 0;
country.areaCode = +c[4] || null;
country.flagClass = country.iso2.toLocaleLowerCase();
this.allCountries.push(country);
}
});
}
}
IntTelCountryService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
IntTelCountryService.ctorParameters = () => [
{ type: CountryCode, },
{ type: undefined, decorators: [{ type: Inject, args: [INTL_TEL_INPUT_CONFIG,] },] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
const /** @type {?} */ CountrySelectComponentValueAccessor = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CountrySelectComponent),
multi: true
};
class CountrySelectComponent {
/**
* @param {?} intTelCountryService
*/
constructor(intTelCountryService) {
this.intTelCountryService = intTelCountryService;
this.onChange = _ => { };
this.onTouched = () => { };
}
/**
* @return {?}
*/
get value() {
return this.countryDialCode;
}
/**
* @param {?} v
* @return {?}
*/
set value(v) {
if (v !== this.countryDialCode) {
let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: v });
if (country) {
this.country = country;
this.countryDialCode = v;
this.onChange(v);
}
}
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: value });
if (country)
this.onCountrySelect(country);
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
/**
* @return {?}
*/
ngOnInit() {
let /** @type {?} */ country = this.intTelCountryService.find({
dialCode: this.countryDialCode
});
if (country)
this.onCountrySelect(country);
}
/**
* @param {?} country
* @return {?}
*/
onCountrySelect(country) {
this.value = country.dialCode;
}
}
CountrySelectComponent.decorators = [
{ type: Component, args: [{
selector: 'country-select',
template: `<div dropdown [isDisabled]="disabled">
<button type="button"
class="btn dropdown-toggle"
[ngClass]="{'btn-danger':ngClass && ngClass['is-invalid'], 'btn-success':ngClass && ngClass['is-valid'], 'btn-sm': size === 'sm'}"
dropdownToggle>
<span class="flag-icon flag-icon-{{country?.flagClass}}"></span>
<!-- <intl-flag [countryDialCode]="country?.dialCode"></intl-flag> -->
</button>
<ul class="dropdown-menu" *dropdownMenu>
<li class="dropdown-item" *ngFor="let country of intTelCountryService.preferredCountries" (click)="onCountrySelect(country)">
<span class="flag-icon flag-icon-{{country.flagClass}}"></span>
<span class="country-name">{{country.name}}</span>
<span class="dial-code">+{{country.dialCode}}</span>
</li>
<li *ngIf="intTelCountryService.allCountries.length !== 0 && intTelCountryService.preferredCountries.length !== 0" class="divider"></li>
<li class="dropdown-item" *ngFor="let country of intTelCountryService.allCountries" (click)="onCountrySelect(country)">
<span class="flag-icon flag-icon-{{country.flagClass}}"></span>
<span class="country-name">{{country.name}}</span>
<span class="dial-code">+{{country.dialCode}}</span>
</li>
</ul>
</div>
`,
styles: [`div[dropdown]{position:absolute;height:100%}div[dropdown] button{padding:.3em .3em .3em 1em;height:100%;font-size:1em}`],
providers: [CountrySelectComponentValueAccessor]
},] },
];
/** @nocollapse */
CountrySelectComponent.ctorParameters = () => [
{ type: IntTelCountryService, },
];
CountrySelectComponent.propDecorators = {
"size": [{ type: Input, args: ['size',] },],
"ngClass": [{ type: Input, args: ['ngClass',] },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class CountrySelectModule {
}
CountrySelectModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, FormsModule, BsDropdownModule],
declarations: [CountrySelectComponent],
exports: [CountrySelectComponent]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class IntlFlagComponent {
/**
* @param {?} intTelCountryService
* @param {?} cdRef
*/
constructor(intTelCountryService, cdRef) {
this.intTelCountryService = intTelCountryService;
this.cdRef = cdRef;
}
/**
* @param {?} change
* @return {?}
*/
ngOnChanges(change) {
if (change && change.intlTel) {
let /** @type {?} */ value = change.intlTel.currentValue;
let /** @type {?} */ parsed, /** @type {?} */ countryDialCode;
try {
parsed = parseNumber(value, { extended: true });
countryDialCode = parsed.countryCallingCode;
}
catch (/** @type {?} */ e) { }
this.country = this.intTelCountryService.find({
dialCode: countryDialCode
});
}
}
}
IntlFlagComponent.decorators = [
{ type: Component, args: [{
selector: 'intl-flag',
template: `<span class="flag-icon flag-icon-{{country?.flagClass}}"></span>
`,
styles: [``],
changeDetection: ChangeDetectionStrategy.OnPush
},] },
];
/** @nocollapse */
IntlFlagComponent.ctorParameters = () => [
{ type: IntTelCountryService, },
{ type: ChangeDetectorRef, },
];
IntlFlagComponent.propDecorators = {
"intlTel": [{ type: Input, args: ['intlTel',] },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class IntlFlagModule {
}
IntlFlagModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
declarations: [IntlFlagComponent],
exports: [IntlFlagComponent]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
const /** @type {?} */ TEL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => LocalTelInputDirective),
multi: true
};
class LocalTelInputDirective {
/**
* @param {?} renderer
* @param {?} elementRef
* @param {?} intTelCountryService
*/
constructor(renderer, elementRef, intTelCountryService) {
this.renderer = renderer;
this.elementRef = elementRef;
this.intTelCountryService = intTelCountryService;
this.cursor = 0;
}
/**
* @param {?} v
* @return {?}
*/
ngOnChanges(v) {
if (v.countryDialCode && v.countryDialCode.currentValue) {
let /** @type {?} */ formatted_n = this.formatter(this.elementRef.nativeElement.value || '');
this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted_n);
}
}
/**
* @return {?}
*/
get iso2() {
let /** @type {?} */ country = this.intTelCountryService.find({
dialCode: this.countryDialCode
});
return country ? country.iso2 : undefined;
}
/**
* @param {?} elm
* @return {?}
*/
getCaretPosition(elm) {
var /** @type {?} */ pos = 0;
// Firefox support
if (elm.selectionStart || elm.selectionStart == '0') {
pos = elm.selectionStart;
}
else if ((/** @type {?} */ (document)).selection) {
// IE Support
// Set focus on the element
elm.focus();
// To get cursor position, get empty selection range
var /** @type {?} */ selection = (/** @type {?} */ (document)).selection.createRange();
// Move selection start to 0 position
selection.moveStart('character', -elm.value.length);
// The caret position is selection length
pos = selection.text.length;
}
// Return results
return pos;
}
/**
* @param {?} elm
* @param {?} caretPos
* @return {?}
*/
setCaretPosition(elm, caretPos) {
if (elm !== null) {
this.cursor = caretPos;
if (elm.createTextRange) {
setTimeout(() => {
var /** @type {?} */ range = elm.createTextRange();
range.move('character', caretPos);
range.select();
}, 0);
}
else {
if (elm.setSelectionRange) {
elm.focus();
setTimeout(() => elm.setSelectionRange(caretPos, caretPos), 0);
}
else {
elm.focus();
}
}
}
}
/**
* @param {?=} value
* @return {?}
*/
formatter(value = '') {
return new AsYouType(this.iso2).input(value);
}
/**
* @param {?} $event
* @return {?}
*/
refreshCaretPosition($event) {
this.cursor = this.getCaretPosition(this.elementRef.nativeElement);
}
/**
* @param {?=} $event
* @return {?}
*/
onInputChange($event = undefined) {
let /** @type {?} */ formatted_o = $event.target.value;
let /** @type {?} */ formatted_n = this.formatter(formatted_o || '');
// update model value
this.onChange(formatted_n.replace(/\D/g, ''));
let /** @type {?} */ formattingCharacterIsAdded = formatted_n.replace(/[\d]/g, '').length -
formatted_o.replace(/[\d]/g, '').length;
if ($event.key.match(/\d/) || $event.key === 'Backspace') {
// press number key
// if formatting charater ex - or ) is added,
// 1. render to the screen
// 2. correct cursor position accordingly.
if (formattingCharacterIsAdded > 0) {
this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted_n);
this.setCaretPosition(this.elementRef.nativeElement, this.cursor + 1 + formattingCharacterIsAdded);
}
}
else if ($event.key === 'ArrowLeft') {
// press left
// remember change in cursor position
this.cursor--;
}
else if ($event.key === 'ArrowRight') {
// press right
// remember change in cursor position
this.cursor++;
}
}
/**
* @param {?} $event
* @return {?}
*/
preventNonNumericInput($event) {
const /** @type {?} */ pattern = /[\d]/;
let /** @type {?} */ inputChar = String.fromCharCode($event.charCode);
if (!pattern.test(inputChar)) {
event.preventDefault();
}
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
let /** @type {?} */ formatted = this.formatter(value || '');
this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted);
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);
}
}
LocalTelInputDirective.decorators = [
{ type: Directive, args: [{
selector: '[local-tel][formControlName],[local-tel][formControl],[local-tel][ngModel]',
providers: [TEL_VALUE_ACCESSOR]
},] },
];
/** @nocollapse */
LocalTelInputDirective.ctorParameters = () => [
{ type: Renderer2, },
{ type: ElementRef, },
{ type: IntTelCountryService, },
];
LocalTelInputDirective.propDecorators = {
"countryDialCode": [{ type: Input },],
"refreshCaretPosition": [{ type: HostListener, args: ['keydown', ['$event'],] }, { type: HostListener, args: ['click', ['$event'],] }, { type: HostListener, args: ['focus', ['$event'],] },],
"onInputChange": [{ type: HostListener, args: ['keyup', ['$event'],] },],
"preventNonNumericInput": [{ type: HostListener, args: ['keypress', ['$event'],] },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class LocalTelInputModule {
}
LocalTelInputModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, FormsModule],
declarations: [LocalTelInputDirective],
exports: [LocalTelInputDirective]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
const /** @type {?} */ IntlTelInputComponentValueAccessor = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => IntlTelInputComponent),
multi: true
};
class IntlTelInputComponent {
/**
* @param {?} cdRef
* @param {?} elementRef
* @param {?} renderer
*/
constructor(cdRef, elementRef, renderer) {
this.cdRef = cdRef;
this.elementRef = elementRef;
this.renderer = renderer;
this.onChange = _ => { };
this.onTouched = () => { };
this.subscriptions = [];
}
/**
* @param {?=} value
* @return {?}
*/
writeValue(value = '') {
if (typeof value === 'string') {
let /** @type {?} */ parsed, /** @type {?} */ tel, /** @type {?} */ countryDialCode;
try {
parsed = parseNumber(value, { extended: true });
countryDialCode = parsed.countryCallingCode;
tel = formatNumber(parsed, 'National').replace(/\D/g, '');
}
catch (/** @type {?} */ e) { }
if (tel)
this.tel.setValue(tel);
if (countryDialCode)
this.countryDialCode.setValue(countryDialCode);
if (tel || countryDialCode)
this.cdRef.detectChanges();
}
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.disabled = isDisabled;
if (isDisabled) {
this.tel.disable();
this.countryDialCode.disable();
}
else {
this.tel.enable();
this.countryDialCode.enable();
}
}
/**
* @return {?}
*/
updateIntlTel() {
this.value = '+' + this.countryDialCode.value + parseInt(this.tel.value);
this.onChange(this.value);
}
/**
* @return {?}
*/
createFormControls() {
this.tel = new FormControl({ value: '', disabled: this.disabled });
this.countryDialCode = new FormControl({
value: '',
disabled: this.disabled
});
}
/**
* @return {?}
*/
createForm() {
this.form = new FormGroup({
countryDialCode: this.countryDialCode,
tel: this.tel
});
}
/**
* @return {?}
*/
focus() {
this.renderer.addClass(this.elementRef.nativeElement, 'focus');
}
/**
* @return {?}
*/
blur() {
this.renderer.removeClass(this.elementRef.nativeElement, 'focus');
}
/**
* @return {?}
*/
ngOnInit() {
this.createFormControls();
this.createForm();
this.subscriptions.push(this.form.valueChanges.subscribe(() => this.updateIntlTel()));
}
/**
* @return {?}
*/
ngOnDestroy() {
this.subscriptions.forEach(sub => sub.unsubscribe());
}
}
IntlTelInputComponent.decorators = [
{ type: Component, args: [{
selector: 'intl-tel-input',
styles: [`input{border:none;padding:.375em .75em .375em 4.3em;display:block;width:100%;line-height:1.5;color:#495057;text-align:inherit;background-color:transparent}input:focus{outline:0;box-shadow:none}input:disabled,input[readonly]{background-color:#e9ecef;opacity:1}`],
template: `<form novalidate
[formGroup]="form">
<div [ngClass]="{'input-group-lg':size === 'lg', 'input-group-sm':size === 'sm' }" style="position: relative;">
<country-select
formControlName="countryDialCode"
required></country-select>
<input
type="text"
formControlName="tel"
[countryDialCode]="countryDialCode.value"
(focus)="focus()"
(blur)="blur()"
local-tel
required
autocomplete="off"
i18n-placeholder="@@schoolbelleIntlTelInputPlaceHolder"
placeholder="전화번호를 입력하세요.">
</div>
</form>`,
providers: [IntlTelInputComponentValueAccessor],
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.Emulated
},] },
];
/** @nocollapse */
IntlTelInputComponent.ctorParameters = () => [
{ type: ChangeDetectorRef, },
{ type: ElementRef, },
{ type: Renderer2, },
];
IntlTelInputComponent.propDecorators = {
"ngClass": [{ type: Input, args: ['ngClass',] },],
"size": [{ type: Input, args: ['size',] },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class IntlTelInputModule {
/**
* @param {?=} config
* @return {?}
*/
static forRoot(config = IntlTelCountryConfigDefault) {
return {
ngModule: IntlTelInputModule,
providers: [
{ provide: INTL_TEL_INPUT_CONFIG, useValue: config },
CountryCode,
IntTelCountryService
]
};
}
}
IntlTelInputModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
CountrySelectModule,
IntlFlagModule,
LocalTelInputModule,
BsDropdownModule.forRoot()
],
declarations: [IntlTelInputComponent],
exports: [
CountrySelectModule,
IntlFlagModule,
LocalTelInputModule,
IntlTelInputComponent
]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @param {?} control
* @return {?}
*/
function IntlTelValidatorFn(control) {
if (control.value) {
if (control.value.match(/\+82000/)) {
return null;
}
else {
let /** @type {?} */ valid = false;
try {
valid = isValidNumber(parse(control.value));
}
catch (/** @type {?} */ e) {
valid = false;
}
if (!valid) {
return {
intltel: true
};
}
}
}
return null;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
export { IntlTelInputModule, IntlTelValidatorFn, IntTelCountryService, CountrySelectComponent as ɵc, CountrySelectComponentValueAccessor as ɵb, CountrySelectModule as ɵa, IntlFlagComponent as ɵh, IntlFlagModule as ɵg, IntlTelCountryConfigDefault as ɵm, INTL_TEL_INPUT_CONFIG as ɵd, LocalTelInputDirective as ɵj, LocalTelInputModule as ɵi, IntlTelInputComponent as ɵl, IntlTelInputComponentValueAccessor as ɵk, CountryCode as ɵe };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29sYmVsbGUtY29tbW9uLWNvbXBvbmVudHMtaW50bC10ZWwtaW5wdXQuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29uZmlncy9pbnRsLXRlbC1jb3VudHJ5LnRva2VuLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2NvbmZpZ3MvaW50bC10ZWwtY291bnRyeS1jb25maWcuZGVmYXVsdC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9yZXNvdXJjZS9jb3VudHJ5LWNvZGUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvcmVzb3VyY2UvY291bnRyeS5tb2RlbC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9zZXJ2aWNlcy9pbnRsLXRlbC1jb3VudHJ5LnNlcnZpY2UudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9jb3VudHJ5LXNlbGVjdC9jb3VudHJ5LXNlbGVjdC5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9jb3VudHJ5LXNlbGVjdC9jb3VudHJ5LXNlbGVjdC5tb2R1bGUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9pbnRsLWZsYWcvaW50bC1mbGFnLmNvbXBvbmVudC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9jb21wb25lbnRzL2ludGwtZmxhZy9pbnRsLWZsYWcubW9kdWxlLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2RpcmVjdGl2ZXMvbG9jYWwtdGVsLWlucHV0L2xvY2FsLXRlbC1pbnB1dC5kaXJlY3RpdmUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvZGlyZWN0aXZlcy9sb2NhbC10ZWwtaW5wdXQvbG9jYWwtdGVsLWlucHV0Lm1vZHVsZS50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9pbnRsLXRlbC1pbnB1dC5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvaW50bC10ZWwtaW5wdXQubW9kdWxlLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2ludGwtdGVsLXZhbGlkYXRvci9pbnRsLXRlbC12YWxpZGF0b3IuZm4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGxUZWxDb3VudHJ5Q29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRsLXRlbC1jb3VudHJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IGNvbnN0IElOVExfVEVMX0lOUFVUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgSW50bFRlbENvdW50cnlDb25maWdJbnRlcmZhY2Vcbj4oJ0ludGxUZWxDb3VudHJ5Q29uZmlnSW50ZXJmYWNlJyk7XG4iLCJpbXBvcnQgeyBJbnRsVGVsQ291bnRyeUNvbmZpZ0ludGVyZmFjZSB9IGZyb20gJy4vaW50bC10ZWwtY291bnRyeS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIGxpYnBob25lbnVtYmVyIGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcblxuZXhwb3J0IGNvbnN0IEludGxUZWxDb3VudHJ5Q29uZmlnRGVmYXVsdDogSW50bFRlbENvdW50cnlDb25maWdJbnRlcmZhY2UgPSB7XG4gIHByZVNlbGVjdGVkQ291bnRyeTogJ0tSJyBhcyBsaWJwaG9uZW51bWJlci5Db3VudHJ5Q29kZSxcbiAgYWxsb3dlZENvdW50cmllczogWydLUicsICdSVSddIGFzIEFycmF5PGxpYnBob25lbnVtYmVyLkNvdW50cnlDb2RlPixcbiAgcHJlZmVycmVkQ291bnRyaWVzOiBbXVxufTtcbiIsImV4cG9ydCBjbGFzcyBDb3VudHJ5Q29kZSB7XG4gIHB1YmxpYyBhbGxDb3VudHJpZXMgPSBbXG4gICAgWydBZmdoYW5pc3RhbiAow6LCgMKrw5jCp8OZwoHDmMK6w5jCp8OZwobDmMKzw5jCqsOYwqfDmcKGw6LCgMKsw6LCgMKOKScsICdhZicsICc5MyddLFxuICAgIFsnQWxiYW5pYSAoU2hxaXDDg8KrcmkpJywgJ2FsJywgJzM1NSddLFxuICAgIFsnQWxnZXJpYSAow6LCgMKrw5jCp8OZwoTDmMKsw5jCssOYwqfDmMKmw5jCscOiwoDCrMOiwoDCjiknLCAnZHonLCAnMjEzJ10sXG4gICAgWydBbWVyaWNhbiBTYW1vYScsICdhcycsICcxNjg0J10sXG4gICAgWydBbmRvcnJhJywgJ2FkJywgJzM3NiddLFxuICAgIFsnQW5nb2xhJywgJ2FvJywgJzI0NCddLFxuICAgIFsnQW5ndWlsbGEnLCAnYWknLCAnMTI2NCddLFxuICAgIFsnQW50aWd1YSBhbmQgQmFyYnVkYScsICdhZycsICcxMjY4J10sXG4gICAgWydBcmdlbnRpbmEnLCAnYXInLCAnNTQnXSxcbiAgICBbJ0FybWVuaWEgKMOVwoDDlcKhw5XCtcOVwqHDlcK9w5XCv8OVwqHDlcK2KScsICdhbScsICczNzQnXSxcbiAgICBbJ0FydWJhJywgJ2F3JywgJzI5NyddLFxuICAgIFsnQXVzdHJhbGlhJywgJ2F1JywgJzYxJywgMF0sXG4gICAgWydBdXN0cmlhICjDg8KWc3RlcnJlaWNoKScsICdhdCcsICc0MyddLFxuICAgIFsnQXplcmJhaWphbiAoQXrDicKZcmJheWNhbiknLCAnYXonLCAnOTk0J10sXG4gICAgWydCYWhhbWFzJywgJ2JzJywgJzEyNDInXSxcbiAgICBbJ0JhaHJhaW4gKMOiwoDCq8OYwqfDmcKEw5jCqMOYwq3DmMKxw5nCisOZwobDosKAwqzDosKAwo4pJywgJ2JoJywgJzk3MyddLFxuICAgIFsnQmFuZ2xhZGVzaCAow6DCpsKsw6DCpsK+w6DCpsKCw6DCpsKyw6DCpsK+w6DCpsKmw6DCp8KHw6DCpsK2KScsICdiZCcsICc4ODAnXSxcbiAgICBbJ0JhcmJhZG9zJywgJ2JiJywgJzEyNDYnXSxcbiAgICBbJ0JlbGFydXMgKMOQwpHDkMK1w5DCu8OQwrDDkcKAw5HCg8ORwoHDkcKMKScsICdieScsICczNzUnXSxcbiAgICBbJ0JlbGdpdW0gKEJlbGdpw4PCqyknLCAnYmUnLCAnMzInXSxcbiAgICBbJ0JlbGl6ZScsICdieicsICc1MDEnXSxcbiAgICBbJ0JlbmluIChCw4PCqW5pbiknLCAnYmonLCAnMjI5J10sXG4gICAgWydCZXJtdWRhJywgJ2JtJywgJzE0NDEnXSxcbiAgICBbJ0JodXRhbiAow6DCvcKgw6DCvcKWw6DCvsKyw6DCvcK0w6DCvcKCKScsICdidCcsICc5NzUnXSxcbiAgICBbJ0JvbGl2aWEnLCAnYm8nLCAnNTkxJ10sXG4gICAgWydCb3NuaWEgYW5kIEhlcnplZ292aW5hICjDkMKRw5DCvsORwoHDkMK9w5DCsCDDkMK4IMOQwqXDkMK1w5HCgMORwobDkMK1w5DCs8OQwr7DkMKyw5DCuMOQwr3DkMKwKScsICdiYScsICczODcnXSxcbiAgICBbJ0JvdHN3YW5hJywgJ2J3JywgJzI2NyddLFxuICAgIFsnQnJhemlsIChCcmFzaWwpJywgJ2JyJywgJzU1J10sXG4gICAgWydCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCAnaW8nLCAnMjQ2J10sXG4gICAgWydCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywgJ3ZnJywgJzEyODQnXSxcbiAgICBbJ0JydW5laScsICdibicsICc2NzMnXSxcbiAgICBbJ0J1bGdhcmlhICjDkMKRw5HCisOQwrvDkMKzw5DCsMORwoDDkMK4w5HCjyknLCAnYmcnLCAnMzU5J10sXG4gICAgWydCdXJraW5hIEZhc28nLCAnYmYnLCAnMjI2J10sXG4gICAgWydCdXJ1bmRpIChVYnVydW5kaSknLCAnYmknLCAnMjU3J10sXG4gICAgWydDYW1ib2RpYSAow6HCnsKAw6HCnsKYw6HCn8KSw6HCnsKWw6HCnsK7w6HCnsKHw6HCnsK2KScsICdraCcsICc4NTUnXSxcbiAgICBbJ0NhbWVyb29uIChDYW1lcm91biknLCAnY20nLCAnMjM3J10sXG4gICAgW1xuICAgICAgJ0NhbmFkYScsXG4gICAgICAnY2EnLFxuICAgICAgJzEnLFxuICAgICAgMSxcbiAgICAgIFtcbiAgICAgICAgJzIwNCcsXG4gICAgICAgICcyMjYnLFxuICAgICAgICAnMjM2JyxcbiAgICAgICAgJzI0OScsXG4gICAgICAgICcyNTAnLFxuICAgICAgICAnMjg5JyxcbiAgICAgICAgJzMwNicsXG4gICAgICAgICczNDMnLFxuICAgICAgICAnMzY1JyxcbiAgICAgICAgJzM4NycsXG4gICAgICAgICc0MDMnLFxuICAgICAgICAnNDE2JyxcbiAgICAgICAgJzQxOCcsXG4gICAgICAgICc0MzEnLFxuICAgICAgICAnNDM3JyxcbiAgICAgICAgJzQzOCcsXG4gICAgICAgICc0NTAnLFxuICAgICAgICAnNTA2JyxcbiAgICAgICAgJzUxNCcsXG4gICAgICAgICc1MTknLFxuICAgICAgICAnNTQ4JyxcbiAgICAgICAgJzU3OScsXG4gICAgICAgICc1ODEnLFxuICAgICAgICAnNTg3JyxcbiAgICAgICAgJzYwNCcsXG4gICAgICAgICc2MTMnLFxuICAgICAgICAnNjM5JyxcbiAgICAgICAgJzY0NycsXG4gICAgICAgICc2NzInLFxuICAgICAgICAnNzA1JyxcbiAgICAgICAgJzcwOScsXG4gICAgICAgICc3NDInLFxuICAgICAgICAnNzc4JyxcbiAgICAgICAgJzc4MCcsXG4gICAgICAgICc3ODInLFxuICAgICAgICAnODA3JyxcbiAgICAgICAgJzgxOScsXG4gICAgICAgICc4MjUnLFxuICAgICAgICAnODY3JyxcbiAgICAgICAgJzg3MycsXG4gICAgICAgICc5MDInLFxuICAgICAgICAnOTA1J1xuICAgICAgXVxuICAgIF0sXG4gICAgWydDYXBlIFZlcmRlIChLYWJ1IFZlcmRpKScsICdjdicsICcyMzgnXSxcbiAgICBbJ0NhcmliYmVhbiBOZXRoZXJsYW5kcycsICdicScsICc1OTknLCAxXSxcbiAgICBbJ0NheW1hbiBJc2xhbmRzJywgJ2t5JywgJzEzNDUnXSxcbiAgICBbJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyAoUsODwqlwdWJsaXF1ZSBjZW50cmFmcmljYWluZSknLCAnY2YnLCAnMjM2J10sXG4gICAgWydDaGFkIChUY2hhZCknLCAndGQnLCAnMjM1J10sXG4gICAgWydDaGlsZScsICdjbCcsICc1NiddLFxuICAgIFsnQ2hpbmEgKMOkwrjCrcOlwpvCvSknLCAnY24nLCAnODYnXSxcbiAgICBbJ0NocmlzdG1hcyBJc2xhbmQnLCAnY3gnLCAnNjEnLCAyXSxcbiAgICBbJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJywgJ2NjJywgJzYxJywgMV0sXG4gICAgWydDb2xvbWJpYScsICdjbycsICc1NyddLFxuICAgIFsnQ29tb3JvcyAow6LCgMKrw5jCrMOYwrLDmMKxIMOYwqfDmcKEw5nCgsOZwoXDmMKxw6LCgMKsw6LCgMKOKScsICdrbScsICcyNjknXSxcbiAgICBbJ0NvbmdvIChEUkMpIChKYW1odXJpIHlhIEtpZGVtb2tyYXNpYSB5YSBLb25nbyknLCAnY2QnLCAnMjQzJ10sXG4gICAgWydDb25nbyAoUmVwdWJsaWMpIChDb25nby1CcmF6emF2aWxsZSknLCAnY2cnLCAnMjQyJ10sXG4gICAgWydDb29rIElzbGFuZHMnLCAnY2snLCAnNjgyJ10sXG4gICAgWydDb3N0YSBSaWNhJywgJ2NyJywgJzUwNiddLFxuICAgIFsnQ8ODwrR0ZSBkw6LCgMKZSXZvaXJlJywgJ2NpJywgJzIyNSddLFxuICAgIFsnQ3JvYXRpYSAoSHJ2YXRza2EpJywgJ2hyJywgJzM4NSddLFxuICAgIFsnQ3ViYScsICdjdScsICc1MyddLFxuICAgIFsnQ3VyYcODwqdhbycsICdjdycsICc1OTknLCAwXSxcbiAgICBbJ0N5cHJ1cyAow47CmsOPwo3Dj8KAw4/CgcOOwr/Dj8KCKScsICdjeScsICczNTcnXSxcbiAgICBbJ0N6ZWNoIFJlcHVibGljICjDhMKMZXNrw4PCoSByZXB1Ymxpa2EpJywgJ2N6JywgJzQyMCddLFxuICAgIFsnRGVubWFyayAoRGFubWFyayknLCAnZGsnLCAnNDUnXSxcbiAgICBbJ0RqaWJvdXRpJywgJ2RqJywgJzI1MyddLFxuICAgIFsnRG9taW5pY2EnLCAnZG0nLCAnMTc2NyddLFxuICAgIFtcbiAgICAgICdEb21pbmljYW4gUmVwdWJsaWMgKFJlcMODwrpibGljYSBEb21pbmljYW5hKScsXG4gICAgICAnZG8nLFxuICAgICAgJzEnLFxuICAgICAgMixcbiAgICAgIFsnODA5JywgJzgyOScsICc4NDknXVxuICAgIF0sXG4gICAgWydFY3VhZG9yJywgJ2VjJywgJzU5MyddLFxuICAgIFsnRWd5cHQgKMOiwoDCq8OZwoXDmMK1w5jCscOiwoDCrMOiwoDCjiknLCAnZWcnLCAnMjAnXSxcbiAgICBbJ0VsIFNhbHZhZG9yJywgJ3N2JywgJzUwMyddLFxuICAgIFsnRXF1YXRvcmlhbCBHdWluZWEgKEd1aW5lYSBFY3VhdG9yaWFsKScsICdncScsICcyNDAnXSxcbiAgICBbJ0VyaXRyZWEnLCAnZXInLCAnMjkxJ10sXG4gICAgWydFc3RvbmlhIChFZXN0aSknLCAnZWUnLCAnMzcyJ10sXG4gICAgWydFdGhpb3BpYScsICdldCcsICcyNTEnXSxcbiAgICBbJ0ZhbGtsYW5kIElzbGFuZHMgKElzbGFzIE1hbHZpbmFzKScsICdmaycsICc1MDAnXSxcbiAgICBbJ0Zhcm9lIElzbGFuZHMgKEbDg8K4cm95YXIpJywgJ2ZvJywgJzI5OCddLFxuICAgIFsnRmlqaScsICdmaicsICc2NzknXSxcbiAgICBbJ0ZpbmxhbmQgKFN1b21pKScsICdmaScsICczNTgnLCAwXSxcbiAgICBbJ0ZyYW5jZScsICdmcicsICczMyddLFxuICAgIFsnRnJlbmNoIEd1aWFuYSAoR3V5YW5lIGZyYW7Dg8KnYWlzZSknLCAnZ2YnLCAnNTk0J10sXG4gICAgWydGcmVuY2ggUG9seW5lc2lhIChQb2x5bsODwqlzaWUgZnJhbsODwqdhaXNlKScsICdwZicsICc2ODknXSxcbiAgICBbJ0dhYm9uJywgJ2dhJywgJzI0MSddLFxuICAgIFsnR2FtYmlhJywgJ2dtJywgJzIyMCddLFxuICAgIFsnR2VvcmdpYSAow6HCg8Khw6HCg8KQw6HCg8Klw6HCg8KQw6HCg8Kgw6HCg8KXw6HCg8KVw6HCg8KUw6HCg8Kaw6HCg8KdKScsICdnZScsICc5OTUnXSxcbiAgICBbJ0dlcm1hbnkgKERldXRzY2hsYW5kKScsICdkZScsICc0OSddLFxuICAgIFsnR2hhbmEgKEdhYW5hKScsICdnaCcsICcyMzMnXSxcbiAgICBbJ0dpYnJhbHRhcicsICdnaScsICczNTAnXSxcbiAgICBbJ0dyZWVjZSAow47ClcOOwrvDjsK7w47CrMOOwrTDjsKxKScsICdncicsICczMCddLFxuICAgIFsnR3JlZW5sYW5kIChLYWxhYWxsaXQgTnVuYWF0KScsICdnbCcsICcyOTknXSxcbiAgICBbJ0dyZW5hZGEnLCAnZ2QnLCAnMTQ3MyddLFxuICAgIFsnR3VhZGVsb3VwZScsICdncCcsICc1OTAnLCAwXSxcbiAgICBbJ0d1YW0nLCAnZ3UnLCAnMTY3MSddLFxuICAgIFsnR3VhdGVtYWxhJywgJ2d0JywgJzUwMiddLFxuICAgIFsnR3Vlcm5zZXknLCAnZ2cnLCAnNDQnLCAxXSxcbiAgICBbJ0d1aW5lYSAoR3VpbsODwqllKScsICdnbicsICcyMjQnXSxcbiAgICBbJ0d1aW5lYS1CaXNzYXUgKEd1aW7Dg8KpIEJpc3NhdSknLCAnZ3cnLCAnMjQ1J10sXG4gICAgWydHdXlhbmEnLCAnZ3knLCAnNTkyJ10sXG4gICAgWydIYWl0aScsICdodCcsICc1MDknXSxcbiAgICBbJ0hvbmR1cmFzJywgJ2huJywgJzUwNCddLFxuICAgIFsnSG9uZyBLb25nICjDqcKmwpnDpsK4wq8pJywgJ2hrJywgJzg1MiddLFxuICAgIFsnSHVuZ2FyeSAoTWFneWFyb3JzesODwqFnKScsICdodScsICczNiddLFxuICAgIFsnSWNlbGFuZCAow4PCjXNsYW5kKScsICdpcycsICczNTQnXSxcbiAgICBbJ0luZGlhICjDoMKkwq3DoMKkwr7DoMKkwrDDoMKkwqQpJywgJ2luJywgJzkxJ10sXG4gICAgWydJbmRvbmVzaWEnLCAnaWQnLCAnNjInXSxcbiAgICBbJ0lyYW4gKMOiwoDCq8OYwqfDm8KMw5jCscOYwqfDmcKGw6LCgMKsw6LCgMKOKScsICdpcicsICc5OCddLFxuICAgIFsnSXJhcSAow6LCgMKrw5jCp8OZwoTDmMK5w5jCscOYwqfDmcKCw6LCgMKsw6LCgMKOKScsICdpcScsICc5NjQnXSxcbiAgICBbJ0lyZWxhbmQnLCAnaWUnLCAnMzUzJ10sXG4gICAgWydJc2xlIG9mIE1hbicsICdpbScsICc0NCcsIDJdLFxuICAgIFsnSXNyYWVsICjDosKAwqvDl8KZw5fCqcOXwqjDl8KQw5fCnMOiwoDCrMOiwoDCjiknLCAnaWwnLCAnOTcyJ10sXG4gICAgWydJdGFseSAoSXRhbGlhKScsICdpdCcsICczOScsIDBdLFxuICAgIFsnSmFtYWljYScsICdqbScsICcxODc2J10sXG4gICAgWydKYXBhbiAow6bCl8Klw6bCnMKsKScsICdqcCcsICc4MSddLFxuICAgIFsnSmVyc2V5JywgJ2plJywgJzQ0JywgM10sXG4gICAgWydKb3JkYW4gKMOiwoDCq8OYwqfDmcKEw5jCo8OYwrHDmMKvw5nChsOiwoDCrMOiwoDCjiknLCAnam8nLCAnOTYyJ10sXG4gICAgWydLYXpha2hzdGFuICjDkMKaw5DCsMOQwrfDkMKww5HChcORwoHDkcKCw5DCsMOQwr0pJywgJ2t6JywgJzcnLCAxXSxcbiAgICBbJ0tlbnlhJywgJ2tlJywgJzI1NCddLFxuICAgIFsnS2lyaWJhdGknLCAna2knLCAnNjg2J10sXG4gICAgWydLb3Nvdm8nLCAneGsnLCAnMzgzJ10sXG4gICAgWydLdXdhaXQgKMOiwoDCq8OYwqfDmcKEw5nCg8OZwojDmcKKw5jCqsOiwoDCrMOiwoDCjiknLCAna3cnLCAnOTY1J10sXG4gICAgWydLeXJneXpzdGFuICjDkMKaw5HCi8ORwoDDkMKzw5HCi8OQwrfDkcKBw5HCgsOQwrDDkMK9KScsICdrZycsICc5OTYnXSxcbiAgICBbJ0xhb3MgKMOgwrrCpcOgwrrCssOgwrrCpyknLCAnbGEnLCAnODU2J10sXG4gICAgWydMYXR2aWEgKExhdHZpamEpJywgJ2x2JywgJzM3MSddLFxuICAgIFsnTGViYW5vbiAow6LCgMKrw5nChMOYwqjDmcKGw5jCp8OZwobDosKAwqzDosKAwo4pJywgJ2xiJywgJzk2MSddLFxuICAgIFsnTGVzb3RobycsICdscycsICcyNjYnXSxcbiAgICBbJ0xpYmVyaWEnLCAnbHInLCAnMjMxJ10sXG4gICAgWydMaWJ5YSAow6LCgMKrw5nChMOZworDmMKow5nCisOYwqfDosKAwqzDosKAwo4pJywgJ2x5JywgJzIxOCddLFxuICAgIFsnTGllY2h0ZW5zdGVpbicsICdsaScsICc0MjMnXSxcbiAgICBbJ0xpdGh1YW5pYSAoTGlldHV2YSknLCAnbHQnLCAnMzcwJ10sXG4gICAgWydMdXhlbWJvdXJnJywgJ2x1JywgJzM1MiddLFxuICAgIFsnTWFjYXUgKMOmwr7Cs8OpwpbCgCknLCAnbW8nLCAnODUzJ10sXG4gICAgWydNYWNlZG9uaWEgKEZZUk9NKSAow5DCnMOQwrDDkMK6w5DCtcOQwrTDkMK+w5DCvcOQwrjDkcKYw5DCsCknLCAnbWsnLCAnMzg5J10sXG4gICAgWydNYWRhZ2FzY2FyIChNYWRhZ2FzaWthcmEpJywgJ21nJywgJzI2MSddLFxuICAgIFsnTWFsYXdpJywgJ213JywgJzI2NSddLFxuICAgIFsnTWFsYXlzaWEnLCAnbXknLCAnNjAnXSxcbiAgICBbJ01hbGRpdmVzJywgJ212JywgJzk2MCddLFxuICAgIFsnTWFsaScsICdtbCcsICcyMjMnXSxcbiAgICBbJ01hbHRhJywgJ210JywgJzM1NiddLFxuICAgIFsnTWFyc2hhbGwgSXNsYW5kcycsICdtaCcsICc2OTInXSxcbiAgICBbJ01hcnRpbmlxdWUnLCAnbXEnLCAnNTk2J10sXG4gICAgWydNYXVyaXRhbmlhICjDosKAwqvDmcKFw5nCiMOYwrHDmcKKw5jCqsOYwqfDmcKGw5nCisOYwqfDosKAwqzDosKAwo4pJywgJ21yJywgJzIyMiddLFxuICAgIFsnTWF1cml0aXVzIChNb3JpcyknLCAnbXUnLCAnMjMwJ10sXG4gICAgWydNYXlvdHRlJywgJ3l0JywgJzI2MicsIDFdLFxuICAgIFsnTWV4aWNvIChNw4PCqXhpY28pJywgJ214JywgJzUyJ10sXG4gICAgWydNaWNyb25lc2lhJywgJ2ZtJywgJzY5MSddLFxuICAgIFsnTW9sZG92YSAoUmVwdWJsaWNhIE1vbGRvdmEpJywgJ21kJywgJzM3MyddLFxuICAgIFsnTW9uYWNvJywgJ21jJywgJzM3NyddLFxuICAgIFsnTW9uZ29saWEgKMOQwpzDkMK+w5DCvcOQwrPDkMK+w5DCuyknLCAnbW4nLCAnOTc2J10sXG4gICAgWydNb250ZW5lZ3JvIChDcm5hIEdvcmEpJywgJ21lJywgJzM4MiddLFxuICAgIFsnTW9udHNlcnJhdCcsICdtcycsICcxNjY0J10sXG4gICAgWydNb3JvY2NvICjDosKAwqvDmMKnw5nChMOZwoXDmMK6w5jCscOYwqjDosKAwqzDosKAwo4pJywgJ21hJywgJzIxMicsIDBdLFxuICAgIFsnTW96YW1iaXF1ZSAoTW/Dg8KnYW1iaXF1ZSknLCAnbXonLCAnMjU4J10sXG4gICAgWydNeWFubWFyIChCdXJtYSkgKMOhwoDCmcOhwoDCvMOhwoDClMOhwoDCusOhwoDCmcOhwoDCrCknLCAnbW0nLCAnOTUnXSxcbiAgICBbJ05hbWliaWEgKE5hbWliacODwqspJywgJ25hJywgJzI2NCddLFxuICAgIFsnTmF1cnUnLCAnbnInLCAnNjc0J10sXG4gICAgWydOZXBhbCAow6DCpMKow6DCpcKHw6DCpMKqw6DCpMK+w6DCpMKyKScsICducCcsICc5NzcnXSxcbiAgICBbJ05ldGhlcmxhbmRzIChOZWRlcmxhbmQpJywgJ25sJywgJzMxJ10sXG4gICAgWydOZXcgQ2FsZWRvbmlhIChOb3V2ZWxsZS1DYWzDg8KpZG9uaWUpJyw