UNPKG

ember-material-icons

Version:

Google Material icons for your ember-cli app

204 lines 18.1 kB
import { CompiledProgram, CompiledBlock } from './compiled/blocks'; import { builder } from './compiler'; import * as WireFormat from '@glimmer/wire-format'; import { entryPoint as entryPointTable, layout as layoutTable, block as blockTable } from './symbol-table'; import { STATEMENTS } from './syntax/functions'; import { SPECIALIZE } from './syntax/specialize'; export function compileStatement(statement, builder) { let refined = SPECIALIZE.specialize(statement, builder.symbolTable); STATEMENTS.compile(refined, builder); } export class Template { constructor(statements, symbolTable) { this.statements = statements; this.symbolTable = symbolTable; } } export class Layout extends Template { } export class EntryPoint extends Template { constructor() { super(...arguments); this.compiled = null; } compile(env) { let compiled = this.compiled; if (!compiled) { let table = this.symbolTable; let b = builder(env, table); for (let i = 0; i < this.statements.length; i++) { let statement = this.statements[i]; let refined = SPECIALIZE.specialize(statement, table); STATEMENTS.compile(refined, b); } compiled = this.compiled = new CompiledProgram(b.start, b.end, this.symbolTable.size); } return compiled; } } export class InlineBlock extends Template { constructor() { super(...arguments); this.compiled = null; } splat(builder) { let table = builder.symbolTable; let locals = table.getSymbols().locals; if (locals) { builder.pushChildScope(); builder.bindPositionalArgsForLocals(locals); } for (let i = 0; i < this.statements.length; i++) { let statement = this.statements[i]; let refined = SPECIALIZE.specialize(statement, table); STATEMENTS.compile(refined, builder); } if (locals) { builder.popScope(); } } compile(env) { let compiled = this.compiled; if (!compiled) { let table = this.symbolTable; let b = builder(env, table); this.splat(b); compiled = this.compiled = new CompiledBlock(b.start, b.end); } return compiled; } } export class PartialBlock extends Template { constructor() { super(...arguments); this.compiled = null; } compile(env) { let compiled = this.compiled; if (!compiled) { let table = this.symbolTable; let b = builder(env, table); for (let i = 0; i < this.statements.length; i++) { let statement = this.statements[i]; let refined = SPECIALIZE.specialize(statement, table); STATEMENTS.compile(refined, b); } compiled = this.compiled = new CompiledProgram(b.start, b.end, table.size); } return compiled; } } export default class Scanner { constructor(block, meta, env) { this.block = block; this.meta = meta; this.env = env; } scanEntryPoint() { let { block, meta } = this; let symbolTable = entryPointTable(meta); let child = scanBlock(block, symbolTable, this.env); return new EntryPoint(child.statements, symbolTable); } scanLayout() { let { block, meta } = this; let { named, yields, hasPartials } = block; let symbolTable = layoutTable(meta, named, yields, hasPartials); let child = scanBlock(block, symbolTable, this.env); return new Layout(child.statements, symbolTable); } scanPartial(symbolTable) { let { block } = this; let child = scanBlock(block, symbolTable, this.env); return new PartialBlock(child.statements, symbolTable); } } export function scanBlock({ statements }, symbolTable, env) { return new RawInlineBlock(env, symbolTable, statements).scan(); } export var BaselineSyntax; (function (BaselineSyntax) { const { Ops } = WireFormat; BaselineSyntax.isScannedComponent = WireFormat.is(Ops.ScannedComponent); BaselineSyntax.isPrimitiveElement = WireFormat.is(Ops.OpenPrimitiveElement); BaselineSyntax.isOptimizedAppend = WireFormat.is(Ops.OptimizedAppend); BaselineSyntax.isUnoptimizedAppend = WireFormat.is(Ops.UnoptimizedAppend); BaselineSyntax.isAnyAttr = WireFormat.is(Ops.AnyDynamicAttr); BaselineSyntax.isStaticPartial = WireFormat.is(Ops.StaticPartial); BaselineSyntax.isDynamicPartial = WireFormat.is(Ops.DynamicPartial); BaselineSyntax.isFunctionExpression = WireFormat.is(Ops.Function); BaselineSyntax.isNestedBlock = WireFormat.is(Ops.NestedBlock); BaselineSyntax.isScannedBlock = WireFormat.is(Ops.ScannedBlock); BaselineSyntax.isDebugger = WireFormat.is(Ops.Debugger); var NestedBlock; (function (NestedBlock) { function defaultBlock(sexp) { return sexp[4]; } NestedBlock.defaultBlock = defaultBlock; function inverseBlock(sexp) { return sexp[5]; } NestedBlock.inverseBlock = inverseBlock; function params(sexp) { return sexp[2]; } NestedBlock.params = params; function hash(sexp) { return sexp[3]; } NestedBlock.hash = hash; })(NestedBlock = BaselineSyntax.NestedBlock || (BaselineSyntax.NestedBlock = {})); })(BaselineSyntax || (BaselineSyntax = {})); const { Ops } = WireFormat; export class RawInlineBlock { constructor(env, table, statements) { this.env = env; this.table = table; this.statements = statements; } scan() { let buffer = []; for (let i = 0; i < this.statements.length; i++) { let statement = this.statements[i]; if (WireFormat.Statements.isBlock(statement)) { buffer.push(this.specializeBlock(statement)); } else if (WireFormat.Statements.isComponent(statement)) { buffer.push(...this.specializeComponent(statement)); } else { buffer.push(statement); } } return new InlineBlock(buffer, this.table); } specializeBlock(block) { let [, path, params, hash, template, inverse] = block; return [Ops.ScannedBlock, path, params, hash, this.child(template), this.child(inverse)]; } specializeComponent(sexp) { let [, tag, component] = sexp; if (this.env.hasComponentDefinition(tag, this.table)) { let child = this.child(component); let attrs = new RawInlineBlock(this.env, this.table, component.attrs); return [[Ops.ScannedComponent, tag, attrs, component.args, child]]; } else { let buf = []; buf.push([Ops.OpenElement, tag, []]); buf.push(...component.attrs); buf.push([Ops.FlushElement]); buf.push(...component.statements); buf.push([Ops.CloseElement]); return buf; } } child(block) { if (!block) return null; let table = blockTable(this.table, block.locals); return new RawInlineBlock(this.env, table, block.statements); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2FubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtyQyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLElBQUksZUFBZSxFQUFFLE1BQU0sSUFBSSxXQUFXLEVBQUUsS0FBSyxJQUFJLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNHLE9BQU8sRUFDTCxVQUFVLEVBQ1gsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQ0wsVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7QUFJN0IsTUFBTSwyQkFBMkIsU0FBc0MsRUFBRSxPQUFzQjtJQUM3RixJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU07SUFDSixZQUFtQixVQUF5QyxFQUFTLFdBQXdCO1FBQTFFLGVBQVUsR0FBVixVQUFVLENBQStCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0NBQ2xHO0FBRUQsTUFBTSxhQUFjLFNBQVEsUUFBUTtDQUVuQztBQUVELE1BQU0saUJBQWtCLFNBQVEsUUFBUTtJQUF4Qzs7UUFDVSxhQUFRLEdBQTRCLElBQUksQ0FBQztJQXFCbkQsQ0FBQztJQWpCQyxPQUFPLENBQUMsR0FBZ0I7UUFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDZCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBRTdCLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFNUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUVELFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsUUFBUTtJQUF6Qzs7UUFDVSxhQUFRLEdBQTBCLElBQUksQ0FBQztJQW1DakQsQ0FBQztJQWpDQyxLQUFLLENBQUMsT0FBc0I7UUFDMUIsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUVoQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBRXZDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWCxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFnQjtRQUN0QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU1QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWQsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxtQkFBb0IsU0FBUSxRQUFRO0lBQTFDOztRQUNVLGFBQVEsR0FBNEIsSUFBSSxDQUFDO0lBb0JuRCxDQUFDO0lBaEJDLE9BQU8sQ0FBQyxHQUFnQjtRQUN0QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN0RCxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBRUQsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsT0FBTztJQUNaLFlBQW9CLEtBQThCLEVBQVUsSUFBa0IsRUFBVSxHQUFnQjtRQUFwRixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWM7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFhO0lBQ3hHLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFM0IsSUFBSSxXQUFXLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUUzQyxJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXLENBQUMsV0FBd0I7UUFDbEMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUVyQixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxvQkFBb0IsRUFBRSxVQUFVLEVBQW1CLEVBQUUsV0FBd0IsRUFBRSxHQUFnQjtJQUNuRyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqRSxDQUFDO0FBS0QsTUFBTSxLQUFXLGNBQWMsQ0FnRjlCO0FBaEZELFdBQWlCLGNBQWM7SUFHN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUlkLGlDQUFrQixHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQW1CLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBTzNFLGlDQUFrQixHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQXVCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBR25GLGdDQUFpQixHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQWtCLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUd4RSxrQ0FBbUIsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFvQixHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUc5RSx3QkFBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQWlCLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUc5RCw4QkFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQWdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRSwrQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFpQixHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFJckUsbUNBQW9CLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBcUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBR3ZFLDRCQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBYyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFHNUQsNkJBQWMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFlLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUcvRCx5QkFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQVcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBSWhFLElBQWlCLFdBQVcsQ0FnQjNCO0lBaEJELFdBQWlCLFdBQVc7UUFDMUIsc0JBQTZCLElBQWlCO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUZlLHdCQUFZLGVBRTNCLENBQUE7UUFFRCxzQkFBNkIsSUFBaUI7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDO1FBRmUsd0JBQVksZUFFM0IsQ0FBQTtRQUVELGdCQUF1QixJQUFpQjtZQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFGZSxrQkFBTSxTQUVyQixDQUFBO1FBRUQsY0FBcUIsSUFBaUI7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDO1FBRmUsZ0JBQUksT0FFbkIsQ0FBQTtJQUNILENBQUMsRUFoQmdCLFdBQVcsR0FBWCwwQkFBVyxLQUFYLDBCQUFXLFFBZ0IzQjtBQW1CSCxDQUFDLEVBaEZnQixjQUFjLEtBQWQsY0FBYyxRQWdGOUI7QUFFRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBRTNCLE1BQU07SUFDSixZQUFvQixHQUFnQixFQUFVLEtBQWtCLEVBQVUsVUFBaUM7UUFBdkYsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUF1QjtJQUFHLENBQUM7SUFFL0csSUFBSTtRQUNGLElBQUksTUFBTSxHQUFrQyxFQUFFLENBQUM7UUFFL0MsR0FBRyxDQUFBLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9DLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFrQztRQUN4RCxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQXFDO1FBQy9ELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFOUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxHQUFHLEdBQWtDLEVBQUUsQ0FBQztZQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBOEI7UUFDbEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9