OLD | NEW |
1 { | 1 { |
2 "version": 3, | 2 "version": 3, |
3 "file": "platform.concat.js", | 3 "file": "platform.concat.js", |
4 "sources": [ | 4 "sources": [ |
5 "build/boot.js", | 5 "build/boot.js", |
6 "../WeakMap/weakmap.js", | 6 "../WeakMap/weakmap.js", |
7 "build/if-poly.js", | 7 "build/if-poly.js", |
8 "../observe-js/src/observe.js", | 8 "../observe-js/src/observe.js", |
9 "../ShadowDOM/src/wrappers.js", | 9 "../ShadowDOM/src/wrappers.js", |
10 "../ShadowDOM/src/microtask.js", | 10 "../ShadowDOM/src/microtask.js", |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 "../CustomElements/src/Observer.js", | 72 "../CustomElements/src/Observer.js", |
73 "../CustomElements/src/CustomElements.js", | 73 "../CustomElements/src/CustomElements.js", |
74 "../CustomElements/src/Parser.js", | 74 "../CustomElements/src/Parser.js", |
75 "../CustomElements/src/boot.js", | 75 "../CustomElements/src/boot.js", |
76 "src/patches-custom-elements.js", | 76 "src/patches-custom-elements.js", |
77 "src/dom.js", | 77 "src/dom.js", |
78 "src/unresolved.js", | 78 "src/unresolved.js", |
79 "src/module.js" | 79 "src/module.js" |
80 ], | 80 ], |
81 "names": [], | 81 "names": [], |
82 "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC5CA;AACA;A;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;A;AC3qDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxaA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChDA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5XA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChFA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;A;ACv5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;A;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjuBA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;A
CjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtUA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/BA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClCA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;A;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxEA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;A;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;A;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;A;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;A
CpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9
BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3BA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnE
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnDA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;A;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvpBA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;A;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpEA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;A;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9BA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClB
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3GA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjGA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3wBA,Q;ACAA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3BA,C;ACAA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjkBA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjiBA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA,sD;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uB;ACvMA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/KA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;A;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4D;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;ACzXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;A;AC5dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA,0B;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChCA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC
hGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;A;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A", | 82 "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC5CA;AACA;A;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;A;AC3qDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxaA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChDA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChFA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;A;ACv5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;A;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;A;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;A;ACjuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;A;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;A;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtUA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/BA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;A;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1BA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3CA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9DA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;A;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9BA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnEA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnDA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChGA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;A;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvpBA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;A;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;A;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvFA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClBA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjGA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3wBA,Q;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;A;AC3BA,C;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjkBA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,
sD;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uB;ACvMA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/KA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;A;ACzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;A;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjCA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA,4D;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;A;AC9WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;A;AC5dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA,0B;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChCA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;A;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;A;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A", |
83 "sourcesContent": [ | 83 "sourcesContent": [ |
84 "/**\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved
.\n * This code may only be used under the BSD style license found at http://pol
ymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:
//polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be foun
d at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights gran
t found at http://polymer.github.io/PATENTS.txt\n */\n\nwindow.Platform = window
.Platform || {};\n// prepopulate window.logFlags if necessary\nwindow.logFlags =
window.logFlags || {};\n// process flags\n(function(scope){\n // import\n var
flags = scope.flags || {};\n // populate flags from location\n location.searc
h.slice(1).split('&').forEach(function(o) {\n o = o.split('=');\n o[0] &&
(flags[o[0]] = o[1] || true);\n });\n var entryPoint = document.currentScript
||\n document.querySelector('script[src*=\"platform.js\"]');\n if (entryPo
int) {\n var a = entryPoint.attributes;\n for (var i = 0, n; i < a.length;
i++) {\n n = a[i];\n if (n.name !== 'src') {\n flags[n.name] =
n.value || true;\n }\n }\n }\n if (flags.log) {\n flags.log.split(
',').forEach(function(f) {\n window.logFlags[f] = true;\n });\n }\n //
If any of these flags match 'native', then force native ShadowDOM; any\n // ot
her truthy value, or failure to detect native\n // ShadowDOM, results in polyfi
ll\n flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;\n if (f
lags.shadow === 'native') {\n flags.shadow = false;\n } else {\n flags.sh
adow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\n }\n\n if (fl
ags.shadow && document.querySelectorAll('script').length > 1) {\n console.war
n('platform.js is not the first script on the page. ' +\n 'See http://www
.polymer-project.org/docs/start/platform.html#setup ' +\n 'for details.')
;\n }\n\n // CustomElements polyfill flag\n if (flags.register) {\n window
.CustomElements = window.CustomElements || {flags: {}};\n window.CustomElemen
ts.flags.register = flags.register;\n }\n\n if (flags.imports) {\n window.H
TMLImports = window.HTMLImports || {flags: {}};\n window.HTMLImports.flags.im
ports = flags.imports;\n }\n\n // export\n scope.flags = flags;\n})(Platform)
;\n", | 84 "/**\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved
.\n * This code may only be used under the BSD style license found at http://pol
ymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:
//polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be foun
d at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights gran
t found at http://polymer.github.io/PATENTS.txt\n */\n\nwindow.Platform = window
.Platform || {};\n// prepopulate window.logFlags if necessary\nwindow.logFlags =
window.logFlags || {};\n// process flags\n(function(scope){\n // import\n var
flags = scope.flags || {};\n // populate flags from location\n location.searc
h.slice(1).split('&').forEach(function(o) {\n o = o.split('=');\n o[0] &&
(flags[o[0]] = o[1] || true);\n });\n var entryPoint = document.currentScript
||\n document.querySelector('script[src*=\"platform.js\"]');\n if (entryPo
int) {\n var a = entryPoint.attributes;\n for (var i = 0, n; i < a.length;
i++) {\n n = a[i];\n if (n.name !== 'src') {\n flags[n.name] =
n.value || true;\n }\n }\n }\n if (flags.log) {\n flags.log.split(
',').forEach(function(f) {\n window.logFlags[f] = true;\n });\n }\n //
If any of these flags match 'native', then force native ShadowDOM; any\n // ot
her truthy value, or failure to detect native\n // ShadowDOM, results in polyfi
ll\n flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;\n if (f
lags.shadow === 'native') {\n flags.shadow = false;\n } else {\n flags.sh
adow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\n }\n\n if (fl
ags.shadow && document.querySelectorAll('script').length > 1) {\n console.war
n('platform.js is not the first script on the page. ' +\n 'See http://www
.polymer-project.org/docs/start/platform.html#setup ' +\n 'for details.')
;\n }\n\n // CustomElements polyfill flag\n if (flags.register) {\n window
.CustomElements = window.CustomElements || {flags: {}};\n window.CustomElemen
ts.flags.register = flags.register;\n }\n\n if (flags.imports) {\n window.H
TMLImports = window.HTMLImports || {flags: {}};\n window.HTMLImports.flags.im
ports = flags.imports;\n }\n\n // export\n scope.flags = flags;\n})(Platform)
;\n", |
85 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is governed by a BSD-style\n * license that can be found in the
LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (function() {\n
var defineProperty = Object.defineProperty;\n var counter = Date.now() % 1
e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math.random()
* 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.prototype = {\n
set: function(key, value) {\n var entry = key[this.name];\n if (en
try && entry[0] === key)\n entry[1] = value;\n else\n d
efineProperty(key, this.name, {value: [key, value], writable: true});\n },\
n get: function(key) {\n var entry;\n return (entry = key[thi
s.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n
delete: function(key) {\n var entry = key[this.name];\n if (!en
try) return false;\n var hasValue = entry[0] === key;\n entry[0] =
entry[1] = undefined;\n return hasValue;\n },\n has: function(
key) {\n var entry = key[this.name];\n if (!entry) return false;\n
return entry[0] === key;\n }\n };\n\n window.WeakMap = WeakMa
p;\n })();\n}\n", | 85 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is governed by a BSD-style\n * license that can be found in the
LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (function() {\n
var defineProperty = Object.defineProperty;\n var counter = Date.now() % 1
e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math.random()
* 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.prototype = {\n
set: function(key, value) {\n var entry = key[this.name];\n if (en
try && entry[0] === key)\n entry[1] = value;\n else\n d
efineProperty(key, this.name, {value: [key, value], writable: true});\n },\
n get: function(key) {\n var entry;\n return (entry = key[thi
s.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n
delete: function(key) {\n var entry = key[this.name];\n if (!en
try) return false;\n var hasValue = entry[0] === key;\n entry[0] =
entry[1] = undefined;\n return hasValue;\n },\n has: function(
key) {\n var entry = key[this.name];\n if (!entry) return false;\n
return entry[0] === key;\n }\n };\n\n window.WeakMap = WeakMa
p;\n })();\n}\n", |
86 "// select ShadowDOM impl\r\nif (Platform.flags.shadow) {\r\n", | 86 "// select ShadowDOM impl\r\nif (Platform.flags.shadow) {\r\n", |
87 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(global) {\n 'u
se strict';\n\n var testingExposeCycleCount = global.testingExposeCycleCount;\n
\n // Detect and do basic sanity checking on Object/Array.observe.\n function
detectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n
typeof Array.observe !== 'function') {\n return false;\n }\n\n var
records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n
var test = {};\n var arr = [];\n Object.observe(test, callback);\n
Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete te
st.id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeReco
rds(callback);\n if (records.length !== 5)\n return false;\n\n if (re
cords[0].type != 'add' ||\n records[1].type != 'update' ||\n recor
ds[2].type != 'delete' ||\n records[3].type != 'splice' ||\n recor
ds[4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(te
st, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n
var hasObserve = detectObjectObserve();\n\n function detectEval() {\n // D
on't test for eval if we're running in a Chrome App environment.\n // We chec
k for APIs set that only exist in a Chrome App context.\n if (typeof chrome !
== 'undefined' && chrome.app && chrome.app.runtime) {\n return false;\n
}\n\n // Firefox OS Apps do not allow eval. This feature detection is very ha
cky\n // but even if some other platform adds support for this function this
code\n // will continue to work.\n if (typeof navigator != 'undefined' &&
navigator.getDeviceStorage) {\n return false;\n }\n\n try {\n va
r f = new Function('', 'return true;');\n return f();\n } catch (ex) {\n
return false;\n }\n }\n\n var hasEval = detectEval();\n\n function i
sIndex(s) {\n return +s === s >>> 0 && s !== '';\n }\n\n function toNumber(
s) {\n return +s;\n }\n\n function isObject(obj) {\n return obj === Obje
ct(obj);\n }\n\n var numberIsNaN = global.Number.isNaN || function(value) {\n
return typeof value === 'number' && global.isNaN(value);\n }\n\n function a
reSameValue(left, right) {\n if (left === right)\n return left !== 0 ||
1 / left === 1 / right;\n if (numberIsNaN(left) && numberIsNaN(right))\n
return true;\n\n return left !== left && right !== right;\n }\n\n var crea
teObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n funct
ion(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return
obj;\n var newObject = Object.create(proto);\n Object.getOwnPropertyNa
mes(obj).forEach(function(name) {\n Object.defineProperty(newObject, name
,\n Object.getOwnPropertyDescriptor(obj, name));\n
});\n return newObject;\n };\n\n var identStart = '[\\$_a-zA-Z]';\n
var identPart = '[\\$_a-zA-Z0-9]';\n var identRegExp = new RegExp('^' + ident
Start + '+' + identPart + '*' + '$');\n\n function getPathCharType(char) {\n
if (char === undefined)\n return 'eof';\n\n var code = char.charCodeAt(
0);\n\n switch(code) {\n case 0x5B: // [\n case 0x5D: // ]\n c
ase 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n case 0x30:
// 0\n return char;\n\n case 0x5F: // _\n case 0x24: // $\n
return 'ident';\n\n case 0x20: // Space\n case 0x09: // Tab\n
case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-brea
k space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Sep
arator\n case 0x2029: // Paragraph Separator\n return 'ws';\n }\
n\n // a-z, A-Z\n if ((0x61 <= code && code <= 0x7A) || (0x41 <= code && c
ode <= 0x5A))\n return 'ident';\n\n // 1-9\n if (0x31 <= code && code
<= 0x39)\n return 'number';\n\n return 'else';\n }\n\n var pathStateM
achine = {\n 'beforePath': {\n 'ws': ['beforePath'],\n 'ident': ['i
nIdent', 'append'],\n '[': ['beforeElement'],\n 'eof': ['afterPath']\n
},\n\n 'inPath': {\n 'ws': ['inPath'],\n '.': ['beforeIdent'],\
n '[': ['beforeElement'],\n 'eof': ['afterPath']\n },\n\n 'befor
eIdent': {\n 'ws': ['beforeIdent'],\n 'ident': ['inIdent', 'append']\n
},\n\n 'inIdent': {\n 'ident': ['inIdent', 'append'],\n '0': ['
inIdent', 'append'],\n 'number': ['inIdent', 'append'],\n 'ws': ['inPa
th', 'push'],\n '.': ['beforeIdent', 'push'],\n '[': ['beforeElement',
'push'],\n 'eof': ['afterPath', 'push']\n },\n\n 'beforeElement': {\
n 'ws': ['beforeElement'],\n '0': ['afterZero', 'append'],\n 'num
ber': ['inIndex', 'append'],\n \"'\": ['inSingleQuote', 'append', ''],\n
'\"': ['inDoubleQuote', 'append', '']\n },\n\n 'afterZero': {\n 'w
s': ['afterElement', 'push'],\n ']': ['inPath', 'push']\n },\n\n 'inI
ndex': {\n '0': ['inIndex', 'append'],\n 'number': ['inIndex', 'append
'],\n 'ws': ['afterElement'],\n ']': ['inPath', 'push']\n },\n\n
'inSingleQuote': {\n \"'\": ['afterElement'],\n 'eof': ['error'],\n
'else': ['inSingleQuote', 'append']\n },\n\n 'inDoubleQuote': {\n
'\"': ['afterElement'],\n 'eof': ['error'],\n 'else': ['inDoubleQuote
', 'append']\n },\n\n 'afterElement': {\n 'ws': ['afterElement'],\n
']': ['inPath', 'push']\n }\n }\n\n function noop() {}\n\n function pa
rsePath(path) {\n var keys = [];\n var index = -1;\n var c, newChar, ke
y, type, transition, action, typeMap, mode = 'beforePath';\n\n var actions =
{\n push: function() {\n if (key === undefined)\n return;\n
\n keys.push(key);\n key = undefined;\n },\n\n append: f
unction() {\n if (key === undefined)\n key = newChar\n el
se\n key += newChar;\n }\n };\n\n function maybeUnescapeQuot
e() {\n if (index >= path.length)\n return;\n\n var nextChar =
path[index + 1];\n if ((mode == 'inSingleQuote' && nextChar == \"'\") ||\n
(mode == 'inDoubleQuote' && nextChar == '\"')) {\n index++;\n
newChar = nextChar;\n actions.append();\n return true;\n
}\n }\n\n while (mode) {\n index++;\n c = path[index];\n\n
if (c == '\\\\' && maybeUnescapeQuote(mode))\n continue;\n\n type =
getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition
= typeMap[type] || typeMap['else'] || 'error';\n\n if (transition == 'error
')\n return; // parse error;\n\n mode = transition[0];\n action
= actions[transition[1]] || noop;\n newChar = transition[2] === undefined
? c : transition[2];\n action();\n\n if (mode === 'afterPath') {\n
return keys;\n }\n }\n\n return; // parse error\n }\n\n functio
n isIdent(s) {\n return identRegExp.test(s);\n }\n\n var constructorIsPriva
te = {};\n\n function Path(parts, privateToken) {\n if (privateToken !== con
structorIsPrivate)\n throw Error('Use Path.get to retrieve path objects');\
n\n for (var i = 0; i < parts.length; i++) {\n this.push(String(parts[i]
));\n }\n\n if (hasEval && this.length) {\n this.getValueFrom = this.
compiledGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simple LRU cac
he\n var pathCache = {};\n\n function getPath(pathString) {\n if (pathStrin
g instanceof Path)\n return pathString;\n\n if (pathString == null || pa
thString.length == 0)\n pathString = '';\n\n if (typeof pathString != 's
tring') {\n if (isIndex(pathString.length)) {\n // Constructed with
array-like (pre-parsed) keys\n return new Path(pathString, constructorIsP
rivate);\n }\n\n pathString = String(pathString);\n }\n\n var pa
th = pathCache[pathString];\n if (path)\n return path;\n\n var parts
= parsePath(pathString);\n if (!parts)\n return invalidPath;\n\n var
path = new Path(parts, constructorIsPrivate);\n pathCache[pathString] = path;
\n return path;\n }\n\n Path.get = getPath;\n\n function formatAccessor(ke
y) {\n if (isIndex(key)) {\n return '[' + key + ']';\n } else {\n
return '[\"' + key.replace(/\"/g, '\\\\\"') + '\"]';\n }\n }\n\n Path.pro
totype = createObject({\n __proto__: [],\n valid: true,\n\n toString: f
unction() {\n var pathString = '';\n for (var i = 0; i < this.length;
i++) {\n var key = this[i];\n if (isIdent(key)) {\n pathS
tring += i ? '.' + key : key;\n } else {\n pathString += formatA
ccessor(key);\n }\n }\n\n return pathString;\n },\n\n get
ValueFrom: function(obj, directObserver) {\n for (var i = 0; i < this.lengt
h; i++) {\n if (obj == null)\n return;\n obj = obj[this[i
]];\n }\n return obj;\n },\n\n iterateObjects: function(obj, obs
erve) {\n for (var i = 0; i < this.length; i++) {\n if (i)\n
obj = obj[this[i - 1]];\n if (!isObject(obj))\n return;\n
observe(obj, this[0]);\n }\n },\n\n compiledGetValueFromFn: functi
on() {\n var str = '';\n var pathString = 'obj';\n str += 'if (ob
j != null';\n var i = 0;\n var key;\n for (; i < (this.length - 1
); i++) {\n key = this[i];\n pathString += isIdent(key) ? '.' + ke
y : formatAccessor(key);\n str += ' &&\\n ' + pathString + ' != null'
;\n }\n str += ')\\n';\n\n var key = this[i];\n pathString +
= isIdent(key) ? '.' + key : formatAccessor(key);\n\n str += ' return ' +
pathString + ';\\nelse\\n return undefined;';\n return new Function('obj',
str);\n },\n\n setValueFrom: function(obj, value) {\n if (!this.leng
th)\n return false;\n\n for (var i = 0; i < this.length - 1; i++) {\
n if (!isObject(obj))\n return false;\n obj = obj[this[i]
];\n }\n\n if (!isObject(obj))\n return false;\n\n obj[thi
s[i]] = value;\n return true;\n }\n });\n\n var invalidPath = new Path
('', constructorIsPrivate);\n invalidPath.valid = false;\n invalidPath.getValu
eFrom = invalidPath.setValueFrom = function() {};\n\n var MAX_DIRTY_CHECK_CYCLE
S = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (
cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\
n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n
\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (va
r prop in object)\n return false;\n return true;\n }\n\n function diff
IsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmp
ty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\n\n function
diffObjectFromOldObject(object, oldObject) {\n var added = {};\n var remov
ed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var
newValue = object[prop];\n\n if (newValue !== undefined && newValue === old
Object[prop])\n continue;\n\n if (!(prop in object)) {\n remo
ved[prop] = undefined;\n continue;\n }\n\n if (newValue !== old
Object[prop])\n changed[prop] = newValue;\n }\n\n for (var prop in
object) {\n if (prop in oldObject)\n continue;\n\n added[prop]
= object[prop];\n }\n\n if (Array.isArray(object) && object.length !== old
Object.length)\n changed.length = object.length;\n\n return {\n add
ed: added,\n removed: removed,\n changed: changed\n };\n }\n\n va
r eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n r
eturn false;\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[
i]();\n }\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM =
hasObserve ? (function(){\n var eomObj = { pingPong: true };\n var eomRunS
cheduled = false;\n\n Object.observe(eomObj, function() {\n runEOMTasks(
);\n eomRunScheduled = false;\n });\n\n return function(fn) {\n
eomTasks.push(fn);\n if (!eomRunScheduled) {\n eomRunScheduled = tru
e;\n eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (f
unction() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })()
;\n\n var observedObjectCache = [];\n\n function newObservedObject() {\n va
r observer;\n var object;\n var discardRecords = false;\n var first = t
rue;\n\n function callback(records) {\n if (observer && observer.state_
=== OPENED && !discardRecords)\n observer.check_(records);\n }\n\n
return {\n open: function(obs) {\n if (observer)\n throw Er
ror('ObservedObject in use');\n\n if (!first)\n Object.deliverCh
angeRecords(callback);\n\n observer = obs;\n first = false;\n
},\n observe: function(obj, arrayObserve) {\n object = obj;\n
if (arrayObserve)\n Array.observe(object, callback);\n else\n
Object.observe(object, callback);\n },\n deliver: function(di
scard) {\n discardRecords = discard;\n Object.deliverChangeRecords
(callback);\n discardRecords = false;\n },\n close: function()
{\n observer = undefined;\n Object.unobserve(object, callback);\n
observedObjectCache.push(this);\n }\n };\n }\n\n /*\n * The o
bservedSet abstraction is a perf optimization which reduces the total\n * numb
er of Object.observe observations of a set of objects. The idea is that\n * gr
oups of Observers will have some object dependencies in common and this\n * ob
served set ensures that each object in the transitive closure of\n * dependenc
ies is only observed once. The observedSet acts as a write barrier\n * such th
at whenever any change comes through, all Observers are checked for\n * change
d values.\n *\n * Note that this optimization is explicitly moving work from
setup-time to\n * change-time.\n *\n * TODO(rafaelw): Implement \"garbage
collection\". In order to move work off\n * the critical path, when Observers
are closed, their observed objects are\n * not Object.unobserve(d). As a resu
lt, it's possible that if the observedSet\n * is kept open, but some Observers
have been closed, it could cause \"leaks\"\n * (prevent otherwise collectable
objects from being collected). At some\n * point, we should implement increme
ntal \"gc\" which keeps a list of\n * observedSets which may need clean-up and
does small amounts of cleanup on a\n * timeout until all is clean.\n */\n\n
function getObservedObject(observer, object, arrayObserve) {\n var dir = ob
servedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n di
r.observe(object, arrayObserve);\n return dir;\n }\n\n var observedSetCache
= [];\n\n function newObservedSet() {\n var observerCount = 0;\n var obs
ervers = [];\n var objects = [];\n var rootObj;\n var rootObjProps;\n\n
function observe(obj, prop) {\n if (!obj)\n return;\n\n if
(obj === rootObj)\n rootObjProps[prop] = true;\n\n if (objects.index
Of(obj) < 0) {\n objects.push(obj);\n Object.observe(obj, callback
);\n }\n\n observe(Object.getPrototypeOf(obj), prop);\n }\n\n fu
nction allRootObjNonObservedProps(recs) {\n for (var i = 0; i < recs.length
; i++) {\n var rec = recs[i];\n if (rec.object !== rootObj ||\n
rootObjProps[rec.name] ||\n rec.type === 'setPrototype') {\n
return false;\n }\n }\n return true;\n }\n\n fu
nction callback(recs) {\n if (allRootObjNonObservedProps(recs))\n re
turn;\n\n var observer;\n for (var i = 0; i < observers.length; i++) {
\n observer = observers[i];\n if (observer.state_ == OPENED) {\n
observer.iterateObjects_(observe);\n }\n }\n\n for (var
i = 0; i < observers.length; i++) {\n observer = observers[i];\n
if (observer.state_ == OPENED) {\n observer.check_();\n }\n
}\n }\n\n var record = {\n object: undefined,\n objects: object
s,\n open: function(obs, object) {\n if (!rootObj) {\n root
Obj = object;\n rootObjProps = {};\n }\n\n observers.push
(obs);\n observerCount++;\n obs.iterateObjects_(observe);\n }
,\n close: function(obs) {\n observerCount--;\n if (observerC
ount > 0) {\n return;\n }\n\n for (var i = 0; i < objects
.length; i++) {\n Object.unobserve(objects[i], callback);\n Ob
server.unobservedCount++;\n }\n\n observers.length = 0;\n o
bjects.length = 0;\n rootObj = undefined;\n rootObjProps = undefin
ed;\n observedSetCache.push(this);\n }\n };\n\n return record;
\n }\n\n var lastObservedSet;\n\n function getObservedSet(observer, obj) {\n
if (!lastObservedSet || lastObservedSet.object !== obj) {\n lastObserved
Set = observedSetCache.pop() || newObservedSet();\n lastObservedSet.object
= obj;\n }\n lastObservedSet.open(observer, obj);\n return lastObserved
Set;\n }\n\n var UNOPENED = 0;\n var OPENED = 1;\n var CLOSED = 2;\n var RE
SETTING = 3;\n\n var nextObserverId = 1;\n\n function Observer() {\n this.s
tate_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined
; // TODO(rafaelw): Should be WeakRef\n this.directObserver_ = undefined;\n
this.value_ = undefined;\n this.id_ = nextObserverId++;\n }\n\n Observer.
prototype = {\n open: function(callback, target) {\n if (this.state_ !=
UNOPENED)\n throw Error('Observer has already been opened.');\n\n ad
dToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n
this.connect_();\n this.state_ = OPENED;\n return this.value_;\n
},\n\n close: function() {\n if (this.state_ != OPENED)\n retu
rn;\n\n removeFromAll(this);\n this.disconnect_();\n this.value_
= undefined;\n this.callback_ = undefined;\n this.target_ = undefined;
\n this.state_ = CLOSED;\n },\n\n deliver: function() {\n if (th
is.state_ != OPENED)\n return;\n\n dirtyCheck(this);\n },\n\n
report_: function(changes) {\n try {\n this.callback_.apply(this.tar
get_, changes);\n } catch (ex) {\n Observer._errorThrownDuringCallba
ck = true;\n console.error('Exception caught during observer callback: '
+\n (ex.stack || ex));\n }\n },\n\n discardChan
ges: function() {\n this.check_(undefined, true);\n return this.value_
;\n }\n }\n\n var collectObservers = !hasObserve;\n var allObservers;\n O
bserver._allObserversCount = 0;\n\n if (collectObservers) {\n allObservers =
[];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;
\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\
n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;
\n }\n\n var runningMicrotaskCheckpoint = false;\n\n global.Platform = global
.Platform || {};\n\n global.Platform.performMicrotaskCheckpoint = function() {\
n if (runningMicrotaskCheckpoint)\n return;\n\n if (!collectObservers
)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0
;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck = al
lObservers;\n allObservers = [];\n anyChanged = false;\n\n for (v
ar i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n
if (observer.state_ != OPENED)\n continue;\n\n if (observer.ch
eck_())\n anyChanged = true;\n\n allObservers.push(observer);\n
}\n if (runEOMTasks())\n anyChanged = true;\n } while (cycle
s < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)\n
global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint =
false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers =
function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver
(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldObj
ect_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __pro
to__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: function(
callback, target) {\n if (hasObserve) {\n this.directObserver_ = get
ObservedObject(this, this.value_,\n
this.arrayObserve);\n } else {\n this.oldObject_ = this.copyObje
ct(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n
var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n
copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n
copy.length = object.length;\n return copy;\n },\n\n check_:
function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n
if (hasObserve) {\n if (!changeRecords)\n return false;\n\n
oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_,
changeRecords,\n oldValues);\n }
else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldO
bject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n
return false;\n\n if (!hasObserve)\n this.oldObject_ = this.c
opyObject(this.value_);\n\n this.report_([\n diff.added || {},\n
diff.removed || {},\n diff.changed || {},\n function(property)
{\n return oldValues[property];\n }\n ]);\n\n return
true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n
this.directObserver_.close();\n this.directObserver_ = undefined;\n
} else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver:
function() {\n if (this.state_ != OPENED)\n return;\n\n if (ha
sObserve)\n this.directObserver_.deliver(false);\n else\n dir
tyCheck(this);\n },\n\n discardChanges: function() {\n if (this.direc
tObserver_)\n this.directObserver_.deliver(true);\n else\n th
is.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n
}\n });\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\n
throw Error('Provided object is not an Array');\n ObjectObserver.call(th
is, array);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__:
ObjectObserver.prototype,\n\n arrayObserve: true,\n\n copyObject: functio
n(arr) {\n return arr.slice();\n },\n\n check_: function(changeRecord
s) {\n var splices;\n if (hasObserve) {\n if (!changeRecords)\n
return false;\n splices = projectArraySplices(this.value_, chan
geRecords);\n } else {\n splices = calcSplices(this.value_, 0, this.
value_.length,\n this.oldObject_, 0, this.oldObject
_.length);\n }\n\n if (!splices || !splices.length)\n return fa
lse;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.v
alue_);\n\n this.report_([splices]);\n return true;\n }\n });\n\n
ArrayObserver.applySplices = function(previous, current, splices) {\n splice
s.forEach(function(splice) {\n var spliceArgs = [splice.index, splice.remov
ed.length];\n var addIndex = splice.index;\n while (addIndex < splice.
index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n
addIndex++;\n }\n\n Array.prototype.splice.apply(previous, spliceAr
gs);\n });\n };\n\n function PathObserver(object, path) {\n Observer.cal
l(this);\n\n this.object_ = object;\n this.path_ = getPath(path);\n thi
s.directObserver_ = undefined;\n }\n\n PathObserver.prototype = createObject({
\n __proto__: Observer.prototype,\n\n get path() {\n return this.path
_;\n },\n\n connect_: function() {\n if (hasObserve)\n this.di
rectObserver_ = getObservedSet(this, this.object_);\n\n this.check_(undefin
ed, true);\n },\n\n disconnect_: function() {\n this.value_ = undefin
ed;\n\n if (this.directObserver_) {\n this.directObserver_.close(thi
s);\n this.directObserver_ = undefined;\n }\n },\n\n iterateOb
jects_: function(observe) {\n this.path_.iterateObjects(this.object_, obser
ve);\n },\n\n check_: function(changeRecords, skipChanges) {\n var ol
dValue = this.value_;\n this.value_ = this.path_.getValueFrom(this.object_)
;\n if (skipChanges || areSameValue(this.value_, oldValue))\n return
false;\n\n this.report_([this.value_, oldValue, this]);\n return true
;\n },\n\n setValue: function(newValue) {\n if (this.path_)\n
this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function Com
poundObserver(reportChangesOnOpen) {\n Observer.call(this);\n\n this.repor
tChangesOnOpen_ = reportChangesOnOpen;\n this.value_ = [];\n this.directOb
server_ = undefined;\n this.observed_ = [];\n }\n\n var observerSentinel =
{};\n\n CompoundObserver.prototype = createObject({\n __proto__: Observer.pr
ototype,\n\n connect_: function() {\n if (hasObserve) {\n var obj
ect;\n var needsDirectObserver = false;\n for (var i = 0; i < this
.observed_.length; i += 2) {\n object = this.observed_[i]\n if
(object !== observerSentinel) {\n needsDirectObserver = true;\n
break;\n }\n }\n\n if (needsDirectObserver)\n
this.directObserver_ = getObservedSet(this, object);\n }\n\n this
.check_(undefined, !this.reportChangesOnOpen_);\n },\n\n disconnect_: func
tion() {\n for (var i = 0; i < this.observed_.length; i += 2) {\n if
(this.observed_[i] === observerSentinel)\n this.observed_[i + 1].close
();\n }\n this.observed_.length = 0;\n this.value_.length = 0;\n\
n if (this.directObserver_) {\n this.directObserver_.close(this);\n
this.directObserver_ = undefined;\n }\n },\n\n addPath: functi
on(object, path) {\n if (this.state_ != UNOPENED && this.state_ != RESETTIN
G)\n throw Error('Cannot add paths once started.');\n\n var path = g
etPath(path);\n this.observed_.push(object, path);\n if (!this.reportC
hangesOnOpen_)\n return;\n var index = this.observed_.length / 2 - 1
;\n this.value_[index] = path.getValueFrom(object);\n },\n\n addObser
ver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ != R
ESETTING)\n throw Error('Cannot add observers once started.');\n\n t
his.observed_.push(observerSentinel, observer);\n if (!this.reportChangesOn
Open_)\n return;\n var index = this.observed_.length / 2 - 1;\n
this.value_[index] = observer.open(this.deliver, this);\n },\n\n startRes
et: function() {\n if (this.state_ != OPENED)\n throw Error('Can onl
y reset while open');\n\n this.state_ = RESETTING;\n this.disconnect_(
);\n },\n\n finishReset: function() {\n if (this.state_ != RESETTING)
\n throw Error('Can only finishReset after startReset');\n this.stat
e_ = OPENED;\n this.connect_();\n\n return this.value_;\n },\n\n
iterateObjects_: function(observe) {\n var object;\n for (var i = 0;
i < this.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel)\n this.observed_[i + 1].iterateObjec
ts(object, observe)\n }\n },\n\n check_: function(changeRecords, skip
Changes) {\n var oldValues;\n for (var i = 0; i < this.observed_.lengt
h; i += 2) {\n var object = this.observed_[i];\n var path = this.o
bserved_[i+1];\n var value;\n if (object === observerSentinel) {\n
var observable = path;\n value = this.state_ === UNOPENED ?\n
observable.open(this.deliver, this) :\n observable.di
scardChanges();\n } else {\n value = path.getValueFrom(object);\
n }\n\n if (skipChanges) {\n this.value_[i / 2] = value;\
n continue;\n }\n\n if (areSameValue(value, this.value_[i
/ 2]))\n continue;\n\n oldValues = oldValues || [];\n ol
dValues[i / 2] = this.value_[i / 2];\n this.value_[i / 2] = value;\n
}\n\n if (!oldValues)\n return false;\n\n // TODO(rafaelw): Ha
ving observed_ as the third callback arg here is\n // pretty lame API. Fix.
\n this.report_([this.value_, oldValues, this.observed_]);\n return tr
ue;\n }\n });\n\n function identFn(value) { return value; }\n\n function O
bserverTransform(observable, getValueFn, setValueFn,\n
dontPassThroughSet) {\n this.callback_ = undefined;\n this.target_ = un
defined;\n this.value_ = undefined;\n this.observable_ = observable;\n
this.getValueFn_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn ||
identFn;\n // TODO(rafaelw): This is a temporary hack. PolymerExpressions nee
ds this\n // at the moment because of a bug in it's dependency tracking.\n
this.dontPassThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prot
otype = {\n open: function(callback, target) {\n this.callback_ = callba
ck;\n this.target_ = target;\n this.value_ =\n this.getValueF
n_(this.observable_.open(this.observedCallback_, this));\n return this.valu
e_;\n },\n\n observedCallback_: function(value) {\n value = this.getV
alueFn_(value);\n if (areSameValue(value, this.value_))\n return;\n
var oldValue = this.value_;\n this.value_ = value;\n this.callbac
k_.call(this.target_, this.value_, oldValue);\n },\n\n discardChanges: fun
ction() {\n this.value_ = this.getValueFn_(this.observable_.discardChanges(
));\n return this.value_;\n },\n\n deliver: function() {\n retur
n this.observable_.deliver();\n },\n\n setValue: function(value) {\n
value = this.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.ob
servable_.setValue)\n return this.observable_.setValue(value);\n },\n\
n close: function() {\n if (this.observable_)\n this.observable_.
close();\n this.callback_ = undefined;\n this.target_ = undefined;\n
this.observable_ = undefined;\n this.value_ = undefined;\n this.ge
tValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n var
expectedRecordTypes = {\n add: true,\n update: true,\n delete: true\n
};\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues)
{\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeR
ecords.length; i++) {\n var record = changeRecords[i];\n if (!expected
RecordTypes[record.type]) {\n console.error('Unknown changeRecord type: '
+ record.type);\n console.error(record);\n continue;\n }\n\n
if (!(record.name in oldValues))\n oldValues[record.name] = record.
oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (
record.type == 'add') {\n if (record.name in removed)\n delete r
emoved[record.name];\n else\n added[record.name] = true;\n\n
continue;\n }\n\n // type = 'delete'\n if (record.name in add
ed) {\n delete added[record.name];\n delete oldValues[record.name]
;\n } else {\n removed[record.name] = true;\n }\n }\n\n f
or (var prop in added)\n added[prop] = object[prop];\n\n for (var prop i
n removed)\n removed[prop] = undefined;\n\n var changed = {};\n for (
var prop in oldValues) {\n if (prop in added || prop in removed)\n c
ontinue;\n\n var newValue = object[prop];\n if (oldValues[prop] !== ne
wValue)\n changed[prop] = newValue;\n }\n\n return {\n added:
added,\n removed: removed,\n changed: changed\n };\n }\n\n functi
on newSplice(index, removed, addedCount) {\n return {\n index: index,\n
removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDIT_
LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DELETE = 3;\
n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note: Th
is function is *based* on the computation of the Levenshtein\n // \"edit\" di
stance. The one change is that \"updates\" are treated as two\n // edits - no
t one. With Array splices, an update is really a delete\n // followed by an a
dd. By retaining this, we optimize for \"keeping\" the\n // maximum array ite
ms in the original array. For example:\n //\n // 'xxxx123' -> '123yyyy'\
n //\n // With 1-edit updates, the shortest path would be just to update a
ll seven\n // characters. With 2-edit updates, we delete 4, leave 3, and add
4. This\n // leaves the substring '123' intact.\n calcEditDistances: funct
ion(current, currentStart, currentEnd,\n old, old
Start, oldEnd) {\n // \"Deletion\" columns\n var rowCount = oldEnd - o
ldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var
distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null
column.\n for (var i = 0; i < rowCount; i++) {\n distances[i] = new
Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initializ
e null row\n for (var j = 0; j < columnCount; j++)\n distances[0][j]
= j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j <
columnCount; j++) {\n if (this.equals(current[currentStart + j - 1], o
ld[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n
else {\n var north = distances[i - 1][j] + 1;\n
var west = distances[i][j - 1] + 1;\n distances[i][j] = north < west
? north : west;\n }\n }\n }\n\n return distances;\n
},\n\n // This starts at the final weight, and walks \"backward\" by finding
\n // the minimum previous weight recursively until the origin of the weight\
n // matrix.\n spliceOperationsFromEditDistances: function(distances) {\n
var i = distances.length - 1;\n var j = distances[0].length - 1;\n
var current = distances[i][j];\n var edits = [];\n while (i > 0 || j
> 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\
n continue;\n }\n if (j == 0) {\n edits.push(EDI
T_DELETE);\n i--;\n continue;\n }\n var northWes
t = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n v
ar north = distances[i][j - 1];\n\n var min;\n if (west < north)\n
min = west < northWest ? west : northWest;\n else\n mi
n = north < northWest ? north : northWest;\n\n if (min == northWest) {\n
if (northWest == current) {\n edits.push(EDIT_LEAVE);\n
} else {\n edits.push(EDIT_UPDATE);\n current = north
West;\n }\n i--;\n j--;\n } else if (min == we
st) {\n edits.push(EDIT_DELETE);\n i--;\n current = w
est;\n } else {\n edits.push(EDIT_ADD);\n j--;\n
current = north;\n }\n }\n\n edits.reverse();\n return
edits;\n },\n\n /**\n * Splice Projection functions:\n *\n * A
splice map is a representation of how a previous array of items\n * was tra
nsformed into a new array of items. Conceptually it is a list of\n * tuples
of\n *\n * <index, removed, addedCount>\n *\n * which are kept
in ascending index order of. The tuple represents that at\n * the |index|,
|removed| sequence of items were removed, and counting forward\n * from |ind
ex|, |addedCount| items were added.\n */\n\n /**\n * Lacking individu
al splice mutation information, the minimal set of\n * splices can be synthe
sized given the previous state and final state of an\n * array. The basic ap
proach is to calculate the edit distance matrix and\n * choose the shortest
path through it.\n *\n * Complexity: O(l * p)\n * l: The length of
the current array\n * p: The length of the old array\n */\n calcSp
lices: function(current, currentStart, currentEnd,\n ol
d, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;\n
\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\
n if (currentStart == 0 && oldStart == 0)\n prefixCount = this.share
dPrefix(current, old, minLength);\n\n if (currentEnd == current.length && o
ldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, minL
ength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += p
refixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n
if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n retu
rn [];\n\n if (currentStart == currentEnd) {\n var splice = newSplic
e(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.rem
oved.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldS
tart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - curre
ntStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\n
this.calcEditDistances(current, currentStart, currentEnd,\n
old, oldStart, oldEnd));\n\n var splice = undefined;\n v
ar splices = [];\n var index = currentStart;\n var oldIndex = oldStart
;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n
case EDIT_LEAVE:\n if (splice) {\n splices.push(spl
ice);\n splice = undefined;\n }\n\n index++;\
n oldIndex++;\n break;\n case EDIT_UPDATE:\n
if (!splice)\n splice = newSplice(index, [], 0);\n\n
splice.addedCount++;\n index++;\n\n splice.removed.pus
h(old[oldIndex]);\n oldIndex++;\n break;\n case E
DIT_ADD:\n if (!splice)\n splice = newSplice(index, [],
0);\n\n splice.addedCount++;\n index++;\n break
;\n case EDIT_DELETE:\n if (!splice)\n splice =
newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n
oldIndex++;\n break;\n }\n }\n\n if (splic
e) {\n splices.push(splice);\n }\n return splices;\n },\n\n
sharedPrefix: function(current, old, searchLength) {\n for (var i = 0; i
< searchLength; i++)\n if (!this.equals(current[i], old[i]))\n
return i;\n return searchLength;\n },\n\n sharedSuffix: function(curr
ent, old, searchLength) {\n var index1 = current.length;\n var index2
= old.length;\n var count = 0;\n while (count < searchLength && this.e
quals(current[--index1], old[--index2]))\n count++;\n\n return count
;\n },\n\n calculateSplices: function(current, previous) {\n return t
his.calcSplices(current, 0, current.length, previous, 0,\n
previous.length);\n },\n\n equals: function(currentValue, previous
Value) {\n return currentValue === previousValue;\n }\n };\n\n var arr
aySplice = new ArraySplice();\n\n function calcSplices(current, currentStart, c
urrentEnd,\n old, oldStart, oldEnd) {\n return arraySpl
ice.calcSplices(current, currentStart, currentEnd,\n
old, oldStart, oldEnd);\n }\n\n function intersect(start1, end1, start2
, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n retur
n -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n retur
n 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2) {\n
if (end1 < end2)\n return end1 - start2; // Overlap\n else\n
return end2 - start2; // Contained\n } else {\n // Non-zero intersect,
span2 first\n if (end2 < end1)\n return end2 - start1; // Overlap\n
else\n return end1 - start1; // Contained\n }\n }\n\n function
mergeSplice(splices, index, removed, addedCount) {\n\n var splice = newSplic
e(index, removed, addedCount);\n\n var inserted = false;\n var insertionOf
fset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current =
splices[i];\n current.index += insertionOffset;\n\n if (inserted)\n
continue;\n\n var intersectCount = intersect(splice.index,\n
splice.index + splice.removed.length,\n
current.index,\n cur
rent.index + current.addedCount);\n\n if (intersectCount >= 0) {\n /
/ Merge the two splices\n\n splices.splice(i, 1);\n i--;\n\n
insertionOffset -= current.addedCount - current.removed.length;\n\n spl
ice.addedCount += current.addedCount - intersectCount;\n var deleteCount
= splice.removed.length +\n current.removed.length - in
tersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n //
merged splice is a noop. discard.\n inserted = true;\n } else {
\n var removed = current.removed;\n\n if (splice.index < curre
nt.index) {\n // some prefix of splice.removed is prepended to curren
t.removed.\n var prepend = splice.removed.slice(0, current.index - sp
lice.index);\n Array.prototype.push.apply(prepend, removed);\n
removed = prepend;\n }\n\n if (splice.index + splice.remo
ved.length > current.index + current.addedCount) {\n // some suffix o
f splice.removed is appended to current.removed.\n var append = splic
e.removed.slice(current.index + current.addedCount - splice.index);\n
Array.prototype.push.apply(removed, append);\n }\n\n splice.r
emoved = removed;\n if (current.index < splice.index) {\n sp
lice.index = current.index;\n }\n }\n } else if (splice.ind
ex < current.index) {\n // Insert splice here.\n\n inserted = true
;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset =
splice.addedCount - splice.removed.length\n current.index += offset;\n
insertionOffset += offset;\n }\n }\n\n if (!inserted)\n sp
lices.push(splice);\n }\n\n function createInitialSplices(array, changeRecords
) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i++)
{\n var record = changeRecords[i];\n switch(record.type) {\n c
ase 'splice':\n mergeSplice(splices, record.index, record.removed.slice
(), record.addedCount);\n break;\n case 'add':\n case 'up
date':\n case 'delete':\n if (!isIndex(record.name))\n
continue;\n var index = toNumber(record.name);\n if (index <
0)\n continue;\n mergeSplice(splices, index, [record.oldVal
ue], 1);\n break;\n default:\n console.error('Unexpecte
d record type: ' + JSON.stringify(record));\n break;\n }\n }\n\
n return splices;\n }\n\n function projectArraySplices(array, changeRecords
) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).for
Each(function(splice) {\n if (splice.addedCount == 1 && splice.removed.leng
th == 1) {\n if (splice.removed[0] !== array[splice.index])\n sp
lices.push(splice);\n\n return\n };\n\n splices = splices.conca
t(calcSplices(array, splice.index, splice.index + splice.addedCount,\n
splice.removed, 0, splice.removed.length));\n
});\n\n return splices;\n }\n\n global.Observer = Observer;\n global.Obs
erver.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentinel;
// for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.Arr
ayObserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = function(
current, previous) {\n return arraySplice.calculateSplices(current, previous)
;\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = Object
Observer;\n global.PathObserver = PathObserver;\n global.CompoundObserver = Co
mpoundObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverTra
nsform;\n})(typeof global !== 'undefined' && global && typeof module !== 'undefi
ned' && module ? global : this || window);\n", | 87 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(global) {\n 'u
se strict';\n\n var testingExposeCycleCount = global.testingExposeCycleCount;\n
\n // Detect and do basic sanity checking on Object/Array.observe.\n function
detectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n
typeof Array.observe !== 'function') {\n return false;\n }\n\n var
records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n
var test = {};\n var arr = [];\n Object.observe(test, callback);\n
Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete te
st.id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeReco
rds(callback);\n if (records.length !== 5)\n return false;\n\n if (re
cords[0].type != 'add' ||\n records[1].type != 'update' ||\n recor
ds[2].type != 'delete' ||\n records[3].type != 'splice' ||\n recor
ds[4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(te
st, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n
var hasObserve = detectObjectObserve();\n\n function detectEval() {\n // D
on't test for eval if we're running in a Chrome App environment.\n // We chec
k for APIs set that only exist in a Chrome App context.\n if (typeof chrome !
== 'undefined' && chrome.app && chrome.app.runtime) {\n return false;\n
}\n\n // Firefox OS Apps do not allow eval. This feature detection is very ha
cky\n // but even if some other platform adds support for this function this
code\n // will continue to work.\n if (typeof navigator != 'undefined' &&
navigator.getDeviceStorage) {\n return false;\n }\n\n try {\n va
r f = new Function('', 'return true;');\n return f();\n } catch (ex) {\n
return false;\n }\n }\n\n var hasEval = detectEval();\n\n function i
sIndex(s) {\n return +s === s >>> 0 && s !== '';\n }\n\n function toNumber(
s) {\n return +s;\n }\n\n function isObject(obj) {\n return obj === Obje
ct(obj);\n }\n\n var numberIsNaN = global.Number.isNaN || function(value) {\n
return typeof value === 'number' && global.isNaN(value);\n }\n\n function a
reSameValue(left, right) {\n if (left === right)\n return left !== 0 ||
1 / left === 1 / right;\n if (numberIsNaN(left) && numberIsNaN(right))\n
return true;\n\n return left !== left && right !== right;\n }\n\n var crea
teObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n funct
ion(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return
obj;\n var newObject = Object.create(proto);\n Object.getOwnPropertyNa
mes(obj).forEach(function(name) {\n Object.defineProperty(newObject, name
,\n Object.getOwnPropertyDescriptor(obj, name));\n
});\n return newObject;\n };\n\n var identStart = '[\\$_a-zA-Z]';\n
var identPart = '[\\$_a-zA-Z0-9]';\n var identRegExp = new RegExp('^' + ident
Start + '+' + identPart + '*' + '$');\n\n function getPathCharType(char) {\n
if (char === undefined)\n return 'eof';\n\n var code = char.charCodeAt(
0);\n\n switch(code) {\n case 0x5B: // [\n case 0x5D: // ]\n c
ase 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n case 0x30:
// 0\n return char;\n\n case 0x5F: // _\n case 0x24: // $\n
return 'ident';\n\n case 0x20: // Space\n case 0x09: // Tab\n
case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-brea
k space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Sep
arator\n case 0x2029: // Paragraph Separator\n return 'ws';\n }\
n\n // a-z, A-Z\n if ((0x61 <= code && code <= 0x7A) || (0x41 <= code && c
ode <= 0x5A))\n return 'ident';\n\n // 1-9\n if (0x31 <= code && code
<= 0x39)\n return 'number';\n\n return 'else';\n }\n\n var pathStateM
achine = {\n 'beforePath': {\n 'ws': ['beforePath'],\n 'ident': ['i
nIdent', 'append'],\n '[': ['beforeElement'],\n 'eof': ['afterPath']\n
},\n\n 'inPath': {\n 'ws': ['inPath'],\n '.': ['beforeIdent'],\
n '[': ['beforeElement'],\n 'eof': ['afterPath']\n },\n\n 'befor
eIdent': {\n 'ws': ['beforeIdent'],\n 'ident': ['inIdent', 'append']\n
},\n\n 'inIdent': {\n 'ident': ['inIdent', 'append'],\n '0': ['
inIdent', 'append'],\n 'number': ['inIdent', 'append'],\n 'ws': ['inPa
th', 'push'],\n '.': ['beforeIdent', 'push'],\n '[': ['beforeElement',
'push'],\n 'eof': ['afterPath', 'push']\n },\n\n 'beforeElement': {\
n 'ws': ['beforeElement'],\n '0': ['afterZero', 'append'],\n 'num
ber': ['inIndex', 'append'],\n \"'\": ['inSingleQuote', 'append', ''],\n
'\"': ['inDoubleQuote', 'append', '']\n },\n\n 'afterZero': {\n 'w
s': ['afterElement', 'push'],\n ']': ['inPath', 'push']\n },\n\n 'inI
ndex': {\n '0': ['inIndex', 'append'],\n 'number': ['inIndex', 'append
'],\n 'ws': ['afterElement'],\n ']': ['inPath', 'push']\n },\n\n
'inSingleQuote': {\n \"'\": ['afterElement'],\n 'eof': ['error'],\n
'else': ['inSingleQuote', 'append']\n },\n\n 'inDoubleQuote': {\n
'\"': ['afterElement'],\n 'eof': ['error'],\n 'else': ['inDoubleQuote
', 'append']\n },\n\n 'afterElement': {\n 'ws': ['afterElement'],\n
']': ['inPath', 'push']\n }\n }\n\n function noop() {}\n\n function pa
rsePath(path) {\n var keys = [];\n var index = -1;\n var c, newChar, ke
y, type, transition, action, typeMap, mode = 'beforePath';\n\n var actions =
{\n push: function() {\n if (key === undefined)\n return;\n
\n keys.push(key);\n key = undefined;\n },\n\n append: f
unction() {\n if (key === undefined)\n key = newChar\n el
se\n key += newChar;\n }\n };\n\n function maybeUnescapeQuot
e() {\n if (index >= path.length)\n return;\n\n var nextChar =
path[index + 1];\n if ((mode == 'inSingleQuote' && nextChar == \"'\") ||\n
(mode == 'inDoubleQuote' && nextChar == '\"')) {\n index++;\n
newChar = nextChar;\n actions.append();\n return true;\n
}\n }\n\n while (mode) {\n index++;\n c = path[index];\n\n
if (c == '\\\\' && maybeUnescapeQuote(mode))\n continue;\n\n type =
getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition
= typeMap[type] || typeMap['else'] || 'error';\n\n if (transition == 'error
')\n return; // parse error;\n\n mode = transition[0];\n action
= actions[transition[1]] || noop;\n newChar = transition[2] === undefined
? c : transition[2];\n action();\n\n if (mode === 'afterPath') {\n
return keys;\n }\n }\n\n return; // parse error\n }\n\n functio
n isIdent(s) {\n return identRegExp.test(s);\n }\n\n var constructorIsPriva
te = {};\n\n function Path(parts, privateToken) {\n if (privateToken !== con
structorIsPrivate)\n throw Error('Use Path.get to retrieve path objects');\
n\n for (var i = 0; i < parts.length; i++) {\n this.push(String(parts[i]
));\n }\n\n if (hasEval && this.length) {\n this.getValueFrom = this.
compiledGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simple LRU cac
he\n var pathCache = {};\n\n function getPath(pathString) {\n if (pathStrin
g instanceof Path)\n return pathString;\n\n if (pathString == null || pa
thString.length == 0)\n pathString = '';\n\n if (typeof pathString != 's
tring') {\n if (isIndex(pathString.length)) {\n // Constructed with
array-like (pre-parsed) keys\n return new Path(pathString, constructorIsP
rivate);\n }\n\n pathString = String(pathString);\n }\n\n var pa
th = pathCache[pathString];\n if (path)\n return path;\n\n var parts
= parsePath(pathString);\n if (!parts)\n return invalidPath;\n\n var
path = new Path(parts, constructorIsPrivate);\n pathCache[pathString] = path;
\n return path;\n }\n\n Path.get = getPath;\n\n function formatAccessor(ke
y) {\n if (isIndex(key)) {\n return '[' + key + ']';\n } else {\n
return '[\"' + key.replace(/\"/g, '\\\\\"') + '\"]';\n }\n }\n\n Path.pro
totype = createObject({\n __proto__: [],\n valid: true,\n\n toString: f
unction() {\n var pathString = '';\n for (var i = 0; i < this.length;
i++) {\n var key = this[i];\n if (isIdent(key)) {\n pathS
tring += i ? '.' + key : key;\n } else {\n pathString += formatA
ccessor(key);\n }\n }\n\n return pathString;\n },\n\n get
ValueFrom: function(obj, directObserver) {\n for (var i = 0; i < this.lengt
h; i++) {\n if (obj == null)\n return;\n obj = obj[this[i
]];\n }\n return obj;\n },\n\n iterateObjects: function(obj, obs
erve) {\n for (var i = 0; i < this.length; i++) {\n if (i)\n
obj = obj[this[i - 1]];\n if (!isObject(obj))\n return;\n
observe(obj, this[0]);\n }\n },\n\n compiledGetValueFromFn: functi
on() {\n var str = '';\n var pathString = 'obj';\n str += 'if (ob
j != null';\n var i = 0;\n var key;\n for (; i < (this.length - 1
); i++) {\n key = this[i];\n pathString += isIdent(key) ? '.' + ke
y : formatAccessor(key);\n str += ' &&\\n ' + pathString + ' != null'
;\n }\n str += ')\\n';\n\n var key = this[i];\n pathString +
= isIdent(key) ? '.' + key : formatAccessor(key);\n\n str += ' return ' +
pathString + ';\\nelse\\n return undefined;';\n return new Function('obj',
str);\n },\n\n setValueFrom: function(obj, value) {\n if (!this.leng
th)\n return false;\n\n for (var i = 0; i < this.length - 1; i++) {\
n if (!isObject(obj))\n return false;\n obj = obj[this[i]
];\n }\n\n if (!isObject(obj))\n return false;\n\n obj[thi
s[i]] = value;\n return true;\n }\n });\n\n var invalidPath = new Path
('', constructorIsPrivate);\n invalidPath.valid = false;\n invalidPath.getValu
eFrom = invalidPath.setValueFrom = function() {};\n\n var MAX_DIRTY_CHECK_CYCLE
S = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (
cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\
n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n
\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (va
r prop in object)\n return false;\n return true;\n }\n\n function diff
IsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmp
ty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\n\n function
diffObjectFromOldObject(object, oldObject) {\n var added = {};\n var remov
ed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var
newValue = object[prop];\n\n if (newValue !== undefined && newValue === old
Object[prop])\n continue;\n\n if (!(prop in object)) {\n remo
ved[prop] = undefined;\n continue;\n }\n\n if (newValue !== old
Object[prop])\n changed[prop] = newValue;\n }\n\n for (var prop in
object) {\n if (prop in oldObject)\n continue;\n\n added[prop]
= object[prop];\n }\n\n if (Array.isArray(object) && object.length !== old
Object.length)\n changed.length = object.length;\n\n return {\n add
ed: added,\n removed: removed,\n changed: changed\n };\n }\n\n va
r eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n r
eturn false;\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[
i]();\n }\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM =
hasObserve ? (function(){\n var eomObj = { pingPong: true };\n var eomRunS
cheduled = false;\n\n Object.observe(eomObj, function() {\n runEOMTasks(
);\n eomRunScheduled = false;\n });\n\n return function(fn) {\n
eomTasks.push(fn);\n if (!eomRunScheduled) {\n eomRunScheduled = tru
e;\n eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (f
unction() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })()
;\n\n var observedObjectCache = [];\n\n function newObservedObject() {\n va
r observer;\n var object;\n var discardRecords = false;\n var first = t
rue;\n\n function callback(records) {\n if (observer && observer.state_
=== OPENED && !discardRecords)\n observer.check_(records);\n }\n\n
return {\n open: function(obs) {\n if (observer)\n throw Er
ror('ObservedObject in use');\n\n if (!first)\n Object.deliverCh
angeRecords(callback);\n\n observer = obs;\n first = false;\n
},\n observe: function(obj, arrayObserve) {\n object = obj;\n
if (arrayObserve)\n Array.observe(object, callback);\n else\n
Object.observe(object, callback);\n },\n deliver: function(di
scard) {\n discardRecords = discard;\n Object.deliverChangeRecords
(callback);\n discardRecords = false;\n },\n close: function()
{\n observer = undefined;\n Object.unobserve(object, callback);\n
observedObjectCache.push(this);\n }\n };\n }\n\n /*\n * The o
bservedSet abstraction is a perf optimization which reduces the total\n * numb
er of Object.observe observations of a set of objects. The idea is that\n * gr
oups of Observers will have some object dependencies in common and this\n * ob
served set ensures that each object in the transitive closure of\n * dependenc
ies is only observed once. The observedSet acts as a write barrier\n * such th
at whenever any change comes through, all Observers are checked for\n * change
d values.\n *\n * Note that this optimization is explicitly moving work from
setup-time to\n * change-time.\n *\n * TODO(rafaelw): Implement \"garbage
collection\". In order to move work off\n * the critical path, when Observers
are closed, their observed objects are\n * not Object.unobserve(d). As a resu
lt, it's possible that if the observedSet\n * is kept open, but some Observers
have been closed, it could cause \"leaks\"\n * (prevent otherwise collectable
objects from being collected). At some\n * point, we should implement increme
ntal \"gc\" which keeps a list of\n * observedSets which may need clean-up and
does small amounts of cleanup on a\n * timeout until all is clean.\n */\n\n
function getObservedObject(observer, object, arrayObserve) {\n var dir = ob
servedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n di
r.observe(object, arrayObserve);\n return dir;\n }\n\n var observedSetCache
= [];\n\n function newObservedSet() {\n var observerCount = 0;\n var obs
ervers = [];\n var objects = [];\n var rootObj;\n var rootObjProps;\n\n
function observe(obj, prop) {\n if (!obj)\n return;\n\n if
(obj === rootObj)\n rootObjProps[prop] = true;\n\n if (objects.index
Of(obj) < 0) {\n objects.push(obj);\n Object.observe(obj, callback
);\n }\n\n observe(Object.getPrototypeOf(obj), prop);\n }\n\n fu
nction allRootObjNonObservedProps(recs) {\n for (var i = 0; i < recs.length
; i++) {\n var rec = recs[i];\n if (rec.object !== rootObj ||\n
rootObjProps[rec.name] ||\n rec.type === 'setPrototype') {\n
return false;\n }\n }\n return true;\n }\n\n fu
nction callback(recs) {\n if (allRootObjNonObservedProps(recs))\n re
turn;\n\n var observer;\n for (var i = 0; i < observers.length; i++) {
\n observer = observers[i];\n if (observer.state_ == OPENED) {\n
observer.iterateObjects_(observe);\n }\n }\n\n for (var
i = 0; i < observers.length; i++) {\n observer = observers[i];\n
if (observer.state_ == OPENED) {\n observer.check_();\n }\n
}\n }\n\n var record = {\n object: undefined,\n objects: object
s,\n open: function(obs, object) {\n if (!rootObj) {\n root
Obj = object;\n rootObjProps = {};\n }\n\n observers.push
(obs);\n observerCount++;\n obs.iterateObjects_(observe);\n }
,\n close: function(obs) {\n observerCount--;\n if (observerC
ount > 0) {\n return;\n }\n\n for (var i = 0; i < objects
.length; i++) {\n Object.unobserve(objects[i], callback);\n Ob
server.unobservedCount++;\n }\n\n observers.length = 0;\n o
bjects.length = 0;\n rootObj = undefined;\n rootObjProps = undefin
ed;\n observedSetCache.push(this);\n }\n };\n\n return record;
\n }\n\n var lastObservedSet;\n\n function getObservedSet(observer, obj) {\n
if (!lastObservedSet || lastObservedSet.object !== obj) {\n lastObserved
Set = observedSetCache.pop() || newObservedSet();\n lastObservedSet.object
= obj;\n }\n lastObservedSet.open(observer, obj);\n return lastObserved
Set;\n }\n\n var UNOPENED = 0;\n var OPENED = 1;\n var CLOSED = 2;\n var RE
SETTING = 3;\n\n var nextObserverId = 1;\n\n function Observer() {\n this.s
tate_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined
; // TODO(rafaelw): Should be WeakRef\n this.directObserver_ = undefined;\n
this.value_ = undefined;\n this.id_ = nextObserverId++;\n }\n\n Observer.
prototype = {\n open: function(callback, target) {\n if (this.state_ !=
UNOPENED)\n throw Error('Observer has already been opened.');\n\n ad
dToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n
this.connect_();\n this.state_ = OPENED;\n return this.value_;\n
},\n\n close: function() {\n if (this.state_ != OPENED)\n retu
rn;\n\n removeFromAll(this);\n this.disconnect_();\n this.value_
= undefined;\n this.callback_ = undefined;\n this.target_ = undefined;
\n this.state_ = CLOSED;\n },\n\n deliver: function() {\n if (th
is.state_ != OPENED)\n return;\n\n dirtyCheck(this);\n },\n\n
report_: function(changes) {\n try {\n this.callback_.apply(this.tar
get_, changes);\n } catch (ex) {\n Observer._errorThrownDuringCallba
ck = true;\n console.error('Exception caught during observer callback: '
+\n (ex.stack || ex));\n }\n },\n\n discardChan
ges: function() {\n this.check_(undefined, true);\n return this.value_
;\n }\n }\n\n var collectObservers = !hasObserve;\n var allObservers;\n O
bserver._allObserversCount = 0;\n\n if (collectObservers) {\n allObservers =
[];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;
\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\
n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;
\n }\n\n var runningMicrotaskCheckpoint = false;\n\n global.Platform = global
.Platform || {};\n\n global.Platform.performMicrotaskCheckpoint = function() {\
n if (runningMicrotaskCheckpoint)\n return;\n\n if (!collectObservers
)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0
;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck = al
lObservers;\n allObservers = [];\n anyChanged = false;\n\n for (v
ar i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n
if (observer.state_ != OPENED)\n continue;\n\n if (observer.ch
eck_())\n anyChanged = true;\n\n allObservers.push(observer);\n
}\n if (runEOMTasks())\n anyChanged = true;\n } while (cycle
s < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)\n
global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint =
false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers =
function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver
(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldObj
ect_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __pro
to__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: function(
callback, target) {\n if (hasObserve) {\n this.directObserver_ = get
ObservedObject(this, this.value_,\n
this.arrayObserve);\n } else {\n this.oldObject_ = this.copyObje
ct(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n
var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n
copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n
copy.length = object.length;\n return copy;\n },\n\n check_:
function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n
if (hasObserve) {\n if (!changeRecords)\n return false;\n\n
oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_,
changeRecords,\n oldValues);\n }
else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldO
bject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n
return false;\n\n if (!hasObserve)\n this.oldObject_ = this.c
opyObject(this.value_);\n\n this.report_([\n diff.added || {},\n
diff.removed || {},\n diff.changed || {},\n function(property)
{\n return oldValues[property];\n }\n ]);\n\n return
true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n
this.directObserver_.close();\n this.directObserver_ = undefined;\n
} else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver:
function() {\n if (this.state_ != OPENED)\n return;\n\n if (ha
sObserve)\n this.directObserver_.deliver(false);\n else\n dir
tyCheck(this);\n },\n\n discardChanges: function() {\n if (this.direc
tObserver_)\n this.directObserver_.deliver(true);\n else\n th
is.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n
}\n });\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\n
throw Error('Provided object is not an Array');\n ObjectObserver.call(th
is, array);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__:
ObjectObserver.prototype,\n\n arrayObserve: true,\n\n copyObject: functio
n(arr) {\n return arr.slice();\n },\n\n check_: function(changeRecord
s) {\n var splices;\n if (hasObserve) {\n if (!changeRecords)\n
return false;\n splices = projectArraySplices(this.value_, chan
geRecords);\n } else {\n splices = calcSplices(this.value_, 0, this.
value_.length,\n this.oldObject_, 0, this.oldObject
_.length);\n }\n\n if (!splices || !splices.length)\n return fa
lse;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.v
alue_);\n\n this.report_([splices]);\n return true;\n }\n });\n\n
ArrayObserver.applySplices = function(previous, current, splices) {\n splice
s.forEach(function(splice) {\n var spliceArgs = [splice.index, splice.remov
ed.length];\n var addIndex = splice.index;\n while (addIndex < splice.
index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n
addIndex++;\n }\n\n Array.prototype.splice.apply(previous, spliceAr
gs);\n });\n };\n\n function PathObserver(object, path) {\n Observer.cal
l(this);\n\n this.object_ = object;\n this.path_ = getPath(path);\n thi
s.directObserver_ = undefined;\n }\n\n PathObserver.prototype = createObject({
\n __proto__: Observer.prototype,\n\n get path() {\n return this.path
_;\n },\n\n connect_: function() {\n if (hasObserve)\n this.di
rectObserver_ = getObservedSet(this, this.object_);\n\n this.check_(undefin
ed, true);\n },\n\n disconnect_: function() {\n this.value_ = undefin
ed;\n\n if (this.directObserver_) {\n this.directObserver_.close(thi
s);\n this.directObserver_ = undefined;\n }\n },\n\n iterateOb
jects_: function(observe) {\n this.path_.iterateObjects(this.object_, obser
ve);\n },\n\n check_: function(changeRecords, skipChanges) {\n var ol
dValue = this.value_;\n this.value_ = this.path_.getValueFrom(this.object_)
;\n if (skipChanges || areSameValue(this.value_, oldValue))\n return
false;\n\n this.report_([this.value_, oldValue, this]);\n return true
;\n },\n\n setValue: function(newValue) {\n if (this.path_)\n
this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function Com
poundObserver(reportChangesOnOpen) {\n Observer.call(this);\n\n this.repor
tChangesOnOpen_ = reportChangesOnOpen;\n this.value_ = [];\n this.directOb
server_ = undefined;\n this.observed_ = [];\n }\n\n var observerSentinel =
{};\n\n CompoundObserver.prototype = createObject({\n __proto__: Observer.pr
ototype,\n\n connect_: function() {\n if (hasObserve) {\n var obj
ect;\n var needsDirectObserver = false;\n for (var i = 0; i < this
.observed_.length; i += 2) {\n object = this.observed_[i]\n if
(object !== observerSentinel) {\n needsDirectObserver = true;\n
break;\n }\n }\n\n if (needsDirectObserver)\n
this.directObserver_ = getObservedSet(this, object);\n }\n\n this
.check_(undefined, !this.reportChangesOnOpen_);\n },\n\n disconnect_: func
tion() {\n for (var i = 0; i < this.observed_.length; i += 2) {\n if
(this.observed_[i] === observerSentinel)\n this.observed_[i + 1].close
();\n }\n this.observed_.length = 0;\n this.value_.length = 0;\n\
n if (this.directObserver_) {\n this.directObserver_.close(this);\n
this.directObserver_ = undefined;\n }\n },\n\n addPath: functi
on(object, path) {\n if (this.state_ != UNOPENED && this.state_ != RESETTIN
G)\n throw Error('Cannot add paths once started.');\n\n var path = g
etPath(path);\n this.observed_.push(object, path);\n if (!this.reportC
hangesOnOpen_)\n return;\n var index = this.observed_.length / 2 - 1
;\n this.value_[index] = path.getValueFrom(object);\n },\n\n addObser
ver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ != R
ESETTING)\n throw Error('Cannot add observers once started.');\n\n t
his.observed_.push(observerSentinel, observer);\n if (!this.reportChangesOn
Open_)\n return;\n var index = this.observed_.length / 2 - 1;\n
this.value_[index] = observer.open(this.deliver, this);\n },\n\n startRes
et: function() {\n if (this.state_ != OPENED)\n throw Error('Can onl
y reset while open');\n\n this.state_ = RESETTING;\n this.disconnect_(
);\n },\n\n finishReset: function() {\n if (this.state_ != RESETTING)
\n throw Error('Can only finishReset after startReset');\n this.stat
e_ = OPENED;\n this.connect_();\n\n return this.value_;\n },\n\n
iterateObjects_: function(observe) {\n var object;\n for (var i = 0;
i < this.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel)\n this.observed_[i + 1].iterateObjec
ts(object, observe)\n }\n },\n\n check_: function(changeRecords, skip
Changes) {\n var oldValues;\n for (var i = 0; i < this.observed_.lengt
h; i += 2) {\n var object = this.observed_[i];\n var path = this.o
bserved_[i+1];\n var value;\n if (object === observerSentinel) {\n
var observable = path;\n value = this.state_ === UNOPENED ?\n
observable.open(this.deliver, this) :\n observable.di
scardChanges();\n } else {\n value = path.getValueFrom(object);\
n }\n\n if (skipChanges) {\n this.value_[i / 2] = value;\
n continue;\n }\n\n if (areSameValue(value, this.value_[i
/ 2]))\n continue;\n\n oldValues = oldValues || [];\n ol
dValues[i / 2] = this.value_[i / 2];\n this.value_[i / 2] = value;\n
}\n\n if (!oldValues)\n return false;\n\n // TODO(rafaelw): Ha
ving observed_ as the third callback arg here is\n // pretty lame API. Fix.
\n this.report_([this.value_, oldValues, this.observed_]);\n return tr
ue;\n }\n });\n\n function identFn(value) { return value; }\n\n function O
bserverTransform(observable, getValueFn, setValueFn,\n
dontPassThroughSet) {\n this.callback_ = undefined;\n this.target_ = un
defined;\n this.value_ = undefined;\n this.observable_ = observable;\n
this.getValueFn_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn ||
identFn;\n // TODO(rafaelw): This is a temporary hack. PolymerExpressions nee
ds this\n // at the moment because of a bug in it's dependency tracking.\n
this.dontPassThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prot
otype = {\n open: function(callback, target) {\n this.callback_ = callba
ck;\n this.target_ = target;\n this.value_ =\n this.getValueF
n_(this.observable_.open(this.observedCallback_, this));\n return this.valu
e_;\n },\n\n observedCallback_: function(value) {\n value = this.getV
alueFn_(value);\n if (areSameValue(value, this.value_))\n return;\n
var oldValue = this.value_;\n this.value_ = value;\n this.callbac
k_.call(this.target_, this.value_, oldValue);\n },\n\n discardChanges: fun
ction() {\n this.value_ = this.getValueFn_(this.observable_.discardChanges(
));\n return this.value_;\n },\n\n deliver: function() {\n retur
n this.observable_.deliver();\n },\n\n setValue: function(value) {\n
value = this.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.ob
servable_.setValue)\n return this.observable_.setValue(value);\n },\n\
n close: function() {\n if (this.observable_)\n this.observable_.
close();\n this.callback_ = undefined;\n this.target_ = undefined;\n
this.observable_ = undefined;\n this.value_ = undefined;\n this.ge
tValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n var
expectedRecordTypes = {\n add: true,\n update: true,\n delete: true\n
};\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues)
{\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeR
ecords.length; i++) {\n var record = changeRecords[i];\n if (!expected
RecordTypes[record.type]) {\n console.error('Unknown changeRecord type: '
+ record.type);\n console.error(record);\n continue;\n }\n\n
if (!(record.name in oldValues))\n oldValues[record.name] = record.
oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (
record.type == 'add') {\n if (record.name in removed)\n delete r
emoved[record.name];\n else\n added[record.name] = true;\n\n
continue;\n }\n\n // type = 'delete'\n if (record.name in add
ed) {\n delete added[record.name];\n delete oldValues[record.name]
;\n } else {\n removed[record.name] = true;\n }\n }\n\n f
or (var prop in added)\n added[prop] = object[prop];\n\n for (var prop i
n removed)\n removed[prop] = undefined;\n\n var changed = {};\n for (
var prop in oldValues) {\n if (prop in added || prop in removed)\n c
ontinue;\n\n var newValue = object[prop];\n if (oldValues[prop] !== ne
wValue)\n changed[prop] = newValue;\n }\n\n return {\n added:
added,\n removed: removed,\n changed: changed\n };\n }\n\n functi
on newSplice(index, removed, addedCount) {\n return {\n index: index,\n
removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDIT_
LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DELETE = 3;\
n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note: Th
is function is *based* on the computation of the Levenshtein\n // \"edit\" di
stance. The one change is that \"updates\" are treated as two\n // edits - no
t one. With Array splices, an update is really a delete\n // followed by an a
dd. By retaining this, we optimize for \"keeping\" the\n // maximum array ite
ms in the original array. For example:\n //\n // 'xxxx123' -> '123yyyy'\
n //\n // With 1-edit updates, the shortest path would be just to update a
ll seven\n // characters. With 2-edit updates, we delete 4, leave 3, and add
4. This\n // leaves the substring '123' intact.\n calcEditDistances: funct
ion(current, currentStart, currentEnd,\n old, old
Start, oldEnd) {\n // \"Deletion\" columns\n var rowCount = oldEnd - o
ldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var
distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null
column.\n for (var i = 0; i < rowCount; i++) {\n distances[i] = new
Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initializ
e null row\n for (var j = 0; j < columnCount; j++)\n distances[0][j]
= j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j <
columnCount; j++) {\n if (this.equals(current[currentStart + j - 1], o
ld[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n
else {\n var north = distances[i - 1][j] + 1;\n
var west = distances[i][j - 1] + 1;\n distances[i][j] = north < west
? north : west;\n }\n }\n }\n\n return distances;\n
},\n\n // This starts at the final weight, and walks \"backward\" by finding
\n // the minimum previous weight recursively until the origin of the weight\
n // matrix.\n spliceOperationsFromEditDistances: function(distances) {\n
var i = distances.length - 1;\n var j = distances[0].length - 1;\n
var current = distances[i][j];\n var edits = [];\n while (i > 0 || j
> 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\
n continue;\n }\n if (j == 0) {\n edits.push(EDI
T_DELETE);\n i--;\n continue;\n }\n var northWes
t = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n v
ar north = distances[i][j - 1];\n\n var min;\n if (west < north)\n
min = west < northWest ? west : northWest;\n else\n mi
n = north < northWest ? north : northWest;\n\n if (min == northWest) {\n
if (northWest == current) {\n edits.push(EDIT_LEAVE);\n
} else {\n edits.push(EDIT_UPDATE);\n current = north
West;\n }\n i--;\n j--;\n } else if (min == we
st) {\n edits.push(EDIT_DELETE);\n i--;\n current = w
est;\n } else {\n edits.push(EDIT_ADD);\n j--;\n
current = north;\n }\n }\n\n edits.reverse();\n return
edits;\n },\n\n /**\n * Splice Projection functions:\n *\n * A
splice map is a representation of how a previous array of items\n * was tra
nsformed into a new array of items. Conceptually it is a list of\n * tuples
of\n *\n * <index, removed, addedCount>\n *\n * which are kept
in ascending index order of. The tuple represents that at\n * the |index|,
|removed| sequence of items were removed, and counting forward\n * from |ind
ex|, |addedCount| items were added.\n */\n\n /**\n * Lacking individu
al splice mutation information, the minimal set of\n * splices can be synthe
sized given the previous state and final state of an\n * array. The basic ap
proach is to calculate the edit distance matrix and\n * choose the shortest
path through it.\n *\n * Complexity: O(l * p)\n * l: The length of
the current array\n * p: The length of the old array\n */\n calcSp
lices: function(current, currentStart, currentEnd,\n ol
d, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;\n
\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\
n if (currentStart == 0 && oldStart == 0)\n prefixCount = this.share
dPrefix(current, old, minLength);\n\n if (currentEnd == current.length && o
ldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, minL
ength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += p
refixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n
if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n retu
rn [];\n\n if (currentStart == currentEnd) {\n var splice = newSplic
e(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.rem
oved.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldS
tart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - curre
ntStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\n
this.calcEditDistances(current, currentStart, currentEnd,\n
old, oldStart, oldEnd));\n\n var splice = undefined;\n v
ar splices = [];\n var index = currentStart;\n var oldIndex = oldStart
;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n
case EDIT_LEAVE:\n if (splice) {\n splices.push(spl
ice);\n splice = undefined;\n }\n\n index++;\
n oldIndex++;\n break;\n case EDIT_UPDATE:\n
if (!splice)\n splice = newSplice(index, [], 0);\n\n
splice.addedCount++;\n index++;\n\n splice.removed.pus
h(old[oldIndex]);\n oldIndex++;\n break;\n case E
DIT_ADD:\n if (!splice)\n splice = newSplice(index, [],
0);\n\n splice.addedCount++;\n index++;\n break
;\n case EDIT_DELETE:\n if (!splice)\n splice =
newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n
oldIndex++;\n break;\n }\n }\n\n if (splic
e) {\n splices.push(splice);\n }\n return splices;\n },\n\n
sharedPrefix: function(current, old, searchLength) {\n for (var i = 0; i
< searchLength; i++)\n if (!this.equals(current[i], old[i]))\n
return i;\n return searchLength;\n },\n\n sharedSuffix: function(curr
ent, old, searchLength) {\n var index1 = current.length;\n var index2
= old.length;\n var count = 0;\n while (count < searchLength && this.e
quals(current[--index1], old[--index2]))\n count++;\n\n return count
;\n },\n\n calculateSplices: function(current, previous) {\n return t
his.calcSplices(current, 0, current.length, previous, 0,\n
previous.length);\n },\n\n equals: function(currentValue, previous
Value) {\n return currentValue === previousValue;\n }\n };\n\n var arr
aySplice = new ArraySplice();\n\n function calcSplices(current, currentStart, c
urrentEnd,\n old, oldStart, oldEnd) {\n return arraySpl
ice.calcSplices(current, currentStart, currentEnd,\n
old, oldStart, oldEnd);\n }\n\n function intersect(start1, end1, start2
, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n retur
n -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n retur
n 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2) {\n
if (end1 < end2)\n return end1 - start2; // Overlap\n else\n
return end2 - start2; // Contained\n } else {\n // Non-zero intersect,
span2 first\n if (end2 < end1)\n return end2 - start1; // Overlap\n
else\n return end1 - start1; // Contained\n }\n }\n\n function
mergeSplice(splices, index, removed, addedCount) {\n\n var splice = newSplic
e(index, removed, addedCount);\n\n var inserted = false;\n var insertionOf
fset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current =
splices[i];\n current.index += insertionOffset;\n\n if (inserted)\n
continue;\n\n var intersectCount = intersect(splice.index,\n
splice.index + splice.removed.length,\n
current.index,\n cur
rent.index + current.addedCount);\n\n if (intersectCount >= 0) {\n /
/ Merge the two splices\n\n splices.splice(i, 1);\n i--;\n\n
insertionOffset -= current.addedCount - current.removed.length;\n\n spl
ice.addedCount += current.addedCount - intersectCount;\n var deleteCount
= splice.removed.length +\n current.removed.length - in
tersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n //
merged splice is a noop. discard.\n inserted = true;\n } else {
\n var removed = current.removed;\n\n if (splice.index < curre
nt.index) {\n // some prefix of splice.removed is prepended to curren
t.removed.\n var prepend = splice.removed.slice(0, current.index - sp
lice.index);\n Array.prototype.push.apply(prepend, removed);\n
removed = prepend;\n }\n\n if (splice.index + splice.remo
ved.length > current.index + current.addedCount) {\n // some suffix o
f splice.removed is appended to current.removed.\n var append = splic
e.removed.slice(current.index + current.addedCount - splice.index);\n
Array.prototype.push.apply(removed, append);\n }\n\n splice.r
emoved = removed;\n if (current.index < splice.index) {\n sp
lice.index = current.index;\n }\n }\n } else if (splice.ind
ex < current.index) {\n // Insert splice here.\n\n inserted = true
;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset =
splice.addedCount - splice.removed.length\n current.index += offset;\n
insertionOffset += offset;\n }\n }\n\n if (!inserted)\n sp
lices.push(splice);\n }\n\n function createInitialSplices(array, changeRecords
) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i++)
{\n var record = changeRecords[i];\n switch(record.type) {\n c
ase 'splice':\n mergeSplice(splices, record.index, record.removed.slice
(), record.addedCount);\n break;\n case 'add':\n case 'up
date':\n case 'delete':\n if (!isIndex(record.name))\n
continue;\n var index = toNumber(record.name);\n if (index <
0)\n continue;\n mergeSplice(splices, index, [record.oldVal
ue], 1);\n break;\n default:\n console.error('Unexpecte
d record type: ' + JSON.stringify(record));\n break;\n }\n }\n\
n return splices;\n }\n\n function projectArraySplices(array, changeRecords
) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).for
Each(function(splice) {\n if (splice.addedCount == 1 && splice.removed.leng
th == 1) {\n if (splice.removed[0] !== array[splice.index])\n sp
lices.push(splice);\n\n return\n };\n\n splices = splices.conca
t(calcSplices(array, splice.index, splice.index + splice.addedCount,\n
splice.removed, 0, splice.removed.length));\n
});\n\n return splices;\n }\n\n global.Observer = Observer;\n global.Obs
erver.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentinel;
// for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.Arr
ayObserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = function(
current, previous) {\n return arraySplice.calculateSplices(current, previous)
;\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = Object
Observer;\n global.PathObserver = PathObserver;\n global.CompoundObserver = Co
mpoundObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverTra
nsform;\n})(typeof global !== 'undefined' && global && typeof module !== 'undefi
ned' && module ? global : this || window);\n", |
88 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n 'use stri
ct';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTable = ne
w WeakMap();\n var wrappers = Object.create(null);\n\n function detectEval() {
\n // Don't test for eval if we're running in a Chrome App environment.\n
// We check for APIs set that only exist in a Chrome App context.\n if (typeo
f chrome !== 'undefined' && chrome.app && chrome.app.runtime) {\n return fa
lse;\n }\n\n // Firefox OS Apps do not allow eval. This feature detection
is very hacky\n // but even if some other platform adds support for this func
tion this code\n // will continue to work.\n if (navigator.getDeviceStorag
e) {\n return false;\n }\n\n try {\n var f = new Function('retur
n true;');\n return f();\n } catch (ex) {\n return false;\n }\n
}\n\n var hasEval = detectEval();\n\n function assert(b) {\n if (!b)\n
throw new Error('Assertion failed');\n };\n\n var defineProperty = Object.de
fineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var ge
tOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to
, from) {\n var names = getOwnPropertyNames(from);\n for (var i = 0; i < n
ames.length; i++) {\n var name = names[i];\n defineProperty(to, name,
getOwnPropertyDescriptor(from, name));\n }\n return to;\n };\n\n functio
n mixinStatics(to, from) {\n var names = getOwnPropertyNames(from);\n for
(var i = 0; i < names.length; i++) {\n var name = names[i];\n switch (
name) {\n case 'arguments':\n case 'caller':\n case 'length
':\n case 'name':\n case 'prototype':\n case 'toString':\n
continue;\n }\n defineProperty(to, name, getOwnPropertyDescri
ptor(from, name));\n }\n return to;\n };\n\n function oneOf(object, prop
ertyNames) {\n for (var i = 0; i < propertyNames.length; i++) {\n if (pr
opertyNames[i] in object)\n return propertyNames[i];\n }\n }\n\n var
nonEnumerableDataDescriptor = {\n value: undefined,\n configurable: true,
\n enumerable: false,\n writable: true\n };\n\n function defineNonEnumer
ableDataProperty(object, name, value) {\n nonEnumerableDataDescriptor.value =
value;\n defineProperty(object, name, nonEnumerableDataDescriptor);\n }\n\n
// Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozill
a.org/show_bug.cgi?id=855844\n // Make sure they are create before we start mod
ifying things.\n getOwnPropertyNames(window);\n\n function getWrapperConstruct
or(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(no
de);\n var wrapperConstructor = constructorTable.get(nativePrototype);\n i
f (wrapperConstructor)\n return wrapperConstructor;\n\n var parentWrappe
rConstructor = getWrapperConstructor(nativePrototype);\n\n var GeneratedWrapp
er = createWrapperConstructor(parentWrapperConstructor);\n registerInternal(n
ativePrototype, GeneratedWrapper, node);\n\n return GeneratedWrapper;\n }\n\
n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n in
stallProperty(nativePrototype, wrapperPrototype, true);\n }\n\n function regis
terInstanceProperties(wrapperPrototype, instanceObject) {\n installProperty(i
nstanceObject, wrapperPrototype, false);\n }\n\n var isFirefox = /Firefox/.tes
t(navigator.userAgent);\n\n // This is used as a fallback when getting the desc
riptor fails in\n // installProperty.\n var dummyDescriptor = {\n get: func
tion() {},\n set: function(v) {},\n configurable: true,\n enumerable: t
rue\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test
(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9
]*$/.test(name);\n }\n\n // The name of the implementation property is intenti
onally hard to\n // remember. Unfortunately, browsers are slower doing obj[expr
] than\n // obj.foo so we resort to repeat this ugly name. This ugly name is ne
ver\n // used outside of this file though.\n\n function getGetter(name) {\n
return hasEval && isIdentifierName(name) ?\n new Function('return this._
_impl4cf1e782hg__.' + name) :\n function() { return this.__impl4cf1e782hg
__[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdent
ifierName(name) ?\n new Function('v', 'this.__impl4cf1e782hg__.' + name +
' = v') :\n function(v) { this.__impl4cf1e782hg__[name] = v; };\n }\n\n
function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n
new Function('return this.__impl4cf1e782hg__.' + name +\n
'.apply(this.__impl4cf1e782hg__, arguments)') :\n function() {\n
return this.__impl4cf1e782hg__[name].apply(\n this.__impl4cf1e
782hg__, arguments);\n };\n }\n\n function getDescriptor(source, name)
{\n try {\n return Object.getOwnPropertyDescriptor(source, name);\n }
catch (ex) {\n // JSC and V8 both use data properties instead of accessors
which can\n // cause getting the property desciptor to throw an exception.
\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDesc
riptor;\n }\n }\n\n // Safari 8 exposes WebIDL attributes as an invalid acc
essor property. Its\n // descriptor has {get: undefined, set: undefined}. We th
erefore ignore the\n // shape of the descriptor and make all properties read-wr
ite.\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n var isBrokenSafari =
function() {\n var descr = Object.getOwnPropertyDescriptor(Node.prototype, '
nodeType');\n return !!descr && 'set' in descr;\n }();\n\n function install
Property(source, target, allowMethod, opt_blacklist) {\n var names = getOwnPr
opertyNames(source);\n for (var i = 0; i < names.length; i++) {\n var na
me = names[i];\n if (name === 'polymerBlackList_')\n continue;\n\n
if (name in target)\n continue;\n\n if (source.polymerBlackList_
&& source.polymerBlackList_[name])\n continue;\n\n if (isFirefox) {
\n // Tickle Firefox's old bindings.\n source.__lookupGetter__(nam
e);\n }\n var descriptor = getDescriptor(source, name);\n var get
ter, setter;\n if (allowMethod && typeof descriptor.value === 'function') {
\n target[name] = getMethod(name);\n continue;\n }\n\n v
ar isEvent = isEventHandlerName(name);\n if (isEvent)\n getter = sco
pe.getEventHandlerGetter(name);\n else\n getter = getGetter(name);\n
\n if (descriptor.writable || descriptor.set || isBrokenSafari) {\n
if (isEvent)\n setter = scope.getEventHandlerSetter(name);\n els
e\n setter = getSetter(name);\n }\n\n defineProperty(target,
name, {\n get: getter,\n set: setter,\n configurable: descr
iptor.configurable,\n enumerable: descriptor.enumerable\n });\n }
\n }\n\n /**\n * @param {Function} nativeConstructor\n * @param {Function}
wrapperConstructor\n * @param {Object=} opt_instance If present, this is used
to extract\n * properties from an instance object.\n */\n function reg
ister(nativeConstructor, wrapperConstructor, opt_instance) {\n var nativeProt
otype = nativeConstructor.prototype;\n registerInternal(nativePrototype, wrap
perConstructor, opt_instance);\n mixinStatics(wrapperConstructor, nativeConst
ructor);\n }\n\n function registerInternal(nativePrototype, wrapperConstructor
, opt_instance) {\n var wrapperPrototype = wrapperConstructor.prototype;\n
assert(constructorTable.get(nativePrototype) === undefined);\n\n constructor
Table.set(nativePrototype, wrapperConstructor);\n nativePrototypeTable.set(wr
apperPrototype, nativePrototype);\n\n addForwardingProperties(nativePrototype
, wrapperPrototype);\n if (opt_instance)\n registerInstanceProperties(wr
apperPrototype, opt_instance);\n\n defineNonEnumerableDataProperty(\n
wrapperPrototype, 'constructor', wrapperConstructor);\n // Set it again. Some
VMs optimizes objects that are used as prototypes.\n wrapperConstructor.prot
otype = wrapperPrototype;\n }\n\n function isWrapperFor(wrapperConstructor, na
tiveConstructor) {\n return constructorTable.get(nativeConstructor.prototype)
===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper
constructor based on |object| and its\n * constructor.\n * @param {Node} obj
ect\n * @return {Function} The generated constructor.\n */\n function regis
terObject(object) {\n var nativePrototype = Object.getPrototypeOf(object);\n\
n var superWrapperConstructor = getWrapperConstructor(nativePrototype);\n
var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor);\n r
egisterInternal(nativePrototype, GeneratedWrapper, object);\n\n return Genera
tedWrapper;\n }\n\n function createWrapperConstructor(superWrapperConstructor)
{\n function GeneratedWrapper(node) {\n superWrapperConstructor.call(th
is, node);\n }\n var p = Object.create(superWrapperConstructor.prototype);
\n p.constructor = GeneratedWrapper;\n GeneratedWrapper.prototype = p;\n\n
return GeneratedWrapper;\n }\n\n function isWrapper(object) {\n return
object && object.__impl4cf1e782hg__;\n }\n\n function isNative(object) {\n
return !isWrapper(object);\n }\n\n /**\n * Wraps a node in a WrapperNode. If
there already exists a wrapper for the\n * |node| that wrapper is returned in
stead.\n * @param {Node} node\n * @return {WrapperNode}\n */\n function w
rap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(i
mpl));\n return impl.__wrapper8e3dd93a60__ ||\n (impl.__wrapper8e3dd93
a60__ = new (getWrapperConstructor(impl))(impl));\n }\n\n /**\n * Unwraps a
wrapper and returns the node it is wrapping.\n * @param {WrapperNode} wrapper\
n * @return {Node}\n */\n function unwrap(wrapper) {\n if (wrapper === n
ull)\n return null;\n assert(isWrapper(wrapper));\n return wrapper.__
impl4cf1e782hg__;\n }\n\n function unsafeUnwrap(wrapper) {\n return wrapper
.__impl4cf1e782hg__;\n }\n\n function setWrapper(impl, wrapper) {\n wrapper
.__impl4cf1e782hg__ = impl;\n impl.__wrapper8e3dd93a60__ = wrapper;\n }\n\n
/**\n * Unwraps object if it is a wrapper.\n * @param {Object} object\n *
@return {Object} The native implementation object.\n */\n function unwrapIfN
eeded(object) {\n return object && isWrapper(object) ? unwrap(object) : objec
t;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object
} object\n * @return {Object} The wrapper for object.\n */\n function wrapI
fNeeded(object) {\n return object && !isWrapper(object) ? wrap(object) : obje
ct;\n }\n\n /**\n * Overrides the current wrapper (if any) for node.\n * @
param {Node} node\n * @param {WrapperNode=} wrapper If left out the wrapper wi
ll be created as\n * needed next time someone wraps the node.\n */\n fu
nction rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n as
sert(isNative(node));\n assert(wrapper === undefined || isWrapper(wrapper));\
n node.__wrapper8e3dd93a60__ = wrapper;\n }\n\n var getterDescriptor = {\n
get: undefined,\n configurable: true,\n enumerable: true\n };\n\n fun
ction defineGetter(constructor, name, getter) {\n getterDescriptor.get = gett
er;\n defineProperty(constructor.prototype, name, getterDescriptor);\n }\n\n
function defineWrapGetter(constructor, name) {\n defineGetter(constructor,
name, function() {\n return wrap(this.__impl4cf1e782hg__[name]);\n });\n
}\n\n /**\n * Forwards existing methods on the native object to the wrapper
methods.\n * This does not wrap any of the arguments or the return value sinc
e the\n * wrapper implementation already takes care of that.\n * @param {Arr
ay.<Function>} constructors\n * @parem {Array.<string>} names\n */\n functi
on forwardMethodsToWrapper(constructors, names) {\n constructors.forEach(func
tion(constructor) {\n names.forEach(function(name) {\n constructor.p
rototype[name] = function() {\n var w = wrapIfNeeded(this);\n
return w[name].apply(w, arguments);\n };\n });\n });\n }\n\n sc
ope.assert = assert;\n scope.constructorTable = constructorTable;\n scope.defi
neGetter = defineGetter;\n scope.defineWrapGetter = defineWrapGetter;\n scope.
forwardMethodsToWrapper = forwardMethodsToWrapper;\n scope.isWrapper = isWrappe
r;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin = mixin;\n scope.native
PrototypeTable = nativePrototypeTable;\n scope.oneOf = oneOf;\n scope.register
Object = registerObject;\n scope.registerWrapper = register;\n scope.rewrap =
rewrap;\n scope.setWrapper = setWrapper;\n scope.unsafeUnwrap = unsafeUnwrap;\
n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwrapIfNeeded;\n scope.wra
p = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope.wrappers = wrappers;\n\
n})(window.ShadowDOMPolyfill);\n", | 88 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n 'use stri
ct';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTable = ne
w WeakMap();\n var wrappers = Object.create(null);\n\n function detectEval() {
\n // Don't test for eval if we're running in a Chrome App environment.\n
// We check for APIs set that only exist in a Chrome App context.\n if (typeo
f chrome !== 'undefined' && chrome.app && chrome.app.runtime) {\n return fa
lse;\n }\n\n // Firefox OS Apps do not allow eval. This feature detection
is very hacky\n // but even if some other platform adds support for this func
tion this code\n // will continue to work.\n if (navigator.getDeviceStorag
e) {\n return false;\n }\n\n try {\n var f = new Function('retur
n true;');\n return f();\n } catch (ex) {\n return false;\n }\n
}\n\n var hasEval = detectEval();\n\n function assert(b) {\n if (!b)\n
throw new Error('Assertion failed');\n };\n\n var defineProperty = Object.de
fineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var ge
tOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to
, from) {\n var names = getOwnPropertyNames(from);\n for (var i = 0; i < n
ames.length; i++) {\n var name = names[i];\n defineProperty(to, name,
getOwnPropertyDescriptor(from, name));\n }\n return to;\n };\n\n functio
n mixinStatics(to, from) {\n var names = getOwnPropertyNames(from);\n for
(var i = 0; i < names.length; i++) {\n var name = names[i];\n switch (
name) {\n case 'arguments':\n case 'caller':\n case 'length
':\n case 'name':\n case 'prototype':\n case 'toString':\n
continue;\n }\n defineProperty(to, name, getOwnPropertyDescri
ptor(from, name));\n }\n return to;\n };\n\n function oneOf(object, prop
ertyNames) {\n for (var i = 0; i < propertyNames.length; i++) {\n if (pr
opertyNames[i] in object)\n return propertyNames[i];\n }\n }\n\n var
nonEnumerableDataDescriptor = {\n value: undefined,\n configurable: true,
\n enumerable: false,\n writable: true\n };\n\n function defineNonEnumer
ableDataProperty(object, name, value) {\n nonEnumerableDataDescriptor.value =
value;\n defineProperty(object, name, nonEnumerableDataDescriptor);\n }\n\n
// Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozill
a.org/show_bug.cgi?id=855844\n // Make sure they are create before we start mod
ifying things.\n getOwnPropertyNames(window);\n\n function getWrapperConstruct
or(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(no
de);\n var wrapperConstructor = constructorTable.get(nativePrototype);\n i
f (wrapperConstructor)\n return wrapperConstructor;\n\n var parentWrappe
rConstructor = getWrapperConstructor(nativePrototype);\n\n var GeneratedWrapp
er = createWrapperConstructor(parentWrapperConstructor);\n registerInternal(n
ativePrototype, GeneratedWrapper, node);\n\n return GeneratedWrapper;\n }\n\
n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n in
stallProperty(nativePrototype, wrapperPrototype, true);\n }\n\n function regis
terInstanceProperties(wrapperPrototype, instanceObject) {\n installProperty(i
nstanceObject, wrapperPrototype, false);\n }\n\n var isFirefox = /Firefox/.tes
t(navigator.userAgent);\n\n // This is used as a fallback when getting the desc
riptor fails in\n // installProperty.\n var dummyDescriptor = {\n get: func
tion() {},\n set: function(v) {},\n configurable: true,\n enumerable: t
rue\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test
(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9
]*$/.test(name);\n }\n\n // The name of the implementation property is intenti
onally hard to\n // remember. Unfortunately, browsers are slower doing obj[expr
] than\n // obj.foo so we resort to repeat this ugly name. This ugly name is ne
ver\n // used outside of this file though.\n\n function getGetter(name) {\n
return hasEval && isIdentifierName(name) ?\n new Function('return this._
_impl4cf1e782hg__.' + name) :\n function() { return this.__impl4cf1e782hg
__[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdent
ifierName(name) ?\n new Function('v', 'this.__impl4cf1e782hg__.' + name +
' = v') :\n function(v) { this.__impl4cf1e782hg__[name] = v; };\n }\n\n
function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n
new Function('return this.__impl4cf1e782hg__.' + name +\n
'.apply(this.__impl4cf1e782hg__, arguments)') :\n function() {\n
return this.__impl4cf1e782hg__[name].apply(\n this.__impl4cf1e
782hg__, arguments);\n };\n }\n\n function getDescriptor(source, name)
{\n try {\n return Object.getOwnPropertyDescriptor(source, name);\n }
catch (ex) {\n // JSC and V8 both use data properties instead of accessors
which can\n // cause getting the property desciptor to throw an exception.
\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDesc
riptor;\n }\n }\n\n // Safari 8 exposes WebIDL attributes as an invalid acc
essor property. Its\n // descriptor has {get: undefined, set: undefined}. We th
erefore ignore the\n // shape of the descriptor and make all properties read-wr
ite.\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n var isBrokenSafari =
function() {\n var descr = Object.getOwnPropertyDescriptor(Node.prototype, '
nodeType');\n return !!descr && 'set' in descr;\n }();\n\n function install
Property(source, target, allowMethod, opt_blacklist) {\n var names = getOwnPr
opertyNames(source);\n for (var i = 0; i < names.length; i++) {\n var na
me = names[i];\n if (name === 'polymerBlackList_')\n continue;\n\n
if (name in target)\n continue;\n\n if (source.polymerBlackList_
&& source.polymerBlackList_[name])\n continue;\n\n if (isFirefox) {
\n // Tickle Firefox's old bindings.\n source.__lookupGetter__(nam
e);\n }\n var descriptor = getDescriptor(source, name);\n var get
ter, setter;\n if (allowMethod && typeof descriptor.value === 'function') {
\n target[name] = getMethod(name);\n continue;\n }\n\n v
ar isEvent = isEventHandlerName(name);\n if (isEvent)\n getter = sco
pe.getEventHandlerGetter(name);\n else\n getter = getGetter(name);\n
\n if (descriptor.writable || descriptor.set || isBrokenSafari) {\n
if (isEvent)\n setter = scope.getEventHandlerSetter(name);\n els
e\n setter = getSetter(name);\n }\n\n defineProperty(target,
name, {\n get: getter,\n set: setter,\n configurable: descr
iptor.configurable,\n enumerable: descriptor.enumerable\n });\n }
\n }\n\n /**\n * @param {Function} nativeConstructor\n * @param {Function}
wrapperConstructor\n * @param {Object=} opt_instance If present, this is used
to extract\n * properties from an instance object.\n */\n function reg
ister(nativeConstructor, wrapperConstructor, opt_instance) {\n var nativeProt
otype = nativeConstructor.prototype;\n registerInternal(nativePrototype, wrap
perConstructor, opt_instance);\n mixinStatics(wrapperConstructor, nativeConst
ructor);\n }\n\n function registerInternal(nativePrototype, wrapperConstructor
, opt_instance) {\n var wrapperPrototype = wrapperConstructor.prototype;\n
assert(constructorTable.get(nativePrototype) === undefined);\n\n constructor
Table.set(nativePrototype, wrapperConstructor);\n nativePrototypeTable.set(wr
apperPrototype, nativePrototype);\n\n addForwardingProperties(nativePrototype
, wrapperPrototype);\n if (opt_instance)\n registerInstanceProperties(wr
apperPrototype, opt_instance);\n\n defineNonEnumerableDataProperty(\n
wrapperPrototype, 'constructor', wrapperConstructor);\n // Set it again. Some
VMs optimizes objects that are used as prototypes.\n wrapperConstructor.prot
otype = wrapperPrototype;\n }\n\n function isWrapperFor(wrapperConstructor, na
tiveConstructor) {\n return constructorTable.get(nativeConstructor.prototype)
===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper
constructor based on |object| and its\n * constructor.\n * @param {Node} obj
ect\n * @return {Function} The generated constructor.\n */\n function regis
terObject(object) {\n var nativePrototype = Object.getPrototypeOf(object);\n\
n var superWrapperConstructor = getWrapperConstructor(nativePrototype);\n
var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor);\n r
egisterInternal(nativePrototype, GeneratedWrapper, object);\n\n return Genera
tedWrapper;\n }\n\n function createWrapperConstructor(superWrapperConstructor)
{\n function GeneratedWrapper(node) {\n superWrapperConstructor.call(th
is, node);\n }\n var p = Object.create(superWrapperConstructor.prototype);
\n p.constructor = GeneratedWrapper;\n GeneratedWrapper.prototype = p;\n\n
return GeneratedWrapper;\n }\n\n function isWrapper(object) {\n return
object && object.__impl4cf1e782hg__;\n }\n\n function isNative(object) {\n
return !isWrapper(object);\n }\n\n /**\n * Wraps a node in a WrapperNode. If
there already exists a wrapper for the\n * |node| that wrapper is returned in
stead.\n * @param {Node} node\n * @return {WrapperNode}\n */\n function w
rap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(i
mpl));\n return impl.__wrapper8e3dd93a60__ ||\n (impl.__wrapper8e3dd93
a60__ = new (getWrapperConstructor(impl))(impl));\n }\n\n /**\n * Unwraps a
wrapper and returns the node it is wrapping.\n * @param {WrapperNode} wrapper\
n * @return {Node}\n */\n function unwrap(wrapper) {\n if (wrapper === n
ull)\n return null;\n assert(isWrapper(wrapper));\n return wrapper.__
impl4cf1e782hg__;\n }\n\n function unsafeUnwrap(wrapper) {\n return wrapper
.__impl4cf1e782hg__;\n }\n\n function setWrapper(impl, wrapper) {\n wrapper
.__impl4cf1e782hg__ = impl;\n impl.__wrapper8e3dd93a60__ = wrapper;\n }\n\n
/**\n * Unwraps object if it is a wrapper.\n * @param {Object} object\n *
@return {Object} The native implementation object.\n */\n function unwrapIfN
eeded(object) {\n return object && isWrapper(object) ? unwrap(object) : objec
t;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object
} object\n * @return {Object} The wrapper for object.\n */\n function wrapI
fNeeded(object) {\n return object && !isWrapper(object) ? wrap(object) : obje
ct;\n }\n\n /**\n * Overrides the current wrapper (if any) for node.\n * @
param {Node} node\n * @param {WrapperNode=} wrapper If left out the wrapper wi
ll be created as\n * needed next time someone wraps the node.\n */\n fu
nction rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n as
sert(isNative(node));\n assert(wrapper === undefined || isWrapper(wrapper));\
n node.__wrapper8e3dd93a60__ = wrapper;\n }\n\n var getterDescriptor = {\n
get: undefined,\n configurable: true,\n enumerable: true\n };\n\n fun
ction defineGetter(constructor, name, getter) {\n getterDescriptor.get = gett
er;\n defineProperty(constructor.prototype, name, getterDescriptor);\n }\n\n
function defineWrapGetter(constructor, name) {\n defineGetter(constructor,
name, function() {\n return wrap(this.__impl4cf1e782hg__[name]);\n });\n
}\n\n /**\n * Forwards existing methods on the native object to the wrapper
methods.\n * This does not wrap any of the arguments or the return value sinc
e the\n * wrapper implementation already takes care of that.\n * @param {Arr
ay.<Function>} constructors\n * @parem {Array.<string>} names\n */\n functi
on forwardMethodsToWrapper(constructors, names) {\n constructors.forEach(func
tion(constructor) {\n names.forEach(function(name) {\n constructor.p
rototype[name] = function() {\n var w = wrapIfNeeded(this);\n
return w[name].apply(w, arguments);\n };\n });\n });\n }\n\n sc
ope.assert = assert;\n scope.constructorTable = constructorTable;\n scope.defi
neGetter = defineGetter;\n scope.defineWrapGetter = defineWrapGetter;\n scope.
forwardMethodsToWrapper = forwardMethodsToWrapper;\n scope.isWrapper = isWrappe
r;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin = mixin;\n scope.native
PrototypeTable = nativePrototypeTable;\n scope.oneOf = oneOf;\n scope.register
Object = registerObject;\n scope.registerWrapper = register;\n scope.rewrap =
rewrap;\n scope.setWrapper = setWrapper;\n scope.unsafeUnwrap = unsafeUnwrap;\
n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwrapIfNeeded;\n scope.wra
p = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope.wrappers = wrappers;\n\
n})(window.ShadowDOMPolyfill);\n", |
89 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalM
utationObserver = window.MutationObserver;\n var callbacks = [];\n var pending
= false;\n var timerFunc;\n\n function handle() {\n pending = false;\n
var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < c
opies.length; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutat
ionObserver) {\n var counter = 1;\n var observer = new OriginalMutationObs
erver(handle);\n var textNode = document.createTextNode(counter);\n observ
er.observe(textNode, {characterData: true});\n\n timerFunc = function() {\n
counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n }
else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n func
tion setEndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n
return;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.set
EndOfMicrotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n", | 89 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalM
utationObserver = window.MutationObserver;\n var callbacks = [];\n var pending
= false;\n var timerFunc;\n\n function handle() {\n pending = false;\n
var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < c
opies.length; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutat
ionObserver) {\n var counter = 1;\n var observer = new OriginalMutationObs
erver(handle);\n var textNode = document.createTextNode(counter);\n observ
er.observe(textNode, {characterData: true});\n\n timerFunc = function() {\n
counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n }
else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n func
tion setEndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n
return;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.set
EndOfMicrotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n", |
90 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var setEndOfMic
rotask = scope.setEndOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var
wrappers = scope.wrappers;\n\n var registrationsTable = new WeakMap();\n var
globalMutationObservers = [];\n var isScheduled = false;\n\n function schedule
Callback(observer) {\n if (observer.scheduled_)\n return;\n\n observe
r.scheduled_ = true;\n globalMutationObservers.push(observer);\n\n if (isS
cheduled)\n return;\n setEndOfMicrotask(notifyObservers);\n isSchedul
ed = true;\n }\n\n // http://dom.spec.whatwg.org/#mutation-observers\n functi
on notifyObservers() {\n isScheduled = false;\n\n while (globalMutationObs
ervers.length) {\n var notifyList = globalMutationObservers;\n globalM
utationObservers = [];\n\n // Deliver changes in birth order of the Mutatio
nObservers.\n notifyList.sort(function(x, y) { return x.uid_ - y.uid_; });\
n\n for (var i = 0; i < notifyList.length; i++) {\n var mo = notifyL
ist[i];\n mo.scheduled_ = false;\n var queue = mo.takeRecords();\n
removeTransientObserversFor(mo);\n if (queue.length) {\n
mo.callback_(queue, mo);\n }\n }\n }\n }\n\n\n /**\n * @para
m {string} type\n * @param {Node} target\n * @constructor\n */\n function
MutationRecord(type, target) {\n this.type = type;\n this.target = target
;\n this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new w
rappers.NodeList();\n this.previousSibling = null;\n this.nextSibling = nu
ll;\n this.attributeName = null;\n this.attributeNamespace = null;\n th
is.oldValue = null;\n }\n\n /**\n * Registers transient observers to ancesto
r and its ancesors for the node\n * which was removed.\n * @param {!Node} an
cestor\n * @param {!Node} node\n */\n function registerTransientObservers(a
ncestor, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n
var registrations = registrationsTable.get(ancestor);\n if (!registrations)
\n continue;\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.options.subt
ree)\n registration.addTransientObserver(node);\n }\n }\n }\n\
n function removeTransientObserversFor(observer) {\n for (var i = 0; i < obs
erver.nodes_.length; i++) {\n var node = observer.nodes_[i];\n var reg
istrations = registrationsTable.get(node);\n if (!registrations)\n r
eturn;\n for (var j = 0; j < registrations.length; j++) {\n var regi
stration = registrations[j];\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n }\n }\n }\n\n // h
ttp://dom.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(t
arget, type, data) {\n // 1.\n var interestedObservers = Object.create(nul
l);\n var associatedStrings = Object.create(null);\n\n // 2.\n for (var
node = target; node; node = node.parentNode) {\n // 3.\n var registra
tions = registrationsTable.get(node);\n if (!registrations)\n contin
ue;\n for (var j = 0; j < registrations.length; j++) {\n var registr
ation = registrations[j];\n var options = registration.options;\n
// 1.\n if (node !== target && !options.subtree)\n continue;\n\n
// 2.\n if (type === 'attributes' && !options.attributes)\n
continue;\n\n // 3. If type is \"attributes\", options's attributeFil
ter is present, and\n // either options's attributeFilter does not contai
n name or namespace\n // is non-null, continue.\n if (type === 'at
tributes' && options.attributeFilter &&\n (data.namespace !== null ||
\n options.attributeFilter.indexOf(data.name) === -1)) {\n
continue;\n }\n\n // 4.\n if (type === 'characterData' && !
options.characterData)\n continue;\n\n // 5.\n if (type =
== 'childList' && !options.childList)\n continue;\n\n // 6.\n
var observer = registration.observer;\n interestedObservers[observer
.uid_] = observer;\n\n // 7. If either type is \"attributes\" and options
's attributeOldValue is\n // true, or type is \"characterData\" and optio
ns's characterDataOldValue\n // is true, set the paired string of registe
red observer's observer in\n // interested observers to oldValue.\n
if (type === 'attributes' && options.attributeOldValue ||\n type ==
= 'characterData' && options.characterDataOldValue) {\n associatedStrin
gs[observer.uid_] = data.oldValue;\n }\n }\n }\n\n // 4.\n
for (var uid in interestedObservers) {\n var observer = interestedObservers
[uid];\n var record = new MutationRecord(type, target);\n\n // 2.\n
if ('name' in data && 'namespace' in data) {\n record.attributeName =
data.name;\n record.attributeNamespace = data.namespace;\n }\n\n
// 3.\n if (data.addedNodes)\n record.addedNodes = data.addedNodes
;\n\n // 4.\n if (data.removedNodes)\n record.removedNodes = da
ta.removedNodes;\n\n // 5.\n if (data.previousSibling)\n record
.previousSibling = data.previousSibling;\n\n // 6.\n if (data.nextSibl
ing)\n record.nextSibling = data.nextSibling;\n\n // 7.\n if (a
ssociatedStrings[uid] !== undefined)\n record.oldValue = associatedString
s[uid];\n\n // 8.\n scheduleCallback(observer);\n observer.record
s_.push(record);\n }\n }\n\n var slice = Array.prototype.slice;\n\n /**\n
* @param {!Object} options\n * @constructor\n */\n function MutationObser
verOptions(options) {\n this.childList = !!options.childList;\n this.subtr
ee = !!options.subtree;\n\n // 1. If either options' attributeOldValue or att
ributeFilter is present\n // and options' attributes is omitted, set options'
attributes to true.\n if (!('attributes' in options) &&\n ('attribute
OldValue' in options || 'attributeFilter' in options)) {\n this.attributes
= true;\n } else {\n this.attributes = !!options.attributes;\n }\n\n
// 2. If options' characterDataOldValue is present and options'\n // chara
cterData is omitted, set options' characterData to true.\n if ('characterData
OldValue' in options && !('characterData' in options))\n this.characterData
= true;\n else\n this.characterData = !!options.characterData;\n\n /
/ 3. & 4.\n if (!this.attributes &&\n (options.attributeOldValue || 'a
ttributeFilter' in options) ||\n // 5.\n !this.characterData && op
tions.characterDataOldValue) {\n throw new TypeError();\n }\n\n this.
characterData = !!options.characterData;\n this.attributeOldValue = !!options
.attributeOldValue;\n this.characterDataOldValue = !!options.characterDataOld
Value;\n if ('attributeFilter' in options) {\n if (options.attributeFilt
er == null ||\n typeof options.attributeFilter !== 'object') {\n
throw new TypeError();\n }\n this.attributeFilter = slice.call(option
s.attributeFilter);\n } else {\n this.attributeFilter = null;\n }\n
}\n\n var uidCounter = 0;\n\n /**\n * The class that maps to the DOM Mutatio
nObserver interface.\n * @param {Function} callback.\n * @constructor\n */
\n function MutationObserver(callback) {\n this.callback_ = callback;\n t
his.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++uidCounter;\n th
is.scheduled_ = false;\n }\n\n MutationObserver.prototype = {\n constructor
: MutationObserver,\n\n // http://dom.spec.whatwg.org/#dom-mutationobserver-o
bserve\n observe: function(target, options) {\n target = wrapIfNeeded(ta
rget);\n\n var newOptions = new MutationObserverOptions(options);\n\n
// 6.\n var registration;\n var registrations = registrationsTable.get
(target);\n if (!registrations)\n registrationsTable.set(target, reg
istrations = []);\n\n for (var i = 0; i < registrations.length; i++) {\n
if (registrations[i].observer === this) {\n registration = registr
ations[i];\n // 6.1.\n registration.removeTransientObservers()
;\n // 6.2.\n registration.options = newOptions;\n }\n
}\n\n // 7.\n if (!registration) {\n registration = new Re
gistration(this, target, newOptions);\n registrations.push(registration);
\n this.nodes_.push(target);\n }\n },\n\n // http://dom.spec.w
hatwg.org/#dom-mutationobserver-disconnect\n disconnect: function() {\n
this.nodes_.forEach(function(node) {\n var registrations = registrationsT
able.get(node);\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.observer =
== this) {\n registrations.splice(i, 1);\n // Each node ca
n only have one registered observer associated with\n // this observe
r.\n break;\n }\n }\n }, this);\n this.reco
rds_ = [];\n },\n\n takeRecords: function() {\n var copyOfRecords = t
his.records_;\n this.records_ = [];\n return copyOfRecords;\n }\n
};\n\n /**\n * Class used to represent a registered observer.\n * @param {M
utationObserver} observer\n * @param {Node} target\n * @param {MutationObser
verOptions} options\n * @constructor\n */\n function Registration(observer,
target, options) {\n this.observer = observer;\n this.target = target;\n
this.options = options;\n this.transientObservedNodes = [];\n }\n\n Regi
stration.prototype = {\n /**\n * Adds a transient observer on node. The t
ransient observer gets removed\n * next time we deliver the change records.\
n * @param {Node} node\n */\n addTransientObserver: function(node) {\
n // Don't add transient observers on the target itself. We already have al
l\n // the required listeners set up on the target.\n if (node === thi
s.target)\n return;\n\n // Make sure we remove transient observers a
t the end of microtask, even\n // if we didn't get any change records.\n
scheduleCallback(this.observer);\n\n this.transientObservedNodes.push(no
de);\n var registrations = registrationsTable.get(node);\n if (!regist
rations)\n registrationsTable.set(node, registrations = []);\n\n //
We know that registrations does not contain this because we already\n // ch
ecked if node === this.target.\n registrations.push(this);\n },\n\n r
emoveTransientObservers: function() {\n var transientObservedNodes = this.t
ransientObservedNodes;\n this.transientObservedNodes = [];\n\n for (va
r i = 0; i < transientObservedNodes.length; i++) {\n var node = transient
ObservedNodes[i];\n var registrations = registrationsTable.get(node);\n
for (var j = 0; j < registrations.length; j++) {\n if (registrati
ons[j] === this) {\n registrations.splice(j, 1);\n // Each
node can only have one registered observer associated with\n // this
observer.\n break;\n }\n }\n }\n }\n };\n\n
scope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers =
registerTransientObservers;\n scope.wrappers.MutationObserver = MutationObserv
er;\n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPol
yfill);\n", | 90 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var setEndOfMic
rotask = scope.setEndOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var
wrappers = scope.wrappers;\n\n var registrationsTable = new WeakMap();\n var
globalMutationObservers = [];\n var isScheduled = false;\n\n function schedule
Callback() {\n if (isScheduled)\n return;\n setEndOfMicrotask(notifyO
bservers);\n isScheduled = true;\n }\n\n // http://dom.spec.whatwg.org/#mut
ation-observers\n function notifyObservers() {\n isScheduled = false;\n\n
while (globalMutationObservers.length) {\n var notifyList = globalMutation
Observers;\n globalMutationObservers = [];\n\n // Deliver changes in b
irth order of the MutationObservers.\n notifyList.sort(function(x, y) { ret
urn x.uid_ - y.uid_; });\n\n for (var i = 0; i < notifyList.length; i++) {\
n var mo = notifyList[i];\n var queue = mo.takeRecords();\n
removeTransientObserversFor(mo);\n if (queue.length) {\n mo.cal
lback_(queue, mo);\n }\n }\n }\n }\n\n\n /**\n * @param {stri
ng} type\n * @param {Node} target\n * @constructor\n */\n function Mutati
onRecord(type, target) {\n this.type = type;\n this.target = target;\n
this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new wrappers
.NodeList();\n this.previousSibling = null;\n this.nextSibling = null;\n
this.attributeName = null;\n this.attributeNamespace = null;\n this.oldV
alue = null;\n }\n\n /**\n * Registers transient observers to ancestor and i
ts ancesors for the node\n * which was removed.\n * @param {!Node} ancestor\
n * @param {!Node} node\n */\n function registerTransientObservers(ancestor
, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n var reg
istrations = registrationsTable.get(ancestor);\n if (!registrations)\n
continue;\n for (var i = 0; i < registrations.length; i++) {\n va
r registration = registrations[i];\n if (registration.options.subtree)\n
registration.addTransientObserver(node);\n }\n }\n }\n\n func
tion removeTransientObserversFor(observer) {\n for (var i = 0; i < observer.n
odes_.length; i++) {\n var node = observer.nodes_[i];\n var registrati
ons = registrationsTable.get(node);\n if (!registrations)\n return;\
n for (var j = 0; j < registrations.length; j++) {\n var registratio
n = registrations[j];\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n }\n }\n }\n\n // http://d
om.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(target,
type, data) {\n // 1.\n var interestedObservers = Object.create(null);\n
var associatedStrings = Object.create(null);\n\n // 2.\n for (var node =
target; node; node = node.parentNode) {\n // 3.\n var registrations =
registrationsTable.get(node);\n if (!registrations)\n continue;\n
for (var j = 0; j < registrations.length; j++) {\n var registration =
registrations[j];\n var options = registration.options;\n // 1.\n
if (node !== target && !options.subtree)\n continue;\n\n
// 2.\n if (type === 'attributes' && !options.attributes)\n con
tinue;\n\n // 3. If type is \"attributes\", options's attributeFilter is
present, and\n // either options's attributeFilter does not contain name
or namespace\n // is non-null, continue.\n if (type === 'attribute
s' && options.attributeFilter &&\n (data.namespace !== null ||\n
options.attributeFilter.indexOf(data.name) === -1)) {\n continu
e;\n }\n\n // 4.\n if (type === 'characterData' && !options
.characterData)\n continue;\n\n // 5.\n if (type === 'chi
ldList' && !options.childList)\n continue;\n\n // 6.\n va
r observer = registration.observer;\n interestedObservers[observer.uid_]
= observer;\n\n // 7. If either type is \"attributes\" and options's attr
ibuteOldValue is\n // true, or type is \"characterData\" and options's ch
aracterDataOldValue\n // is true, set the paired string of registered obs
erver's observer in\n // interested observers to oldValue.\n if (t
ype === 'attributes' && options.attributeOldValue ||\n type === 'char
acterData' && options.characterDataOldValue) {\n associatedStrings[obse
rver.uid_] = data.oldValue;\n }\n }\n }\n\n var anyObserversEn
queued = false;\n\n // 4.\n for (var uid in interestedObservers) {\n
var observer = interestedObservers[uid];\n var record = new MutationRecord(
type, target);\n\n // 2.\n if ('name' in data && 'namespace' in data)
{\n record.attributeName = data.name;\n record.attributeNamespace
= data.namespace;\n }\n\n // 3.\n if (data.addedNodes)\n r
ecord.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedNodes)
\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (dat
a.previousSibling)\n record.previousSibling = data.previousSibling;\n\n
// 6.\n if (data.nextSibling)\n record.nextSibling = data.nextSi
bling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n
record.oldValue = associatedStrings[uid];\n\n // 8.\n if (!observer.re
cords_.length) {\n globalMutationObservers.push(observer);\n anyOb
serversEnqueued = true;\n }\n observer.records_.push(record);\n }\n
\n if (anyObserversEnqueued)\n scheduleCallback();\n }\n\n var slice =
Array.prototype.slice;\n\n /**\n * @param {!Object} options\n * @construct
or\n */\n function MutationObserverOptions(options) {\n this.childList = !
!options.childList;\n this.subtree = !!options.subtree;\n\n // 1. If eithe
r options' attributeOldValue or attributeFilter is present\n // and options'
attributes is omitted, set options' attributes to true.\n if (!('attributes'
in options) &&\n ('attributeOldValue' in options || 'attributeFilter' in
options)) {\n this.attributes = true;\n } else {\n this.attributes
= !!options.attributes;\n }\n\n // 2. If options' characterDataOldValue is
present and options'\n // characterData is omitted, set options' characterDa
ta to true.\n if ('characterDataOldValue' in options && !('characterData' in
options))\n this.characterData = true;\n else\n this.characterData
= !!options.characterData;\n\n // 3. & 4.\n if (!this.attributes &&\n
(options.attributeOldValue || 'attributeFilter' in options) ||\n // 5.
\n !this.characterData && options.characterDataOldValue) {\n throw n
ew TypeError();\n }\n\n this.characterData = !!options.characterData;\n
this.attributeOldValue = !!options.attributeOldValue;\n this.characterDataOl
dValue = !!options.characterDataOldValue;\n if ('attributeFilter' in options)
{\n if (options.attributeFilter == null ||\n typeof options.attri
buteFilter !== 'object') {\n throw new TypeError();\n }\n this.
attributeFilter = slice.call(options.attributeFilter);\n } else {\n this
.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The
class that maps to the DOM MutationObserver interface.\n * @param {Function}
callback.\n * @constructor\n */\n function MutationObserver(callback) {\n
this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n
this.uid_ = ++uidCounter;\n }\n\n MutationObserver.prototype = {\n constr
uctor: MutationObserver,\n\n // http://dom.spec.whatwg.org/#dom-mutationobser
ver-observe\n observe: function(target, options) {\n target = wrapIfNeed
ed(target);\n\n var newOptions = new MutationObserverOptions(options);\n\n
// 6.\n var registration;\n var registrations = registrationsTabl
e.get(target);\n if (!registrations)\n registrationsTable.set(target
, registrations = []);\n\n for (var i = 0; i < registrations.length; i++) {
\n if (registrations[i].observer === this) {\n registration = re
gistrations[i];\n // 6.1.\n registration.removeTransientObserv
ers();\n // 6.2.\n registration.options = newOptions;\n
}\n }\n\n // 7.\n if (!registration) {\n registration = n
ew Registration(this, target, newOptions);\n registrations.push(registrat
ion);\n this.nodes_.push(target);\n }\n },\n\n // http://dom.s
pec.whatwg.org/#dom-mutationobserver-disconnect\n disconnect: function() {\n
this.nodes_.forEach(function(node) {\n var registrations = registrat
ionsTable.get(node);\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.obser
ver === this) {\n registrations.splice(i, 1);\n // Each no
de can only have one registered observer associated with\n // this ob
server.\n break;\n }\n }\n }, this);\n this
.records_ = [];\n },\n\n takeRecords: function() {\n var copyOfRecord
s = this.records_;\n this.records_ = [];\n return copyOfRecords;\n
}\n };\n\n /**\n * Class used to represent a registered observer.\n * @par
am {MutationObserver} observer\n * @param {Node} target\n * @param {Mutation
ObserverOptions} options\n * @constructor\n */\n function Registration(obse
rver, target, options) {\n this.observer = observer;\n this.target = targe
t;\n this.options = options;\n this.transientObservedNodes = [];\n }\n\n
Registration.prototype = {\n /**\n * Adds a transient observer on node.
The transient observer gets removed\n * next time we deliver the change reco
rds.\n * @param {Node} node\n */\n addTransientObserver: function(nod
e) {\n // Don't add transient observers on the target itself. We already ha
ve all\n // the required listeners set up on the target.\n if (node ==
= this.target)\n return;\n\n this.transientObservedNodes.push(node);
\n var registrations = registrationsTable.get(node);\n if (!registrati
ons)\n registrationsTable.set(node, registrations = []);\n\n // We k
now that registrations does not contain this because we already\n // checke
d if node === this.target.\n registrations.push(this);\n },\n\n remov
eTransientObservers: function() {\n var transientObservedNodes = this.trans
ientObservedNodes;\n this.transientObservedNodes = [];\n\n for (var i
= 0; i < transientObservedNodes.length; i++) {\n var node = transientObse
rvedNodes[i];\n var registrations = registrationsTable.get(node);\n
for (var j = 0; j < registrations.length; j++) {\n if (registrations[
j] === this) {\n registrations.splice(j, 1);\n // Each nod
e can only have one registered observer associated with\n // this obs
erver.\n break;\n }\n }\n }\n }\n };\n\n sc
ope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers = reg
isterTransientObservers;\n scope.wrappers.MutationObserver = MutationObserver;\
n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPolyfil
l);\n", |
91 "/**\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tr
ee scope represents the root of a tree. All nodes in a tree point to\n * the s
ame TreeScope object. The tree scope of a node get set the first time\n * it i
s accessed or when a node is added or remove to a tree.\n *\n * The root is
a Node that has no parent.\n *\n * The parent is another TreeScope. For Shad
owRoots, it is the TreeScope of\n * the host of the ShadowRoot.\n *\n * @p
aram {!Node} root\n * @param {TreeScope} parent\n * @constructor\n */\n f
unction TreeScope(root, parent) {\n /** @type {!Node} */\n this.root = roo
t;\n\n /** @type {TreeScope} */\n this.parent = parent;\n }\n\n TreeScop
e.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrap
pers.ShadowRoot) {\n return scope.getRendererForHost(this.root.host);\n
}\n return null;\n },\n\n contains: function(treeScope) {\n
for (; treeScope; treeScope = treeScope.parent) {\n if (treeScope === thi
s)\n return true;\n }\n return false;\n }\n };\n\n funct
ion setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n
node.treeScope_ = treeScope;\n for (var sr = node.shadowRoot; sr; sr =
sr.olderShadowRoot) {\n sr.treeScope_.parent = treeScope;\n }\n
for (var child = node.firstChild; child; child = child.nextSibling) {\n
setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope
(node) {\n if (node instanceof scope.wrappers.Window) {\n debugger;\n
}\n\n if (node.treeScope_)\n return node.treeScope_;\n var parent =
node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTree
Scope(parent);\n else\n treeScope = new TreeScope(node, null);\n retu
rn node.treeScope_ = treeScope;\n }\n\n scope.TreeScope = TreeScope;\n scope.
getTreeScope = getTreeScope;\n scope.setTreeScope = setTreeScope;\n\n})(window.
ShadowDOMPolyfill);\n", | 91 "/**\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tr
ee scope represents the root of a tree. All nodes in a tree point to\n * the s
ame TreeScope object. The tree scope of a node get set the first time\n * it i
s accessed or when a node is added or remove to a tree.\n *\n * The root is
a Node that has no parent.\n *\n * The parent is another TreeScope. For Shad
owRoots, it is the TreeScope of\n * the host of the ShadowRoot.\n *\n * @p
aram {!Node} root\n * @param {TreeScope} parent\n * @constructor\n */\n f
unction TreeScope(root, parent) {\n /** @type {!Node} */\n this.root = roo
t;\n\n /** @type {TreeScope} */\n this.parent = parent;\n }\n\n TreeScop
e.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrap
pers.ShadowRoot) {\n return scope.getRendererForHost(this.root.host);\n
}\n return null;\n },\n\n contains: function(treeScope) {\n
for (; treeScope; treeScope = treeScope.parent) {\n if (treeScope === thi
s)\n return true;\n }\n return false;\n }\n };\n\n funct
ion setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n
node.treeScope_ = treeScope;\n for (var sr = node.shadowRoot; sr; sr =
sr.olderShadowRoot) {\n sr.treeScope_.parent = treeScope;\n }\n
for (var child = node.firstChild; child; child = child.nextSibling) {\n
setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope
(node) {\n if (node instanceof scope.wrappers.Window) {\n debugger;\n
}\n\n if (node.treeScope_)\n return node.treeScope_;\n var parent =
node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTree
Scope(parent);\n else\n treeScope = new TreeScope(node, null);\n retu
rn node.treeScope_ = treeScope;\n }\n\n scope.TreeScope = TreeScope;\n scope.
getTreeScope = getTreeScope;\n scope.setTreeScope = setTreeScope;\n\n})(window.
ShadowDOMPolyfill);\n", |
92 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrap
per = scope.forwardMethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n va
r setWrapper = scope.setWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n va
r unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scope.wrapp
ers;\n\n var wrappedFuns = new WeakMap();\n var listenersTable = new WeakMap()
;\n var handledEventsTable = new WeakMap();\n var currentlyDispatchingEvents =
new WeakMap();\n var targetTable = new WeakMap();\n var currentTargetTable =
new WeakMap();\n var relatedTargetTable = new WeakMap();\n var eventPhaseTable
= new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmedi
atePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\
n var eventPathTable = new WeakMap();\n\n function isShadowRoot(node) {\n r
eturn node instanceof wrappers.ShadowRoot;\n }\n\n function rootOfNode(node) {
\n return getTreeScope(node).root;\n }\n\n // http://w3c.github.io/webcompo
nents/spec/shadow/#event-paths\n function getEventPath(node, event) {\n var
path = [];\n var current = node;\n path.push(current);\n while (current
) {\n // 4.1.\n var destinationInsertionPoints = getDestinationInserti
onPoints(current);\n if (destinationInsertionPoints && destinationInsertion
Points.length > 0) {\n // 4.1.1\n for (var i = 0; i < destinationI
nsertionPoints.length; i++) {\n var insertionPoint = destinationInserti
onPoints[i];\n // 4.1.1.1\n if (isShadowInsertionPoint(inserti
onPoint)) {\n var shadowRoot = rootOfNode(insertionPoint);\n
// 4.1.1.1.2\n var olderShadowRoot = shadowRoot.olderShadowRoot;\n
if (olderShadowRoot)\n path.push(olderShadowRoot);\n
}\n\n // 4.1.1.2\n path.push(insertionPoint);\n
}\n\n // 4.1.2\n current = destinationInsertionPoints[\n
destinationInsertionPoints.length - 1];\n\n // 4.2\n } else {\n
if (isShadowRoot(current)) {\n if (inSameTree(node, current) && even
tMustBeStopped(event)) {\n // Stop this algorithm\n break;
\n }\n current = current.host;\n path.push(current);\
n\n // 4.2.2\n } else {\n current = current.parentNode;\n
if (current)\n path.push(current);\n }\n }\n
}\n\n return path;\n }\n\n // http://w3c.github.io/webcomponents/spec/shad
ow/#dfn-events-always-stopped\n function eventMustBeStopped(event) {\n if (!
event)\n return false;\n\n switch (event.type) {\n case 'abort':\n
case 'error':\n case 'select':\n case 'change':\n case 'load
':\n case 'reset':\n case 'resize':\n case 'scroll':\n case
'selectstart':\n return true;\n }\n return false;\n }\n\n // http
://w3c.github.io/webcomponents/spec/shadow/#dfn-shadow-insertion-point\n functi
on isShadowInsertionPoint(node) {\n return node instanceof HTMLShadowElement;
\n // and make sure that there are no shadow precing this?\n // and that t
here is no content ancestor?\n }\n\n function getDestinationInsertionPoints(no
de) {\n return scope.getDestinationInsertionPoints(node);\n }\n\n // http:/
/w3c.github.io/webcomponents/spec/shadow/#event-retargeting\n function eventRet
argetting(path, currentTarget) {\n if (path.length === 0)\n return curre
ntTarget;\n\n // The currentTarget might be the window object. Use its docume
nt for the\n // purpose of finding the retargetted node.\n if (currentTarg
et instanceof wrappers.Window)\n currentTarget = currentTarget.document;\n\
n var currentTargetTree = getTreeScope(currentTarget);\n var originalTarge
t = path[0];\n var originalTargetTree = getTreeScope(originalTarget);\n va
r relativeTargetTree =\n lowestCommonInclusiveAncestor(currentTargetTree,
originalTargetTree);\n\n for (var i = 0; i < path.length; i++) {\n var
node = path[i];\n if (getTreeScope(node) === relativeTargetTree)\n r
eturn node;\n }\n\n return path[path.length - 1];\n }\n\n function getTr
eeScopeAncestors(treeScope) {\n var ancestors = [];\n for (;treeScope; tre
eScope = treeScope.parent) {\n ancestors.push(treeScope);\n }\n retur
n ancestors;\n }\n\n function lowestCommonInclusiveAncestor(tsA, tsB) {\n v
ar ancestorsA = getTreeScopeAncestors(tsA);\n var ancestorsB = getTreeScopeAn
cestors(tsB);\n\n var result = null;\n while (ancestorsA.length > 0 && anc
estorsB.length > 0) {\n var a = ancestorsA.pop();\n var b = ancestorsB
.pop();\n if (a === b)\n result = a;\n else\n break;\n
}\n return result;\n }\n\n function getTreeScopeRoot(ts) {\n if (!ts.p
arent)\n return ts;\n return getTreeScopeRoot(ts.parent);\n }\n\n func
tion relatedTargetResolution(event, currentTarget, relatedTarget) {\n // In c
ase the current target is a window use its document for the purpose\n // of r
etargetting the related target.\n if (currentTarget instanceof wrappers.Windo
w)\n currentTarget = currentTarget.document;\n\n var currentTargetTree =
getTreeScope(currentTarget);\n var relatedTargetTree = getTreeScope(relatedT
arget);\n\n var relatedTargetEventPath = getEventPath(relatedTarget, event);\
n\n var lowestCommonAncestorTree;\n\n // 4\n var lowestCommonAncestorTr
ee =\n lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree
);\n\n // 5\n if (!lowestCommonAncestorTree)\n lowestCommonAncestorTr
ee = relatedTargetTree.root;\n\n // 6\n for (var commonAncestorTree = lowe
stCommonAncestorTree;\n commonAncestorTree;\n commonAncestorTree
= commonAncestorTree.parent) {\n // 6.1\n var adjustedRelatedTarget;\
n for (var i = 0; i < relatedTargetEventPath.length; i++) {\n var no
de = relatedTargetEventPath[i];\n if (getTreeScope(node) === commonAncest
orTree)\n return node;\n }\n }\n\n return null;\n }\n\n fu
nction inSameTree(a, b) {\n return getTreeScope(a) === getTreeScope(b);\n }\
n\n var NONE = 0;\n var CAPTURING_PHASE = 1;\n var AT_TARGET = 2;\n var BUBB
LING_PHASE = 3;\n\n // pendingError is used to rethrow the first error we got d
uring an event\n // dispatch. The browser actually reports all errors but to do
that we would\n // need to rethrow the error asynchronously.\n var pendingErr
or;\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this
event is only dispatched once.\n if (handledEventsTable.get(originalEvent))\n
return;\n handledEventsTable.set(originalEvent, true);\n dispatchEve
nt(wrap(originalEvent), wrap(originalEvent.target));\n if (pendingError) {\n
var err = pendingError;\n pendingError = null;\n throw err;\n
}\n }\n\n\n function isLoadLikeEvent(event) {\n switch (event.type) {\n
// http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html
#events-and-the-window-object\n case 'load':\n // http://www.whatwg.or
g/specs/web-apps/current-work/multipage/browsers.html#unloading-documents\n
case 'beforeunload':\n case 'unload':\n return true;\n }\n re
turn false;\n }\n\n function dispatchEvent(event, originalWrapperTarget) {\n
if (currentlyDispatchingEvents.get(event))\n throw new Error('InvalidStat
eError');\n\n currentlyDispatchingEvents.set(event, true);\n\n // Render t
o ensure that the event path is correct.\n scope.renderAllPending();\n var
eventPath;\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipag
e/webappapis.html#events-and-the-window-object\n // All events dispatched on
Nodes with a default view, except load events,\n // should propagate to the W
indow.\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the
-end.html#the-end\n var overrideTarget;\n var win;\n\n // Should really
be not cancelable too but since Firefox has a bug there\n // we skip that ch
eck.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=999456\n if (isLoad
LikeEvent(event) && !event.bubbles) {\n var doc = originalWrapperTarget;\n
if (doc instanceof wrappers.Document && (win = doc.defaultView)) {\n
overrideTarget = doc;\n eventPath = [];\n }\n }\n\n if (!even
tPath) {\n if (originalWrapperTarget instanceof wrappers.Window) {\n
win = originalWrapperTarget;\n eventPath = [];\n } else {\n
eventPath = getEventPath(originalWrapperTarget, event);\n\n if (!isLoadLi
keEvent(event)) {\n var doc = eventPath[eventPath.length - 1];\n
if (doc instanceof wrappers.Document)\n win = doc.defaultView;\n
}\n }\n }\n\n eventPathTable.set(event, eventPath);\n\n if (
dispatchCapturing(event, eventPath, win, overrideTarget)) {\n if (dispatchA
tTarget(event, eventPath, win, overrideTarget)) {\n dispatchBubbling(even
t, eventPath, win, overrideTarget);\n }\n }\n\n eventPhaseTable.set(e
vent, NONE);\n currentTargetTable.delete(event, null);\n currentlyDispatch
ingEvents.delete(event);\n\n return event.defaultPrevented;\n }\n\n functio
n dispatchCapturing(event, eventPath, win, overrideTarget) {\n var phase = CA
PTURING_PHASE;\n\n if (win) {\n if (!invoke(win, event, phase, eventPath
, overrideTarget))\n return false;\n }\n\n for (var i = eventPath.l
ength - 1; i > 0; i--) {\n if (!invoke(eventPath[i], event, phase, eventPat
h, overrideTarget))\n return false;\n }\n\n return true;\n }\n\n
function dispatchAtTarget(event, eventPath, win, overrideTarget) {\n var phas
e = AT_TARGET;\n var currentTarget = eventPath[0] || win;\n return invoke(
currentTarget, event, phase, eventPath, overrideTarget);\n }\n\n function disp
atchBubbling(event, eventPath, win, overrideTarget) {\n var phase = BUBBLING_
PHASE;\n for (var i = 1; i < eventPath.length; i++) {\n if (!invoke(even
tPath[i], event, phase, eventPath, overrideTarget))\n return;\n }\n\n
if (win && eventPath.length > 0) {\n invoke(win, event, phase, eventPath
, overrideTarget);\n }\n }\n\n function invoke(currentTarget, event, phase,
eventPath, overrideTarget) {\n var listeners = listenersTable.get(currentTar
get);\n if (!listeners)\n return true;\n\n var target = overrideTarge
t || eventRetargetting(eventPath, currentTarget);\n\n if (target === currentT
arget) {\n if (phase === CAPTURING_PHASE)\n return true;\n\n if
(phase === BUBBLING_PHASE)\n phase = AT_TARGET;\n\n } else if (phase
=== BUBBLING_PHASE && !event.bubbles) {\n return true;\n }\n\n if ('
relatedTarget' in event) {\n var originalEvent = unwrap(event);\n var
unwrappedRelatedTarget = originalEvent.relatedTarget;\n\n // X-Tag sets rel
atedTarget on a CustomEvent. If they do that there is no\n // way to have r
elatedTarget return the adjusted target but worse is that\n // the original
Event might not have a relatedTarget so we hit an assert\n // when we try t
o wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we can get obj
ects that are not EventTargets at this point.\n // Safari does not have a
n EventTarget interface so revert to checking\n // for addEventListener a
s an approximation.\n if (unwrappedRelatedTarget instanceof Object &&\n
unwrappedRelatedTarget.addEventListener) {\n var relatedTarge
t = wrap(unwrappedRelatedTarget);\n\n var adjusted =\n rel
atedTargetResolution(event, currentTarget, relatedTarget);\n if (adjust
ed === target)\n return true;\n } else {\n adjusted =
null;\n }\n relatedTargetTable.set(event, adjusted);\n }\n
}\n\n eventPhaseTable.set(event, phase);\n var type = event.type;\n\n
var anyRemoved = false;\n targetTable.set(event, target);\n currentTarget
Table.set(event, currentTarget);\n\n // Keep track of the invoke depth so tha
t we only clean up the removed\n // listeners if we are in the outermost invo
ke.\n listeners.depth++;\n\n for (var i = 0, len = listeners.length; i < l
en; i++) {\n var listener = listeners[i];\n if (listener.removed) {\n
anyRemoved = true;\n continue;\n }\n\n if (listener.type
!== type ||\n !listener.capture && phase === CAPTURING_PHASE ||\n
listener.capture && phase === BUBBLING_PHASE) {\n continue;\n }
\n\n try {\n if (typeof listener.handler === 'function')\n
listener.handler.call(currentTarget, event);\n else\n listener.h
andler.handleEvent(event);\n\n if (stopImmediatePropagationTable.get(even
t))\n return false;\n\n } catch (ex) {\n if (!pendingError)
\n pendingError = ex;\n }\n }\n\n listeners.depth--;\n\n
if (anyRemoved && listeners.depth === 0) {\n var copy = listeners.slice();\
n listeners.length = 0;\n for (var i = 0; i < copy.length; i++) {\n
if (!copy[i].removed)\n listeners.push(copy[i]);\n }\n }\n
\n return !stopPropagationTable.get(event);\n }\n\n function Listener(type,
handler, capture) {\n this.type = type;\n this.handler = handler;\n th
is.capture = Boolean(capture);\n }\n Listener.prototype = {\n equals: funct
ion(that) {\n return this.handler === that.handler && this.type === that.ty
pe &&\n this.capture === that.capture;\n },\n get removed() {\n
return this.handler === null;\n },\n remove: function() {\n this.
handler = null;\n }\n };\n\n var OriginalEvent = window.Event;\n OriginalE
vent.prototype.polymerBlackList_ = {\n returnValue: true,\n // TODO(arv):
keyLocation is part of KeyboardEvent but Firefox does not\n // support constr
uctable KeyboardEvent so we keep it here for now.\n keyLocation: true\n };\n
\n /**\n * Creates a new Event wrapper or wraps an existin native Event objec
t.\n * @param {string|Event} type\n * @param {Object=} options\n * @constr
uctor\n */\n function Event(type, options) {\n if (type instanceof Origina
lEvent) {\n var impl = type;\n // In browsers that do not correctly su
pport BeforeUnloadEvent we get to\n // the generic Event wrapper but we sti
ll want to ensure we create a\n // BeforeUnloadEvent. Since BeforeUnloadEve
nt calls super, we need to\n // prevent reentrancty.\n if (!OriginalBe
foreUnloadEvent && impl.type === 'beforeunload' &&\n !(this instanceof
BeforeUnloadEvent)) {\n return new BeforeUnloadEvent(impl);\n }\n
setWrapper(impl, this);\n } else {\n return wrap(constructEvent(Origi
nalEvent, 'Event', type, options));\n }\n }\n Event.prototype = {\n get
target() {\n return targetTable.get(this);\n },\n get currentTarget()
{\n return currentTargetTable.get(this);\n },\n get eventPhase() {\n
return eventPhaseTable.get(this);\n },\n get path() {\n var eve
ntPath = eventPathTable.get(this);\n if (!eventPath)\n return [];\n
// TODO(arv): Event path should contain window.\n return eventPath.sli
ce();\n },\n stopPropagation: function() {\n stopPropagationTable.set
(this, true);\n },\n stopImmediatePropagation: function() {\n stopPro
pagationTable.set(this, true);\n stopImmediatePropagationTable.set(this, tr
ue);\n }\n };\n registerWrapper(OriginalEvent, Event, document.createEvent(
'Event'));\n\n function unwrapOptions(options) {\n if (!options || !options.
relatedTarget)\n return options;\n return Object.create(options, {\n
relatedTarget: {value: unwrap(options.relatedTarget)}\n });\n }\n\n funct
ion registerGenericEvent(name, SuperEvent, prototype) {\n var OriginalEvent =
window[name];\n var GenericEvent = function(type, options) {\n if (type
instanceof OriginalEvent)\n setWrapper(type, this);\n else\n
return wrap(constructEvent(OriginalEvent, name, type, options));\n };\n G
enericEvent.prototype = Object.create(SuperEvent.prototype);\n if (prototype)
\n mixin(GenericEvent.prototype, prototype);\n if (OriginalEvent) {\n
// - Old versions of Safari fails on new FocusEvent (and others?).\n //
- IE does not support event constructors.\n // - createEvent('FocusEvent')
throws in Firefox.\n // => Try the best practice solution first and fallbac
k to the old way\n // if needed.\n try {\n registerWrapper(Orig
inalEvent, GenericEvent, new OriginalEvent('temp'));\n } catch (ex) {\n
registerWrapper(OriginalEvent, GenericEvent,\n docume
nt.createEvent(name));\n }\n }\n return GenericEvent;\n }\n\n var U
IEvent = registerGenericEvent('UIEvent', Event);\n var CustomEvent = registerGe
nericEvent('CustomEvent', Event);\n\n var relatedTargetProto = {\n get relat
edTarget() {\n var relatedTarget = relatedTargetTable.get(this);\n //
relatedTarget can be null.\n if (relatedTarget !== undefined)\n retu
rn relatedTarget;\n return wrap(unwrap(this).relatedTarget);\n }\n };\n
\n function getInitFunction(name, relatedTargetIndex) {\n return function()
{\n arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]);\
n var impl = unwrap(this);\n impl[name].apply(impl, arguments);\n }
;\n }\n\n var mouseEventProto = mixin({\n initMouseEvent: getInitFunction('
initMouseEvent', 14)\n }, relatedTargetProto);\n\n var focusEventProto = mixin
({\n initFocusEvent: getInitFunction('initFocusEvent', 5)\n }, relatedTarget
Proto);\n\n var MouseEvent = registerGenericEvent('MouseEvent', UIEvent, mouseE
ventProto);\n var FocusEvent = registerGenericEvent('FocusEvent', UIEvent, focu
sEventProto);\n\n // In case the browser does not support event constructors we
polyfill that\n // by calling `createEvent('Foo')` and `initFooEvent` where th
e arguments to\n // `initFooEvent` are derived from the registered default even
t init dict.\n var defaultInitDicts = Object.create(null);\n\n var supportsEve
ntConstructors = (function() {\n try {\n new window.FocusEvent('focus');
\n } catch (ex) {\n return false;\n }\n return true;\n })();\n\n
/**\n * Constructs a new native event.\n */\n function constructEvent(Orig
inalEvent, name, type, options) {\n if (supportsEventConstructors)\n ret
urn new OriginalEvent(type, unwrapOptions(options));\n\n // Create the argume
nts from the default dictionary.\n var event = unwrap(document.createEvent(na
me));\n var defaultDict = defaultInitDicts[name];\n var args = [type];\n
Object.keys(defaultDict).forEach(function(key) {\n var v = options != nul
l && key in options ?\n options[key] : defaultDict[key];\n if (key
=== 'relatedTarget')\n v = unwrap(v);\n args.push(v);\n });\n
event['init' + name].apply(event, args);\n return event;\n }\n\n if (!supp
ortsEventConstructors) {\n var configureEventConstructor = function(name, ini
tDict, superName) {\n if (superName) {\n var superDict = defaultInit
Dicts[superName];\n initDict = mixin(mixin({}, superDict), initDict);\n
}\n\n defaultInitDicts[name] = initDict;\n };\n\n // The order of
the default event init dictionary keys is important, the\n // arguments to i
nitFooEvent is derived from that.\n configureEventConstructor('Event', {bubbl
es: false, cancelable: false});\n configureEventConstructor('CustomEvent', {d
etail: null}, 'Event');\n configureEventConstructor('UIEvent', {view: null, d
etail: 0}, 'Event');\n configureEventConstructor('MouseEvent', {\n scree
nX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey:
false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n
button: 0,\n relatedTarget: null\n }, 'UIEvent');\n configureEvent
Constructor('FocusEvent', {relatedTarget: null}, 'UIEvent');\n }\n\n // Safari
7 does not yet have BeforeUnloadEvent.\n // https://bugs.webkit.org/show_bug.c
gi?id=120849\n var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent;\n\n f
unction BeforeUnloadEvent(impl) {\n Event.call(this, impl);\n }\n BeforeUnl
oadEvent.prototype = Object.create(Event.prototype);\n mixin(BeforeUnloadEvent.
prototype, {\n get returnValue() {\n return unsafeUnwrap(this).returnVal
ue;\n },\n set returnValue(v) {\n unsafeUnwrap(this).returnValue = v;
\n }\n });\n\n if (OriginalBeforeUnloadEvent)\n registerWrapper(Original
BeforeUnloadEvent, BeforeUnloadEvent);\n\n function isValidListener(fun) {\n
if (typeof fun === 'function')\n return true;\n return fun && fun.handl
eEvent;\n }\n\n function isMutationEvent(type) {\n switch (type) {\n c
ase 'DOMAttrModified':\n case 'DOMAttributeNameChanged':\n case 'DOMCh
aracterDataModified':\n case 'DOMElementNameChanged':\n case 'DOMNodeI
nserted':\n case 'DOMNodeInsertedIntoDocument':\n case 'DOMNodeRemoved
':\n case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n
return true;\n }\n return false;\n }\n\n var OriginalEventTarget
= window.EventTarget;\n\n /**\n * This represents a wrapper for an EventTarg
et.\n * @param {!EventTarget} impl The original event target.\n * @construct
or\n */\n function EventTarget(impl) {\n setWrapper(impl, this);\n }\n\n
// Node and Window have different internal type checks in WebKit so we cannot\n
// use the same method as the original function.\n var methodNames = [\n '
addEventListener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [
Node, Window].forEach(function(constructor) {\n var p = constructor.prototype
;\n methodNames.forEach(function(name) {\n Object.defineProperty(p, name
+ '_', {value: p[name]});\n });\n });\n\n function getTargetToListenAt(wra
pper) {\n if (wrapper instanceof wrappers.ShadowRoot)\n wrapper = wrappe
r.host;\n return unwrap(wrapper);\n }\n\n EventTarget.prototype = {\n ad
dEventListener: function(type, fun, capture) {\n if (!isValidListener(fun)
|| isMutationEvent(type))\n return;\n\n var listener = new Listener(
type, fun, capture);\n var listeners = listenersTable.get(this);\n if
(!listeners) {\n listeners = [];\n listeners.depth = 0;\n l
istenersTable.set(this, listeners);\n } else {\n // Might have a dup
licate.\n for (var i = 0; i < listeners.length; i++) {\n if (lis
tener.equals(listeners[i]))\n return;\n }\n }\n\n li
steners.push(listener);\n\n var target = getTargetToListenAt(this);\n
target.addEventListener_(type, dispatchOriginalEvent, true);\n },\n remove
EventListener: function(type, fun, capture) {\n capture = Boolean(capture);
\n var listeners = listenersTable.get(this);\n if (!listeners)\n
return;\n var count = 0, found = false;\n for (var i = 0; i < listen
ers.length; i++) {\n if (listeners[i].type === type && listeners[i].captu
re === capture) {\n count++;\n if (listeners[i].handler === fu
n) {\n found = true;\n listeners[i].remove();\n }
\n }\n }\n\n if (found && count === 1) {\n var target =
getTargetToListenAt(this);\n target.removeEventListener_(type, dispatchOr
iginalEvent, true);\n }\n },\n dispatchEvent: function(event) {\n
// We want to use the native dispatchEvent because it triggers the default\n
// actions (like checking a checkbox). However, if there are no listeners\n
// in the composed tree then there are no events that will trigger and\n
// listeners in the non composed tree that are part of the event path are\n
// not notified.\n //\n // If we find out that there are no listen
ers in the composed tree we add\n // a temporary listener to the target whi
ch makes us get called back even\n // in that case.\n\n var nativeEven
t = unwrap(event);\n var eventType = nativeEvent.type;\n\n // Allow di
spatching the same event again. This is safe because if user\n // code call
s this during an existing dispatch of the same event the\n // native dispat
chEvent throws (that is required by the spec).\n handledEventsTable.set(nat
iveEvent, false);\n\n // Force rendering since we prefer native dispatch an
d that works on the\n // composed tree.\n scope.renderAllPending();\n\
n var tempListener;\n if (!hasListenerInAncestors(this, eventType)) {\
n tempListener = function() {};\n this.addEventListener(eventType,
tempListener, true);\n }\n\n try {\n return unwrap(this).dispa
tchEvent_(nativeEvent);\n } finally {\n if (tempListener)\n
this.removeEventListener(eventType, tempListener, true);\n }\n }\n };\
n\n function hasListener(node, type) {\n var listeners = listenersTable.get(
node);\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {
\n if (!listeners[i].removed && listeners[i].type === type)\n re
turn true;\n }\n }\n return false;\n }\n\n function hasListenerInAn
cestors(target, type) {\n for (var node = unwrap(target); node; node = node.p
arentNode) {\n if (hasListener(wrap(node), type))\n return true;\n
}\n return false;\n }\n\n if (OriginalEventTarget)\n registerWrapper(O
riginalEventTarget, EventTarget);\n\n function wrapEventTargetMethods(construct
ors) {\n forwardMethodsToWrapper(constructors, methodNames);\n }\n\n var or
iginalElementFromPoint = document.elementFromPoint;\n\n function elementFromPoi
nt(self, document, x, y) {\n scope.renderAllPending();\n\n var element =\n
wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y));\n
if (!element)\n return null;\n var path = getEventPath(element, null);\n
\n // scope the path to this TreeScope\n var idx = path.lastIndexOf(self);
\n if (idx == -1)\n return null;\n else\n path = path.slice(0, i
dx);\n\n // TODO(dfreedm): pass idx to eventRetargetting to avoid array copy\
n return eventRetargetting(path, self);\n }\n\n /**\n * Returns a functio
n that is to be used as a getter for `onfoo` properties.\n * @param {string} n
ame\n * @return {Function}\n */\n function getEventHandlerGetter(name) {\n
return function() {\n var inlineEventHandlers = eventHandlersTable.get(t
his);\n return inlineEventHandlers && inlineEventHandlers[name] &&\n
inlineEventHandlers[name].value || null;\n };\n }\n\n /**\n * Returns
a function that is to be used as a setter for `onfoo` properties.\n * @param
{string} name\n * @return {Function}\n */\n function getEventHandlerSetter(
name) {\n var eventType = name.slice(2);\n return function(value) {\n
var inlineEventHandlers = eventHandlersTable.get(this);\n if (!inlineEvent
Handlers) {\n inlineEventHandlers = Object.create(null);\n eventHa
ndlersTable.set(this, inlineEventHandlers);\n }\n\n var old = inlineEv
entHandlers[name];\n if (old)\n this.removeEventListener(eventType,
old.wrapped, false);\n\n if (typeof value === 'function') {\n var wr
apped = function(e) {\n var rv = value.call(this, e);\n if (rv
=== false)\n e.preventDefault();\n else if (name === 'onbef
oreunload' && typeof rv === 'string')\n e.returnValue = rv;\n
// mouseover uses true for preventDefault but preventDefault for\n //
mouseover is ignored by browsers these day.\n };\n\n this.addEven
tListener(eventType, wrapped, false);\n inlineEventHandlers[name] = {\n
value: value,\n wrapped: wrapped\n };\n }\n };\n
}\n\n scope.elementFromPoint = elementFromPoint;\n scope.getEventHandlerGett
er = getEventHandlerGetter;\n scope.getEventHandlerSetter = getEventHandlerSett
er;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wrappers.
BeforeUnloadEvent = BeforeUnloadEvent;\n scope.wrappers.CustomEvent = CustomEve
nt;\n scope.wrappers.Event = Event;\n scope.wrappers.EventTarget = EventTarget
;\n scope.wrappers.FocusEvent = FocusEvent;\n scope.wrappers.MouseEvent = Mous
eEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n"
, | 92 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrap
per = scope.forwardMethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n va
r setWrapper = scope.setWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n va
r unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scope.wrapp
ers;\n\n var wrappedFuns = new WeakMap();\n var listenersTable = new WeakMap()
;\n var handledEventsTable = new WeakMap();\n var currentlyDispatchingEvents =
new WeakMap();\n var targetTable = new WeakMap();\n var currentTargetTable =
new WeakMap();\n var relatedTargetTable = new WeakMap();\n var eventPhaseTable
= new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmedi
atePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\
n var eventPathTable = new WeakMap();\n\n function isShadowRoot(node) {\n r
eturn node instanceof wrappers.ShadowRoot;\n }\n\n function rootOfNode(node) {
\n return getTreeScope(node).root;\n }\n\n // http://w3c.github.io/webcompo
nents/spec/shadow/#event-paths\n function getEventPath(node, event) {\n var
path = [];\n var current = node;\n path.push(current);\n while (current
) {\n // 4.1.\n var destinationInsertionPoints = getDestinationInserti
onPoints(current);\n if (destinationInsertionPoints && destinationInsertion
Points.length > 0) {\n // 4.1.1\n for (var i = 0; i < destinationI
nsertionPoints.length; i++) {\n var insertionPoint = destinationInserti
onPoints[i];\n // 4.1.1.1\n if (isShadowInsertionPoint(inserti
onPoint)) {\n var shadowRoot = rootOfNode(insertionPoint);\n
// 4.1.1.1.2\n var olderShadowRoot = shadowRoot.olderShadowRoot;\n
if (olderShadowRoot)\n path.push(olderShadowRoot);\n
}\n\n // 4.1.1.2\n path.push(insertionPoint);\n
}\n\n // 4.1.2\n current = destinationInsertionPoints[\n
destinationInsertionPoints.length - 1];\n\n // 4.2\n } else {\n
if (isShadowRoot(current)) {\n if (inSameTree(node, current) && even
tMustBeStopped(event)) {\n // Stop this algorithm\n break;
\n }\n current = current.host;\n path.push(current);\
n\n // 4.2.2\n } else {\n current = current.parentNode;\n
if (current)\n path.push(current);\n }\n }\n
}\n\n return path;\n }\n\n // http://w3c.github.io/webcomponents/spec/shad
ow/#dfn-events-always-stopped\n function eventMustBeStopped(event) {\n if (!
event)\n return false;\n\n switch (event.type) {\n case 'abort':\n
case 'error':\n case 'select':\n case 'change':\n case 'load
':\n case 'reset':\n case 'resize':\n case 'scroll':\n case
'selectstart':\n return true;\n }\n return false;\n }\n\n // http
://w3c.github.io/webcomponents/spec/shadow/#dfn-shadow-insertion-point\n functi
on isShadowInsertionPoint(node) {\n return node instanceof HTMLShadowElement;
\n // and make sure that there are no shadow precing this?\n // and that t
here is no content ancestor?\n }\n\n function getDestinationInsertionPoints(no
de) {\n return scope.getDestinationInsertionPoints(node);\n }\n\n // http:/
/w3c.github.io/webcomponents/spec/shadow/#event-retargeting\n function eventRet
argetting(path, currentTarget) {\n if (path.length === 0)\n return curre
ntTarget;\n\n // The currentTarget might be the window object. Use its docume
nt for the\n // purpose of finding the retargetted node.\n if (currentTarg
et instanceof wrappers.Window)\n currentTarget = currentTarget.document;\n\
n var currentTargetTree = getTreeScope(currentTarget);\n var originalTarge
t = path[0];\n var originalTargetTree = getTreeScope(originalTarget);\n va
r relativeTargetTree =\n lowestCommonInclusiveAncestor(currentTargetTree,
originalTargetTree);\n\n for (var i = 0; i < path.length; i++) {\n var
node = path[i];\n if (getTreeScope(node) === relativeTargetTree)\n r
eturn node;\n }\n\n return path[path.length - 1];\n }\n\n function getTr
eeScopeAncestors(treeScope) {\n var ancestors = [];\n for (;treeScope; tre
eScope = treeScope.parent) {\n ancestors.push(treeScope);\n }\n retur
n ancestors;\n }\n\n function lowestCommonInclusiveAncestor(tsA, tsB) {\n v
ar ancestorsA = getTreeScopeAncestors(tsA);\n var ancestorsB = getTreeScopeAn
cestors(tsB);\n\n var result = null;\n while (ancestorsA.length > 0 && anc
estorsB.length > 0) {\n var a = ancestorsA.pop();\n var b = ancestorsB
.pop();\n if (a === b)\n result = a;\n else\n break;\n
}\n return result;\n }\n\n function getTreeScopeRoot(ts) {\n if (!ts.p
arent)\n return ts;\n return getTreeScopeRoot(ts.parent);\n }\n\n func
tion relatedTargetResolution(event, currentTarget, relatedTarget) {\n // In c
ase the current target is a window use its document for the purpose\n // of r
etargetting the related target.\n if (currentTarget instanceof wrappers.Windo
w)\n currentTarget = currentTarget.document;\n\n var currentTargetTree =
getTreeScope(currentTarget);\n var relatedTargetTree = getTreeScope(relatedT
arget);\n\n var relatedTargetEventPath = getEventPath(relatedTarget, event);\
n\n var lowestCommonAncestorTree;\n\n // 4\n var lowestCommonAncestorTr
ee =\n lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree
);\n\n // 5\n if (!lowestCommonAncestorTree)\n lowestCommonAncestorTr
ee = relatedTargetTree.root;\n\n // 6\n for (var commonAncestorTree = lowe
stCommonAncestorTree;\n commonAncestorTree;\n commonAncestorTree
= commonAncestorTree.parent) {\n // 6.1\n var adjustedRelatedTarget;\
n for (var i = 0; i < relatedTargetEventPath.length; i++) {\n var no
de = relatedTargetEventPath[i];\n if (getTreeScope(node) === commonAncest
orTree)\n return node;\n }\n }\n\n return null;\n }\n\n fu
nction inSameTree(a, b) {\n return getTreeScope(a) === getTreeScope(b);\n }\
n\n var NONE = 0;\n var CAPTURING_PHASE = 1;\n var AT_TARGET = 2;\n var BUBB
LING_PHASE = 3;\n\n // pendingError is used to rethrow the first error we got d
uring an event\n // dispatch. The browser actually reports all errors but to do
that we would\n // need to rethrow the error asynchronously.\n var pendingErr
or;\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this
event is only dispatched once.\n if (handledEventsTable.get(originalEvent))\n
return;\n handledEventsTable.set(originalEvent, true);\n dispatchEve
nt(wrap(originalEvent), wrap(originalEvent.target));\n if (pendingError) {\n
var err = pendingError;\n pendingError = null;\n throw err;\n
}\n }\n\n\n function isLoadLikeEvent(event) {\n switch (event.type) {\n
// http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html
#events-and-the-window-object\n case 'load':\n // http://www.whatwg.or
g/specs/web-apps/current-work/multipage/browsers.html#unloading-documents\n
case 'beforeunload':\n case 'unload':\n return true;\n }\n re
turn false;\n }\n\n function dispatchEvent(event, originalWrapperTarget) {\n
if (currentlyDispatchingEvents.get(event))\n throw new Error('InvalidStat
eError');\n\n currentlyDispatchingEvents.set(event, true);\n\n // Render t
o ensure that the event path is correct.\n scope.renderAllPending();\n var
eventPath;\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipag
e/webappapis.html#events-and-the-window-object\n // All events dispatched on
Nodes with a default view, except load events,\n // should propagate to the W
indow.\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the
-end.html#the-end\n var overrideTarget;\n var win;\n\n // Should really
be not cancelable too but since Firefox has a bug there\n // we skip that ch
eck.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=999456\n if (isLoad
LikeEvent(event) && !event.bubbles) {\n var doc = originalWrapperTarget;\n
if (doc instanceof wrappers.Document && (win = doc.defaultView)) {\n
overrideTarget = doc;\n eventPath = [];\n }\n }\n\n if (!even
tPath) {\n if (originalWrapperTarget instanceof wrappers.Window) {\n
win = originalWrapperTarget;\n eventPath = [];\n } else {\n
eventPath = getEventPath(originalWrapperTarget, event);\n\n if (!isLoadLi
keEvent(event)) {\n var doc = eventPath[eventPath.length - 1];\n
if (doc instanceof wrappers.Document)\n win = doc.defaultView;\n
}\n }\n }\n\n eventPathTable.set(event, eventPath);\n\n if (
dispatchCapturing(event, eventPath, win, overrideTarget)) {\n if (dispatchA
tTarget(event, eventPath, win, overrideTarget)) {\n dispatchBubbling(even
t, eventPath, win, overrideTarget);\n }\n }\n\n eventPhaseTable.set(e
vent, NONE);\n currentTargetTable.delete(event, null);\n currentlyDispatch
ingEvents.delete(event);\n\n return event.defaultPrevented;\n }\n\n functio
n dispatchCapturing(event, eventPath, win, overrideTarget) {\n var phase = CA
PTURING_PHASE;\n\n if (win) {\n if (!invoke(win, event, phase, eventPath
, overrideTarget))\n return false;\n }\n\n for (var i = eventPath.l
ength - 1; i > 0; i--) {\n if (!invoke(eventPath[i], event, phase, eventPat
h, overrideTarget))\n return false;\n }\n\n return true;\n }\n\n
function dispatchAtTarget(event, eventPath, win, overrideTarget) {\n var phas
e = AT_TARGET;\n var currentTarget = eventPath[0] || win;\n return invoke(
currentTarget, event, phase, eventPath, overrideTarget);\n }\n\n function disp
atchBubbling(event, eventPath, win, overrideTarget) {\n var phase = BUBBLING_
PHASE;\n for (var i = 1; i < eventPath.length; i++) {\n if (!invoke(even
tPath[i], event, phase, eventPath, overrideTarget))\n return;\n }\n\n
if (win && eventPath.length > 0) {\n invoke(win, event, phase, eventPath
, overrideTarget);\n }\n }\n\n function invoke(currentTarget, event, phase,
eventPath, overrideTarget) {\n var listeners = listenersTable.get(currentTar
get);\n if (!listeners)\n return true;\n\n var target = overrideTarge
t || eventRetargetting(eventPath, currentTarget);\n\n if (target === currentT
arget) {\n if (phase === CAPTURING_PHASE)\n return true;\n\n if
(phase === BUBBLING_PHASE)\n phase = AT_TARGET;\n\n } else if (phase
=== BUBBLING_PHASE && !event.bubbles) {\n return true;\n }\n\n if ('
relatedTarget' in event) {\n var originalEvent = unwrap(event);\n var
unwrappedRelatedTarget = originalEvent.relatedTarget;\n\n // X-Tag sets rel
atedTarget on a CustomEvent. If they do that there is no\n // way to have r
elatedTarget return the adjusted target but worse is that\n // the original
Event might not have a relatedTarget so we hit an assert\n // when we try t
o wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we can get obj
ects that are not EventTargets at this point.\n // Safari does not have a
n EventTarget interface so revert to checking\n // for addEventListener a
s an approximation.\n if (unwrappedRelatedTarget instanceof Object &&\n
unwrappedRelatedTarget.addEventListener) {\n var relatedTarge
t = wrap(unwrappedRelatedTarget);\n\n var adjusted =\n rel
atedTargetResolution(event, currentTarget, relatedTarget);\n if (adjust
ed === target)\n return true;\n } else {\n adjusted =
null;\n }\n relatedTargetTable.set(event, adjusted);\n }\n
}\n\n eventPhaseTable.set(event, phase);\n var type = event.type;\n\n
var anyRemoved = false;\n targetTable.set(event, target);\n currentTarget
Table.set(event, currentTarget);\n\n // Keep track of the invoke depth so tha
t we only clean up the removed\n // listeners if we are in the outermost invo
ke.\n listeners.depth++;\n\n for (var i = 0, len = listeners.length; i < l
en; i++) {\n var listener = listeners[i];\n if (listener.removed) {\n
anyRemoved = true;\n continue;\n }\n\n if (listener.type
!== type ||\n !listener.capture && phase === CAPTURING_PHASE ||\n
listener.capture && phase === BUBBLING_PHASE) {\n continue;\n }
\n\n try {\n if (typeof listener.handler === 'function')\n
listener.handler.call(currentTarget, event);\n else\n listener.h
andler.handleEvent(event);\n\n if (stopImmediatePropagationTable.get(even
t))\n return false;\n\n } catch (ex) {\n if (!pendingError)
\n pendingError = ex;\n }\n }\n\n listeners.depth--;\n\n
if (anyRemoved && listeners.depth === 0) {\n var copy = listeners.slice();\
n listeners.length = 0;\n for (var i = 0; i < copy.length; i++) {\n
if (!copy[i].removed)\n listeners.push(copy[i]);\n }\n }\n
\n return !stopPropagationTable.get(event);\n }\n\n function Listener(type,
handler, capture) {\n this.type = type;\n this.handler = handler;\n th
is.capture = Boolean(capture);\n }\n Listener.prototype = {\n equals: funct
ion(that) {\n return this.handler === that.handler && this.type === that.ty
pe &&\n this.capture === that.capture;\n },\n get removed() {\n
return this.handler === null;\n },\n remove: function() {\n this.
handler = null;\n }\n };\n\n var OriginalEvent = window.Event;\n OriginalE
vent.prototype.polymerBlackList_ = {\n returnValue: true,\n // TODO(arv):
keyLocation is part of KeyboardEvent but Firefox does not\n // support constr
uctable KeyboardEvent so we keep it here for now.\n keyLocation: true\n };\n
\n /**\n * Creates a new Event wrapper or wraps an existin native Event objec
t.\n * @param {string|Event} type\n * @param {Object=} options\n * @constr
uctor\n */\n function Event(type, options) {\n if (type instanceof Origina
lEvent) {\n var impl = type;\n // In browsers that do not correctly su
pport BeforeUnloadEvent we get to\n // the generic Event wrapper but we sti
ll want to ensure we create a\n // BeforeUnloadEvent. Since BeforeUnloadEve
nt calls super, we need to\n // prevent reentrancty.\n if (!OriginalBe
foreUnloadEvent && impl.type === 'beforeunload' &&\n !(this instanceof
BeforeUnloadEvent)) {\n return new BeforeUnloadEvent(impl);\n }\n
setWrapper(impl, this);\n } else {\n return wrap(constructEvent(Origi
nalEvent, 'Event', type, options));\n }\n }\n Event.prototype = {\n get
target() {\n return targetTable.get(this);\n },\n get currentTarget()
{\n return currentTargetTable.get(this);\n },\n get eventPhase() {\n
return eventPhaseTable.get(this);\n },\n get path() {\n var eve
ntPath = eventPathTable.get(this);\n if (!eventPath)\n return [];\n
// TODO(arv): Event path should contain window.\n return eventPath.sli
ce();\n },\n stopPropagation: function() {\n stopPropagationTable.set
(this, true);\n },\n stopImmediatePropagation: function() {\n stopPro
pagationTable.set(this, true);\n stopImmediatePropagationTable.set(this, tr
ue);\n }\n };\n registerWrapper(OriginalEvent, Event, document.createEvent(
'Event'));\n\n function unwrapOptions(options) {\n if (!options || !options.
relatedTarget)\n return options;\n return Object.create(options, {\n
relatedTarget: {value: unwrap(options.relatedTarget)}\n });\n }\n\n funct
ion registerGenericEvent(name, SuperEvent, prototype) {\n var OriginalEvent =
window[name];\n var GenericEvent = function(type, options) {\n if (type
instanceof OriginalEvent)\n setWrapper(type, this);\n else\n
return wrap(constructEvent(OriginalEvent, name, type, options));\n };\n G
enericEvent.prototype = Object.create(SuperEvent.prototype);\n if (prototype)
\n mixin(GenericEvent.prototype, prototype);\n if (OriginalEvent) {\n
// - Old versions of Safari fails on new FocusEvent (and others?).\n //
- IE does not support event constructors.\n // - createEvent('FocusEvent')
throws in Firefox.\n // => Try the best practice solution first and fallbac
k to the old way\n // if needed.\n try {\n registerWrapper(Orig
inalEvent, GenericEvent, new OriginalEvent('temp'));\n } catch (ex) {\n
registerWrapper(OriginalEvent, GenericEvent,\n docume
nt.createEvent(name));\n }\n }\n return GenericEvent;\n }\n\n var U
IEvent = registerGenericEvent('UIEvent', Event);\n var CustomEvent = registerGe
nericEvent('CustomEvent', Event);\n\n var relatedTargetProto = {\n get relat
edTarget() {\n var relatedTarget = relatedTargetTable.get(this);\n //
relatedTarget can be null.\n if (relatedTarget !== undefined)\n retu
rn relatedTarget;\n return wrap(unwrap(this).relatedTarget);\n }\n };\n
\n function getInitFunction(name, relatedTargetIndex) {\n return function()
{\n arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]);\
n var impl = unwrap(this);\n impl[name].apply(impl, arguments);\n }
;\n }\n\n var mouseEventProto = mixin({\n initMouseEvent: getInitFunction('
initMouseEvent', 14)\n }, relatedTargetProto);\n\n var focusEventProto = mixin
({\n initFocusEvent: getInitFunction('initFocusEvent', 5)\n }, relatedTarget
Proto);\n\n var MouseEvent = registerGenericEvent('MouseEvent', UIEvent, mouseE
ventProto);\n var FocusEvent = registerGenericEvent('FocusEvent', UIEvent, focu
sEventProto);\n\n // In case the browser does not support event constructors we
polyfill that\n // by calling `createEvent('Foo')` and `initFooEvent` where th
e arguments to\n // `initFooEvent` are derived from the registered default even
t init dict.\n var defaultInitDicts = Object.create(null);\n\n var supportsEve
ntConstructors = (function() {\n try {\n new window.FocusEvent('focus');
\n } catch (ex) {\n return false;\n }\n return true;\n })();\n\n
/**\n * Constructs a new native event.\n */\n function constructEvent(Orig
inalEvent, name, type, options) {\n if (supportsEventConstructors)\n ret
urn new OriginalEvent(type, unwrapOptions(options));\n\n // Create the argume
nts from the default dictionary.\n var event = unwrap(document.createEvent(na
me));\n var defaultDict = defaultInitDicts[name];\n var args = [type];\n
Object.keys(defaultDict).forEach(function(key) {\n var v = options != nul
l && key in options ?\n options[key] : defaultDict[key];\n if (key
=== 'relatedTarget')\n v = unwrap(v);\n args.push(v);\n });\n
event['init' + name].apply(event, args);\n return event;\n }\n\n if (!supp
ortsEventConstructors) {\n var configureEventConstructor = function(name, ini
tDict, superName) {\n if (superName) {\n var superDict = defaultInit
Dicts[superName];\n initDict = mixin(mixin({}, superDict), initDict);\n
}\n\n defaultInitDicts[name] = initDict;\n };\n\n // The order of
the default event init dictionary keys is important, the\n // arguments to i
nitFooEvent is derived from that.\n configureEventConstructor('Event', {bubbl
es: false, cancelable: false});\n configureEventConstructor('CustomEvent', {d
etail: null}, 'Event');\n configureEventConstructor('UIEvent', {view: null, d
etail: 0}, 'Event');\n configureEventConstructor('MouseEvent', {\n scree
nX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey:
false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n
button: 0,\n relatedTarget: null\n }, 'UIEvent');\n configureEvent
Constructor('FocusEvent', {relatedTarget: null}, 'UIEvent');\n }\n\n // Safari
7 does not yet have BeforeUnloadEvent.\n // https://bugs.webkit.org/show_bug.c
gi?id=120849\n var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent;\n\n f
unction BeforeUnloadEvent(impl) {\n Event.call(this, impl);\n }\n BeforeUnl
oadEvent.prototype = Object.create(Event.prototype);\n mixin(BeforeUnloadEvent.
prototype, {\n get returnValue() {\n return unsafeUnwrap(this).returnVal
ue;\n },\n set returnValue(v) {\n unsafeUnwrap(this).returnValue = v;
\n }\n });\n\n if (OriginalBeforeUnloadEvent)\n registerWrapper(Original
BeforeUnloadEvent, BeforeUnloadEvent);\n\n function isValidListener(fun) {\n
if (typeof fun === 'function')\n return true;\n return fun && fun.handl
eEvent;\n }\n\n function isMutationEvent(type) {\n switch (type) {\n c
ase 'DOMAttrModified':\n case 'DOMAttributeNameChanged':\n case 'DOMCh
aracterDataModified':\n case 'DOMElementNameChanged':\n case 'DOMNodeI
nserted':\n case 'DOMNodeInsertedIntoDocument':\n case 'DOMNodeRemoved
':\n case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n
return true;\n }\n return false;\n }\n\n var OriginalEventTarget
= window.EventTarget;\n\n /**\n * This represents a wrapper for an EventTarg
et.\n * @param {!EventTarget} impl The original event target.\n * @construct
or\n */\n function EventTarget(impl) {\n setWrapper(impl, this);\n }\n\n
// Node and Window have different internal type checks in WebKit so we cannot\n
// use the same method as the original function.\n var methodNames = [\n '
addEventListener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [
Node, Window].forEach(function(constructor) {\n var p = constructor.prototype
;\n methodNames.forEach(function(name) {\n Object.defineProperty(p, name
+ '_', {value: p[name]});\n });\n });\n\n function getTargetToListenAt(wra
pper) {\n if (wrapper instanceof wrappers.ShadowRoot)\n wrapper = wrappe
r.host;\n return unwrap(wrapper);\n }\n\n EventTarget.prototype = {\n ad
dEventListener: function(type, fun, capture) {\n if (!isValidListener(fun)
|| isMutationEvent(type))\n return;\n\n var listener = new Listener(
type, fun, capture);\n var listeners = listenersTable.get(this);\n if
(!listeners) {\n listeners = [];\n listeners.depth = 0;\n l
istenersTable.set(this, listeners);\n } else {\n // Might have a dup
licate.\n for (var i = 0; i < listeners.length; i++) {\n if (lis
tener.equals(listeners[i]))\n return;\n }\n }\n\n li
steners.push(listener);\n\n var target = getTargetToListenAt(this);\n
target.addEventListener_(type, dispatchOriginalEvent, true);\n },\n remove
EventListener: function(type, fun, capture) {\n capture = Boolean(capture);
\n var listeners = listenersTable.get(this);\n if (!listeners)\n
return;\n var count = 0, found = false;\n for (var i = 0; i < listen
ers.length; i++) {\n if (listeners[i].type === type && listeners[i].captu
re === capture) {\n count++;\n if (listeners[i].handler === fu
n) {\n found = true;\n listeners[i].remove();\n }
\n }\n }\n\n if (found && count === 1) {\n var target =
getTargetToListenAt(this);\n target.removeEventListener_(type, dispatchOr
iginalEvent, true);\n }\n },\n dispatchEvent: function(event) {\n
// We want to use the native dispatchEvent because it triggers the default\n
// actions (like checking a checkbox). However, if there are no listeners\n
// in the composed tree then there are no events that will trigger and\n
// listeners in the non composed tree that are part of the event path are\n
// not notified.\n //\n // If we find out that there are no listen
ers in the composed tree we add\n // a temporary listener to the target whi
ch makes us get called back even\n // in that case.\n\n var nativeEven
t = unwrap(event);\n var eventType = nativeEvent.type;\n\n // Allow di
spatching the same event again. This is safe because if user\n // code call
s this during an existing dispatch of the same event the\n // native dispat
chEvent throws (that is required by the spec).\n handledEventsTable.set(nat
iveEvent, false);\n\n // Force rendering since we prefer native dispatch an
d that works on the\n // composed tree.\n scope.renderAllPending();\n\
n var tempListener;\n if (!hasListenerInAncestors(this, eventType)) {\
n tempListener = function() {};\n this.addEventListener(eventType,
tempListener, true);\n }\n\n try {\n return unwrap(this).dispa
tchEvent_(nativeEvent);\n } finally {\n if (tempListener)\n
this.removeEventListener(eventType, tempListener, true);\n }\n }\n };\
n\n function hasListener(node, type) {\n var listeners = listenersTable.get(
node);\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {
\n if (!listeners[i].removed && listeners[i].type === type)\n re
turn true;\n }\n }\n return false;\n }\n\n function hasListenerInAn
cestors(target, type) {\n for (var node = unwrap(target); node; node = node.p
arentNode) {\n if (hasListener(wrap(node), type))\n return true;\n
}\n return false;\n }\n\n if (OriginalEventTarget)\n registerWrapper(O
riginalEventTarget, EventTarget);\n\n function wrapEventTargetMethods(construct
ors) {\n forwardMethodsToWrapper(constructors, methodNames);\n }\n\n var or
iginalElementFromPoint = document.elementFromPoint;\n\n function elementFromPoi
nt(self, document, x, y) {\n scope.renderAllPending();\n\n var element =\n
wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y));\n
if (!element)\n return null;\n var path = getEventPath(element, null);\n
\n // scope the path to this TreeScope\n var idx = path.lastIndexOf(self);
\n if (idx == -1)\n return null;\n else\n path = path.slice(0, i
dx);\n\n // TODO(dfreedm): pass idx to eventRetargetting to avoid array copy\
n return eventRetargetting(path, self);\n }\n\n /**\n * Returns a functio
n that is to be used as a getter for `onfoo` properties.\n * @param {string} n
ame\n * @return {Function}\n */\n function getEventHandlerGetter(name) {\n
return function() {\n var inlineEventHandlers = eventHandlersTable.get(t
his);\n return inlineEventHandlers && inlineEventHandlers[name] &&\n
inlineEventHandlers[name].value || null;\n };\n }\n\n /**\n * Returns
a function that is to be used as a setter for `onfoo` properties.\n * @param
{string} name\n * @return {Function}\n */\n function getEventHandlerSetter(
name) {\n var eventType = name.slice(2);\n return function(value) {\n
var inlineEventHandlers = eventHandlersTable.get(this);\n if (!inlineEvent
Handlers) {\n inlineEventHandlers = Object.create(null);\n eventHa
ndlersTable.set(this, inlineEventHandlers);\n }\n\n var old = inlineEv
entHandlers[name];\n if (old)\n this.removeEventListener(eventType,
old.wrapped, false);\n\n if (typeof value === 'function') {\n var wr
apped = function(e) {\n var rv = value.call(this, e);\n if (rv
=== false)\n e.preventDefault();\n else if (name === 'onbef
oreunload' && typeof rv === 'string')\n e.returnValue = rv;\n
// mouseover uses true for preventDefault but preventDefault for\n //
mouseover is ignored by browsers these day.\n };\n\n this.addEven
tListener(eventType, wrapped, false);\n inlineEventHandlers[name] = {\n
value: value,\n wrapped: wrapped\n };\n }\n };\n
}\n\n scope.elementFromPoint = elementFromPoint;\n scope.getEventHandlerGett
er = getEventHandlerGetter;\n scope.getEventHandlerSetter = getEventHandlerSett
er;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wrappers.
BeforeUnloadEvent = BeforeUnloadEvent;\n scope.wrappers.CustomEvent = CustomEve
nt;\n scope.wrappers.Event = Event;\n scope.wrappers.EventTarget = EventTarget
;\n scope.wrappers.FocusEvent = FocusEvent;\n scope.wrappers.MouseEvent = Mous
eEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n"
, |
93 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var UIEvent = s
cope.wrappers.UIEvent;\n var mixin = scope.mixin;\n var registerWrapper = scop
e.registerWrapper;\n var setWrapper = scope.setWrapper;\n var unsafeUnwrap = s
cope.unsafeUnwrap;\n var wrap = scope.wrap;\n\n // TouchEvent is WebKit/Blink
only.\n var OriginalTouchEvent = window.TouchEvent;\n if (!OriginalTouchEvent)
\n return;\n\n var nativeEvent;\n try {\n nativeEvent = document.createE
vent('TouchEvent');\n } catch (ex) {\n // In Chrome creating a TouchEvent fa
ils if the feature is not turned on\n // which it isn't on desktop Chrome.\n
return;\n }\n\n var nonEnumDescriptor = {enumerable: false};\n\n function
nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, nonEnumDescriptor);\n
}\n\n function Touch(impl) {\n setWrapper(impl, this);\n }\n\n Touch.pro
totype = {\n get target() {\n return wrap(unsafeUnwrap(this).target);\n
}\n };\n\n var descr = {\n configurable: true,\n enumerable: true,\n
get: null\n };\n\n [\n 'clientX',\n 'clientY',\n 'screenX',\n '
screenY',\n 'pageX',\n 'pageY',\n 'identifier',\n 'webkitRadiusX',\n
'webkitRadiusY',\n 'webkitRotationAngle',\n 'webkitForce'\n ].forEach
(function(name) {\n descr.get = function() {\n return unsafeUnwrap(this)
[name];\n };\n Object.defineProperty(Touch.prototype, name, descr);\n });
\n\n function TouchList() {\n this.length = 0;\n nonEnum(this, 'length');
\n }\n\n TouchList.prototype = {\n item: function(index) {\n return th
is[index];\n }\n };\n\n function wrapTouchList(nativeTouchList) {\n var
list = new TouchList();\n for (var i = 0; i < nativeTouchList.length; i++) {\
n list[i] = new Touch(nativeTouchList[i]);\n }\n list.length = i;\n
return list;\n }\n\n function TouchEvent(impl) {\n UIEvent.call(this, imp
l);\n }\n\n TouchEvent.prototype = Object.create(UIEvent.prototype);\n\n mixi
n(TouchEvent.prototype, {\n get touches() {\n return wrapTouchList(unsaf
eUnwrap(this).touches);\n },\n\n get targetTouches() {\n return wrapT
ouchList(unsafeUnwrap(this).targetTouches);\n },\n\n get changedTouches()
{\n return wrapTouchList(unsafeUnwrap(this).changedTouches);\n },\n\n
initTouchEvent: function() {\n // The only way to use this is to reuse the
TouchList from an existing\n // TouchEvent. Since this is WebKit/Blink pro
prietary API we will not\n // implement this until someone screams.\n
throw new Error('Not implemented');\n }\n });\n\n registerWrapper(OriginalT
ouchEvent, TouchEvent, nativeEvent);\n\n scope.wrappers.Touch = Touch;\n scope
.wrappers.TouchEvent = TouchEvent;\n scope.wrappers.TouchList = TouchList;\n\n}
)(window.ShadowDOMPolyfill);\n\n", | 93 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var UIEvent = s
cope.wrappers.UIEvent;\n var mixin = scope.mixin;\n var registerWrapper = scop
e.registerWrapper;\n var setWrapper = scope.setWrapper;\n var unsafeUnwrap = s
cope.unsafeUnwrap;\n var wrap = scope.wrap;\n\n // TouchEvent is WebKit/Blink
only.\n var OriginalTouchEvent = window.TouchEvent;\n if (!OriginalTouchEvent)
\n return;\n\n var nativeEvent;\n try {\n nativeEvent = document.createE
vent('TouchEvent');\n } catch (ex) {\n // In Chrome creating a TouchEvent fa
ils if the feature is not turned on\n // which it isn't on desktop Chrome.\n
return;\n }\n\n var nonEnumDescriptor = {enumerable: false};\n\n function
nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, nonEnumDescriptor);\n
}\n\n function Touch(impl) {\n setWrapper(impl, this);\n }\n\n Touch.pro
totype = {\n get target() {\n return wrap(unsafeUnwrap(this).target);\n
}\n };\n\n var descr = {\n configurable: true,\n enumerable: true,\n
get: null\n };\n\n [\n 'clientX',\n 'clientY',\n 'screenX',\n '
screenY',\n 'pageX',\n 'pageY',\n 'identifier',\n 'webkitRadiusX',\n
'webkitRadiusY',\n 'webkitRotationAngle',\n 'webkitForce'\n ].forEach
(function(name) {\n descr.get = function() {\n return unsafeUnwrap(this)
[name];\n };\n Object.defineProperty(Touch.prototype, name, descr);\n });
\n\n function TouchList() {\n this.length = 0;\n nonEnum(this, 'length');
\n }\n\n TouchList.prototype = {\n item: function(index) {\n return th
is[index];\n }\n };\n\n function wrapTouchList(nativeTouchList) {\n var
list = new TouchList();\n for (var i = 0; i < nativeTouchList.length; i++) {\
n list[i] = new Touch(nativeTouchList[i]);\n }\n list.length = i;\n
return list;\n }\n\n function TouchEvent(impl) {\n UIEvent.call(this, imp
l);\n }\n\n TouchEvent.prototype = Object.create(UIEvent.prototype);\n\n mixi
n(TouchEvent.prototype, {\n get touches() {\n return wrapTouchList(unsaf
eUnwrap(this).touches);\n },\n\n get targetTouches() {\n return wrapT
ouchList(unsafeUnwrap(this).targetTouches);\n },\n\n get changedTouches()
{\n return wrapTouchList(unsafeUnwrap(this).changedTouches);\n },\n\n
initTouchEvent: function() {\n // The only way to use this is to reuse the
TouchList from an existing\n // TouchEvent. Since this is WebKit/Blink pro
prietary API we will not\n // implement this until someone screams.\n
throw new Error('Not implemented');\n }\n });\n\n registerWrapper(OriginalT
ouchEvent, TouchEvent, nativeEvent);\n\n scope.wrappers.Touch = Touch;\n scope
.wrappers.TouchEvent = TouchEvent;\n scope.wrappers.TouchList = TouchList;\n\n}
)(window.ShadowDOMPolyfill);\n\n", |
94 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var unsafeUnwrap = scope
.unsafeUnwrap;\n var wrap = scope.wrap;\n\n var nonEnumDescriptor = {enumerabl
e: false};\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, pr
op, nonEnumDescriptor);\n }\n\n function NodeList() {\n this.length = 0;\n
nonEnum(this, 'length');\n }\n NodeList.prototype = {\n item: function(i
ndex) {\n return this[index];\n }\n };\n nonEnum(NodeList.prototype, '
item');\n\n function wrapNodeList(list) {\n if (list == null)\n return
list;\n var wrapperList = new NodeList();\n for (var i = 0, length = list.
length; i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wr
apperList.length = length;\n return wrapperList;\n }\n\n function addWrapNo
deListMethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name]
= function() {\n return wrapNodeList(\n unsafeUnwrap(this)[name].
apply(unsafeUnwrap(this), arguments));\n };\n }\n\n scope.wrappers.NodeList
= NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope.wr
apNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n", | 94 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var unsafeUnwrap = scope
.unsafeUnwrap;\n var wrap = scope.wrap;\n\n var nonEnumDescriptor = {enumerabl
e: false};\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, pr
op, nonEnumDescriptor);\n }\n\n function NodeList() {\n this.length = 0;\n
nonEnum(this, 'length');\n }\n NodeList.prototype = {\n item: function(i
ndex) {\n return this[index];\n }\n };\n nonEnum(NodeList.prototype, '
item');\n\n function wrapNodeList(list) {\n if (list == null)\n return
list;\n var wrapperList = new NodeList();\n for (var i = 0, length = list.
length; i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wr
apperList.length = length;\n return wrapperList;\n }\n\n function addWrapNo
deListMethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name]
= function() {\n return wrapNodeList(\n unsafeUnwrap(this)[name].
apply(unsafeUnwrap(this), arguments));\n };\n }\n\n scope.wrappers.NodeList
= NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope.wr
apNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n", |
95 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n // TODO(arv): I
mplement.\n\n scope.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.
HTMLCollection = scope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n", | 95 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n // TODO(arv): I
mplement.\n\n scope.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.
HTMLCollection = scope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n", |
96 "/**\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var EventTarge
t = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.NodeList;\n va
r TreeScope = scope.TreeScope;\n var assert = scope.assert;\n var defineWrapGe
tter = scope.defineWrapGetter;\n var enqueueMutation = scope.enqueueMutation;\n
var getTreeScope = scope.getTreeScope;\n var isWrapper = scope.isWrapper;\n
var mixin = scope.mixin;\n var registerTransientObservers = scope.registerTrans
ientObservers;\n var registerWrapper = scope.registerWrapper;\n var setTreeSco
pe = scope.setTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var unwrap
= scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = sco
pe.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrapp
ers;\n\n function assertIsNodeWrapper(node) {\n assert(node instanceof Node)
;\n }\n\n function createOneElementNodeList(node) {\n var nodes = new NodeL
ist();\n nodes[0] = node;\n nodes.length = 1;\n return nodes;\n }\n\n
var surpressMutations = false;\n\n /**\n * Called before node is inserted in
to a node to enqueue its removal from its\n * old parent.\n * @param {!Node}
node The node that is about to be removed.\n * @param {!Node} parent The pare
nt node that the node is being removed from.\n * @param {!NodeList} nodes The
collected nodes.\n */\n function enqueueRemovalForInsertedNodes(node, parent,
nodes) {\n enqueueMutation(parent, 'childList', {\n removedNodes: nodes
,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSib
ling\n });\n }\n\n function enqueueRemovalForInsertedDocumentFragment(df, n
odes) {\n enqueueMutation(df, 'childList', {\n removedNodes: nodes\n
});\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for rem
oval followed\n * by an insertion.\n *\n * This updates the internal point
ers for node, previousNode and nextNode.\n */\n function collectNodes(node, p
arentNode, previousNode, nextNode) {\n if (node instanceof DocumentFragment)
{\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extr
a loop is to work around bugs with DocumentFragments in IE.\n surpressMutat
ions = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.
removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\n }\n
surpressMutations = false;\n\n for (var i = 0; i < nodes.length; i++) {\
n nodes[i].previousSibling_ = nodes[i - 1] || previousNode;\n node
s[i].nextSibling_ = nodes[i + 1] || nextNode;\n }\n\n if (previousNode
)\n previousNode.nextSibling_ = nodes[0];\n if (nextNode)\n n
extNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n
}\n\n var nodes = createOneElementNodeList(node);\n var oldParent = node.p
arentNode;\n if (oldParent) {\n // This will enqueue the mutation record
for the removal as needed.\n oldParent.removeChild(node);\n }\n\n no
de.parentNode_ = parentNode;\n node.previousSibling_ = previousNode;\n nod
e.nextSibling_ = nextNode;\n if (previousNode)\n previousNode.nextSiblin
g_ = node;\n if (nextNode)\n nextNode.previousSibling_ = node;\n\n re
turn nodes;\n }\n\n function collectNodesNative(node) {\n if (node instance
of DocumentFragment)\n return collectNodesForDocumentFragment(node);\n\n
var nodes = createOneElementNodeList(node);\n var oldParent = node.parentNod
e;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, no
des);\n return nodes;\n }\n\n function collectNodesForDocumentFragment(node
) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.
firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n
}\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFragment(node, no
des);\n return nodes;\n }\n\n function snapshotNodeList(nodeList) {\n //
NodeLists are not live at the moment so just return the same object.\n retur
n nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-inserted\n functio
n nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope);\n node.
nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var t
reeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.length; i++) {\n
nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http://dom.spec.wha
twg.org/#node-is-removed\n function nodeWasRemoved(node) {\n setTreeScope(no
de, new TreeScope(node, null));\n }\n\n function nodesWereRemoved(nodes) {\n
for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(nodes[i]);\n
}\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc
= parent.nodeType === Node.DOCUMENT_NODE ?\n parent : parent.ownerDocume
nt;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adoptNode(child);
\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!nodes.length)\n
return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes hav
e the same ownerDocument when we get here.\n if (ownerDoc === nodes[0].ownerD
ocument)\n return;\n\n for (var i = 0; i < nodes.length; i++) {\n s
cope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n function unwrapNode
sForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes);\n var le
ngth = nodes.length;\n\n if (length === 1)\n return unwrap(nodes[0]);\n\
n var df = unwrap(owner.ownerDocument.createDocumentFragment());\n for (va
r i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i]));\n }\n
return df;\n }\n\n function clearChildNodes(wrapper) {\n if (wrapper.first
Child_ !== undefined) {\n var child = wrapper.firstChild_;\n while (ch
ild) {\n var tmp = child;\n child = child.nextSibling_;\n t
mp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;\n }\n
}\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n funct
ion removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShadowRenderer())
{\n var childWrapper = wrapper.firstChild;\n while (childWrapper) {\n
assert(childWrapper.parentNode === wrapper);\n var nextSibling = c
hildWrapper.nextSibling;\n var childNode = unwrap(childWrapper);\n
var parentNode = childNode.parentNode;\n if (parentNode)\n orig
inalRemoveChild.call(parentNode, childNode);\n childWrapper.previousSibli
ng_ = childWrapper.nextSibling_ =\n childWrapper.parentNode_ = null;\
n childWrapper = nextSibling;\n }\n wrapper.firstChild_ = wrapp
er.lastChild_ = null;\n } else {\n var node = unwrap(wrapper);\n va
r child = node.firstChild;\n var nextSibling;\n while (child) {\n
nextSibling = child.nextSibling;\n originalRemoveChild.call(node, chil
d);\n child = nextSibling;\n }\n }\n }\n\n function invalidateP
arent(node) {\n var p = node.parentNode;\n return p && p.invalidateShadowR
enderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i <
nodes.length; i++) {\n n = nodes[i];\n n.parentNode.removeChild(n);\n
}\n }\n\n var originalImportNode = document.importNode;\n var originalClon
eNode = window.Node.prototype.cloneNode;\n\n function cloneNode(node, deep, opt
_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(originalImportNode
.call(opt_doc, unsafeUnwrap(node), false));\n else\n clone = wrap(origin
alCloneNode.call(unsafeUnwrap(node), false));\n\n if (deep) {\n for (var
child = node.firstChild; child; child = child.nextSibling) {\n clone.app
endChild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof
wrappers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n
for (var child = node.content.firstChild;\n child;\n
child = child.nextSibling) {\n cloneContent.appendChild(cloneNode(chil
d, true, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elem
ents also clone other data like value.\n return clone;\n }\n\n function con
tains(self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(chil
d))\n return false;\n\n for (var node = child; node; node = node.parentN
ode) {\n if (node === self)\n return true;\n }\n return false;
\n }\n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrap
per of a native DOM node.\n * @param {!Node} original The original DOM node, a
ka, the visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\
n function Node(original) {\n assert(original instanceof OriginalNode);\n\n
EventTarget.call(this, original);\n\n // These properties are used to over
ride the visual references with the\n // logical ones. If the value is undefi
ned it means that the logical is the\n // same as the visual.\n\n /**\n
* @type {Node|undefined}\n * @private\n */\n this.parentNode_ = und
efined;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n
this.firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n *
@private\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {N
ode|undefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n
/**\n * @type {Node|undefined}\n * @private\n */\n this.previ
ousSibling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var Origi
nalDocumentFragment = window.DocumentFragment;\n var originalAppendChild = Orig
inalNode.prototype.appendChild;\n var originalCompareDocumentPosition =\n
OriginalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Or
iginalNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.pro
totype.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replace
Child;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChild
OriginalHelper = isIe ?\n function(parent, child) {\n try {\n
originalRemoveChild.call(parent, child);\n } catch (ex) {\n i
f (!(parent instanceof OriginalDocumentFragment))\n throw ex;\n
}\n } :\n function(parent, child) {\n originalRemoveChild.cal
l(parent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prot
otype);\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n
return this.insertBefore(childWrapper, null);\n },\n\n insertBefore:
function(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n
\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)
) {\n refNode = unwrap(refWrapper);\n } else {\n refNod
e = refWrapper;\n refWrapper = wrap(refNode);\n }\n } else
{\n refWrapper = null;\n refNode = null;\n }\n\n refWrap
per && assert(refWrapper.parentNode === this);\n\n var nodes;\n var pr
eviousNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild
;\n\n var useNative = !this.invalidateShadowRenderer() &&\n
!invalidateParent(childWrapper);\n\n if (useNative)\n nodes =
collectNodesNative(childWrapper);\n else\n nodes = collectNodes(chil
dWrapper, this, previousNode, refWrapper);\n\n if (useNative) {\n en
sureSameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n
originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode)
;\n } else {\n if (!previousNode)\n this.firstChild_ = node
s[0];\n if (!refWrapper) {\n this.lastChild_ = nodes[nodes.lengt
h - 1];\n if (this.firstChild_ === undefined)\n this.firstCh
ild_ = this.firstChild;\n }\n\n var parentNode = refNode ? refNode
.parentNode : unsafeUnwrap(this);\n\n // insertBefore refWrapper no matte
r what the parent is?\n if (parentNode) {\n originalInsertBefore
.call(parentNode,\n unwrapNodesForInsertion(this, nodes), refNode);
\n } else {\n adoptNodesIfNeeded(this, nodes);\n }\n
}\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n
nextSibling: refWrapper,\n previousSibling: previousNode\n });
\n\n nodesWereAdded(nodes, this);\n\n return childWrapper;\n },\n\n
removeChild: function(childWrapper) {\n assertIsNodeWrapper(childWrappe
r);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DO
M trees at times.\n var found = false;\n var childNodes = this.chi
ldNodes;\n for (var ieChild = this.firstChild; ieChild;\n ieC
hild = ieChild.nextSibling) {\n if (ieChild === childWrapper) {\n
found = true;\n break;\n }\n }\n if (!fo
und) {\n // TODO(arv): DOMException\n throw new Error('NotFoun
dError');\n }\n }\n\n var childNode = unwrap(childWrapper);\n
var childWrapperNextSibling = childWrapper.nextSibling;\n var childWrap
perPreviousSibling = childWrapper.previousSibling;\n\n if (this.invalidateS
hadowRenderer()) {\n // We need to remove the real node from the DOM befo
re updating the\n // pointers. This is so that that mutation event is dis
patched before\n // the pointers have changed.\n var thisFirstChil
d = this.firstChild;\n var thisLastChild = this.lastChild;\n\n var
parentNode = childNode.parentNode;\n if (parentNode)\n removeCh
ildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === chil
dWrapper)\n this.firstChild_ = childWrapperNextSibling;\n if (th
isLastChild === childWrapper)\n this.lastChild_ = childWrapperPreviousS
ibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviou
sSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSi
bling) {\n childWrapperNextSibling.previousSibling_ =\n ch
ildWrapperPreviousSibling;\n }\n\n childWrapper.previousSibling_ =
childWrapper.nextSibling_ =\n childWrapper.parentNode_ = undefined;\
n } else {\n clearChildNodes(this);\n removeChildOriginalHelp
er(unsafeUnwrap(this), childNode);\n }\n\n if (!surpressMutations) {\n
enqueueMutation(this, 'childList', {\n removedNodes: createOneE
lementNodeList(childWrapper),\n nextSibling: childWrapperNextSibling,\n
previousSibling: childWrapperPreviousSibling\n });\n }\n\n
registerTransientObservers(this, childWrapper);\n\n return childWrapp
er;\n },\n\n replaceChild: function(newChildWrapper, oldChildWrapper) {\n
assertIsNodeWrapper(newChildWrapper);\n\n var oldChildNode;\n if
(isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap(oldChildWrapper);\
n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrappe
r = wrap(oldChildNode);\n }\n\n if (oldChildWrapper.parentNode !== thi
s) {\n // TODO(arv): DOMException\n throw new Error('NotFoundError
');\n }\n\n var nextNode = oldChildWrapper.nextSibling;\n var pre
viousNode = oldChildWrapper.previousSibling;\n var nodes;\n\n var useN
ative = !this.invalidateShadowRenderer() &&\n !invalidatePa
rent(newChildWrapper);\n\n if (useNative) {\n nodes = collectNodesNa
tive(newChildWrapper);\n } else {\n if (nextNode === newChildWrapper
)\n nextNode = newChildWrapper.nextSibling;\n nodes = collectNod
es(newChildWrapper, this, previousNode, nextNode);\n }\n\n if (!useNat
ive) {\n if (this.firstChild === oldChildWrapper)\n this.firstCh
ild_ = nodes[0];\n if (this.lastChild === oldChildWrapper)\n thi
s.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWrapper.previousSibli
ng_ = oldChildWrapper.nextSibling_ =\n oldChildWrapper.parentNode_ =
undefined;\n\n // replaceChild no matter what the parent is?\n if
(oldChildNode.parentNode) {\n originalReplaceChild.call(\n
oldChildNode.parentNode,\n unwrapNodesForInsertion(this, nodes),\n
oldChildNode);\n }\n } else {\n ensureSameOwner
Document(this, newChildWrapper);\n clearChildNodes(this);\n origin
alReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper),\n
oldChildNode);\n }\n\n enqueueMutation(this, 'chil
dList', {\n addedNodes: nodes,\n removedNodes: createOneElementNod
eList(oldChildWrapper),\n nextSibling: nextNode,\n previousSibling
: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodes
WereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n
* Called after a node was inserted. Subclasses override this to invalidate\n
* the renderer as needed.\n * @private\n */\n nodeIsInserted_: fun
ction() {\n for (var child = this.firstChild; child; child = child.nextSibl
ing) {\n child.nodeIsInserted_();\n }\n },\n\n hasChildNodes:
function() {\n return this.firstChild !== null;\n },\n\n /** @type {N
ode} */\n get parentNode() {\n // If the parentNode has not been overrid
den, use the original parentNode.\n return this.parentNode_ !== undefined ?
\n this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);\n },\n\n
/** @type {Node} */\n get firstChild() {\n return this.firstChild_ !=
= undefined ?\n this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
\n },\n\n /** @type {Node} */\n get lastChild() {\n return this.la
stChild_ !== undefined ?\n this.lastChild_ : wrap(unsafeUnwrap(this).la
stChild);\n },\n\n /** @type {Node} */\n get nextSibling() {\n ret
urn this.nextSibling_ !== undefined ?\n this.nextSibling_ : wrap(unsafe
Unwrap(this).nextSibling);\n },\n\n /** @type {Node} */\n get previousS
ibling() {\n return this.previousSibling_ !== undefined ?\n this.p
reviousSibling_ : wrap(unsafeUnwrap(this).previousSibling);\n },\n\n get p
arentElement() {\n var p = this.parentNode;\n while (p && p.nodeType !
== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n
},\n\n get textContent() {\n // TODO(arv): This should fallback to uns
afeUnwrap(this).textContent if there\n // are no shadow trees below or abov
e the context node.\n var s = '';\n for (var child = this.firstChild;
child; child = child.nextSibling) {\n if (child.nodeType != Node.COMMENT_
NODE) {\n s += child.textContent;\n }\n }\n return s;\
n },\n set textContent(textContent) {\n var removedNodes = snapshotNo
deList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n
removeAllChildNodes(this);\n if (textContent !== '') {\n var t
extNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);\n
this.appendChild(textNode);\n }\n } else {\n clearChildNod
es(this);\n unsafeUnwrap(this).textContent = textContent;\n }\n\n
var addedNodes = snapshotNodeList(this.childNodes);\n\n enqueueMutation(
this, 'childList', {\n addedNodes: addedNodes,\n removedNodes: rem
ovedNodes\n });\n\n nodesWereRemoved(removedNodes);\n nodesWereAd
ded(addedNodes, this);\n },\n\n get childNodes() {\n var wrapperList
= new NodeList();\n var i = 0;\n for (var child = this.firstChild; chi
ld; child = child.nextSibling) {\n wrapperList[i++] = child;\n }\n
wrapperList.length = i;\n return wrapperList;\n },\n\n cloneNode:
function(deep) {\n return cloneNode(this, deep);\n },\n\n contains:
function(child) {\n return contains(this, wrapIfNeeded(child));\n },\n\n
compareDocumentPosition: function(otherNode) {\n // This only wraps, it
therefore only operates on the composed DOM and not\n // the logical DOM.\
n return originalCompareDocumentPosition.call(unsafeUnwrap(this),\n
unwrapIfNeeded(otherNode));\n },\n\
n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes
);\n var remNodes = [];\n var s = '';\n var modNode;\n\n for
(var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n
odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n
this.removeNode(n);\n else if (!modNode)\n modNode = n
;\n else {\n s += n.data;\n remNodes.push(n);\n
}\n } else {\n if (modNode && remNodes.length) {\n
modNode.data += s;\n cleanupNodes(remNodes);\n }\n
remNodes = [];\n s = '';\n modNode = null;\n if
(n.childNodes.length)\n n.normalize();\n }\n }\n\n
// handle case where >1 text nodes are the last children\n if (modNode && r
emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n
}\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u
se a DocumentFragment as a base and then delete the properties of\n // Document
Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow
in some JS engines we recreate the prototype object.\n registerWrapper(Original
Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe
lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj
ect.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNode = clone
Node;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = nodeWasRem
oved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemoved = node
sWereRemoved;\n scope.originalInsertBefore = originalInsertBefore;\n scope.ori
ginalRemoveChild = originalRemoveChild;\n scope.snapshotNodeList = snapshotNode
List;\n scope.wrappers.Node = Node;\n\n})(window.ShadowDOMPolyfill);\n", | 96 "/**\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var EventTarge
t = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.NodeList;\n va
r TreeScope = scope.TreeScope;\n var assert = scope.assert;\n var defineWrapGe
tter = scope.defineWrapGetter;\n var enqueueMutation = scope.enqueueMutation;\n
var getTreeScope = scope.getTreeScope;\n var isWrapper = scope.isWrapper;\n
var mixin = scope.mixin;\n var registerTransientObservers = scope.registerTrans
ientObservers;\n var registerWrapper = scope.registerWrapper;\n var setTreeSco
pe = scope.setTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var unwrap
= scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = sco
pe.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrapp
ers;\n\n function assertIsNodeWrapper(node) {\n assert(node instanceof Node)
;\n }\n\n function createOneElementNodeList(node) {\n var nodes = new NodeL
ist();\n nodes[0] = node;\n nodes.length = 1;\n return nodes;\n }\n\n
var surpressMutations = false;\n\n /**\n * Called before node is inserted in
to a node to enqueue its removal from its\n * old parent.\n * @param {!Node}
node The node that is about to be removed.\n * @param {!Node} parent The pare
nt node that the node is being removed from.\n * @param {!NodeList} nodes The
collected nodes.\n */\n function enqueueRemovalForInsertedNodes(node, parent,
nodes) {\n enqueueMutation(parent, 'childList', {\n removedNodes: nodes
,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSib
ling\n });\n }\n\n function enqueueRemovalForInsertedDocumentFragment(df, n
odes) {\n enqueueMutation(df, 'childList', {\n removedNodes: nodes\n
});\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for rem
oval followed\n * by an insertion.\n *\n * This updates the internal point
ers for node, previousNode and nextNode.\n */\n function collectNodes(node, p
arentNode, previousNode, nextNode) {\n if (node instanceof DocumentFragment)
{\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extr
a loop is to work around bugs with DocumentFragments in IE.\n surpressMutat
ions = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.
removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\n }\n
surpressMutations = false;\n\n for (var i = 0; i < nodes.length; i++) {\
n nodes[i].previousSibling_ = nodes[i - 1] || previousNode;\n node
s[i].nextSibling_ = nodes[i + 1] || nextNode;\n }\n\n if (previousNode
)\n previousNode.nextSibling_ = nodes[0];\n if (nextNode)\n n
extNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n
}\n\n var nodes = createOneElementNodeList(node);\n var oldParent = node.p
arentNode;\n if (oldParent) {\n // This will enqueue the mutation record
for the removal as needed.\n oldParent.removeChild(node);\n }\n\n no
de.parentNode_ = parentNode;\n node.previousSibling_ = previousNode;\n nod
e.nextSibling_ = nextNode;\n if (previousNode)\n previousNode.nextSiblin
g_ = node;\n if (nextNode)\n nextNode.previousSibling_ = node;\n\n re
turn nodes;\n }\n\n function collectNodesNative(node) {\n if (node instance
of DocumentFragment)\n return collectNodesForDocumentFragment(node);\n\n
var nodes = createOneElementNodeList(node);\n var oldParent = node.parentNod
e;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, no
des);\n return nodes;\n }\n\n function collectNodesForDocumentFragment(node
) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.
firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n
}\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFragment(node, no
des);\n return nodes;\n }\n\n function snapshotNodeList(nodeList) {\n //
NodeLists are not live at the moment so just return the same object.\n retur
n nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-inserted\n functio
n nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope);\n node.
nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var t
reeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.length; i++) {\n
nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http://dom.spec.wha
twg.org/#node-is-removed\n function nodeWasRemoved(node) {\n setTreeScope(no
de, new TreeScope(node, null));\n }\n\n function nodesWereRemoved(nodes) {\n
for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(nodes[i]);\n
}\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc
= parent.nodeType === Node.DOCUMENT_NODE ?\n parent : parent.ownerDocume
nt;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adoptNode(child);
\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!nodes.length)\n
return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes hav
e the same ownerDocument when we get here.\n if (ownerDoc === nodes[0].ownerD
ocument)\n return;\n\n for (var i = 0; i < nodes.length; i++) {\n s
cope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n function unwrapNode
sForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes);\n var le
ngth = nodes.length;\n\n if (length === 1)\n return unwrap(nodes[0]);\n\
n var df = unwrap(owner.ownerDocument.createDocumentFragment());\n for (va
r i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i]));\n }\n
return df;\n }\n\n function clearChildNodes(wrapper) {\n if (wrapper.first
Child_ !== undefined) {\n var child = wrapper.firstChild_;\n while (ch
ild) {\n var tmp = child;\n child = child.nextSibling_;\n t
mp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;\n }\n
}\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n funct
ion removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShadowRenderer())
{\n var childWrapper = wrapper.firstChild;\n while (childWrapper) {\n
assert(childWrapper.parentNode === wrapper);\n var nextSibling = c
hildWrapper.nextSibling;\n var childNode = unwrap(childWrapper);\n
var parentNode = childNode.parentNode;\n if (parentNode)\n orig
inalRemoveChild.call(parentNode, childNode);\n childWrapper.previousSibli
ng_ = childWrapper.nextSibling_ =\n childWrapper.parentNode_ = null;\
n childWrapper = nextSibling;\n }\n wrapper.firstChild_ = wrapp
er.lastChild_ = null;\n } else {\n var node = unwrap(wrapper);\n va
r child = node.firstChild;\n var nextSibling;\n while (child) {\n
nextSibling = child.nextSibling;\n originalRemoveChild.call(node, chil
d);\n child = nextSibling;\n }\n }\n }\n\n function invalidateP
arent(node) {\n var p = node.parentNode;\n return p && p.invalidateShadowR
enderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i <
nodes.length; i++) {\n n = nodes[i];\n n.parentNode.removeChild(n);\n
}\n }\n\n var originalImportNode = document.importNode;\n var originalClon
eNode = window.Node.prototype.cloneNode;\n\n function cloneNode(node, deep, opt
_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(originalImportNode
.call(opt_doc, unsafeUnwrap(node), false));\n else\n clone = wrap(origin
alCloneNode.call(unsafeUnwrap(node), false));\n\n if (deep) {\n for (var
child = node.firstChild; child; child = child.nextSibling) {\n clone.app
endChild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof
wrappers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n
for (var child = node.content.firstChild;\n child;\n
child = child.nextSibling) {\n cloneContent.appendChild(cloneNode(chil
d, true, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elem
ents also clone other data like value.\n return clone;\n }\n\n function con
tains(self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(chil
d))\n return false;\n\n for (var node = child; node; node = node.parentN
ode) {\n if (node === self)\n return true;\n }\n return false;
\n }\n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrap
per of a native DOM node.\n * @param {!Node} original The original DOM node, a
ka, the visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\
n function Node(original) {\n assert(original instanceof OriginalNode);\n\n
EventTarget.call(this, original);\n\n // These properties are used to over
ride the visual references with the\n // logical ones. If the value is undefi
ned it means that the logical is the\n // same as the visual.\n\n /**\n
* @type {Node|undefined}\n * @private\n */\n this.parentNode_ = und
efined;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n
this.firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n *
@private\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {N
ode|undefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n
/**\n * @type {Node|undefined}\n * @private\n */\n this.previ
ousSibling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var Origi
nalDocumentFragment = window.DocumentFragment;\n var originalAppendChild = Orig
inalNode.prototype.appendChild;\n var originalCompareDocumentPosition =\n
OriginalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Or
iginalNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.pro
totype.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replace
Child;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChild
OriginalHelper = isIe ?\n function(parent, child) {\n try {\n
originalRemoveChild.call(parent, child);\n } catch (ex) {\n i
f (!(parent instanceof OriginalDocumentFragment))\n throw ex;\n
}\n } :\n function(parent, child) {\n originalRemoveChild.cal
l(parent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prot
otype);\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n
return this.insertBefore(childWrapper, null);\n },\n\n insertBefore:
function(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n
\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)
) {\n refNode = unwrap(refWrapper);\n } else {\n refNod
e = refWrapper;\n refWrapper = wrap(refNode);\n }\n } else
{\n refWrapper = null;\n refNode = null;\n }\n\n refWrap
per && assert(refWrapper.parentNode === this);\n\n var nodes;\n var pr
eviousNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild
;\n\n var useNative = !this.invalidateShadowRenderer() &&\n
!invalidateParent(childWrapper);\n\n if (useNative)\n nodes =
collectNodesNative(childWrapper);\n else\n nodes = collectNodes(chil
dWrapper, this, previousNode, refWrapper);\n\n if (useNative) {\n en
sureSameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n
originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode)
;\n } else {\n if (!previousNode)\n this.firstChild_ = node
s[0];\n if (!refWrapper) {\n this.lastChild_ = nodes[nodes.lengt
h - 1];\n if (this.firstChild_ === undefined)\n this.firstCh
ild_ = this.firstChild;\n }\n\n var parentNode = refNode ? refNode
.parentNode : unsafeUnwrap(this);\n\n // insertBefore refWrapper no matte
r what the parent is?\n if (parentNode) {\n originalInsertBefore
.call(parentNode,\n unwrapNodesForInsertion(this, nodes), refNode);
\n } else {\n adoptNodesIfNeeded(this, nodes);\n }\n
}\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n
nextSibling: refWrapper,\n previousSibling: previousNode\n });
\n\n nodesWereAdded(nodes, this);\n\n return childWrapper;\n },\n\n
removeChild: function(childWrapper) {\n assertIsNodeWrapper(childWrappe
r);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DO
M trees at times.\n var found = false;\n var childNodes = this.chi
ldNodes;\n for (var ieChild = this.firstChild; ieChild;\n ieC
hild = ieChild.nextSibling) {\n if (ieChild === childWrapper) {\n
found = true;\n break;\n }\n }\n if (!fo
und) {\n // TODO(arv): DOMException\n throw new Error('NotFoun
dError');\n }\n }\n\n var childNode = unwrap(childWrapper);\n
var childWrapperNextSibling = childWrapper.nextSibling;\n var childWrap
perPreviousSibling = childWrapper.previousSibling;\n\n if (this.invalidateS
hadowRenderer()) {\n // We need to remove the real node from the DOM befo
re updating the\n // pointers. This is so that that mutation event is dis
patched before\n // the pointers have changed.\n var thisFirstChil
d = this.firstChild;\n var thisLastChild = this.lastChild;\n\n var
parentNode = childNode.parentNode;\n if (parentNode)\n removeCh
ildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === chil
dWrapper)\n this.firstChild_ = childWrapperNextSibling;\n if (th
isLastChild === childWrapper)\n this.lastChild_ = childWrapperPreviousS
ibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviou
sSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSi
bling) {\n childWrapperNextSibling.previousSibling_ =\n ch
ildWrapperPreviousSibling;\n }\n\n childWrapper.previousSibling_ =
childWrapper.nextSibling_ =\n childWrapper.parentNode_ = undefined;\
n } else {\n clearChildNodes(this);\n removeChildOriginalHelp
er(unsafeUnwrap(this), childNode);\n }\n\n if (!surpressMutations) {\n
enqueueMutation(this, 'childList', {\n removedNodes: createOneE
lementNodeList(childWrapper),\n nextSibling: childWrapperNextSibling,\n
previousSibling: childWrapperPreviousSibling\n });\n }\n\n
registerTransientObservers(this, childWrapper);\n\n return childWrapp
er;\n },\n\n replaceChild: function(newChildWrapper, oldChildWrapper) {\n
assertIsNodeWrapper(newChildWrapper);\n\n var oldChildNode;\n if
(isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap(oldChildWrapper);\
n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrappe
r = wrap(oldChildNode);\n }\n\n if (oldChildWrapper.parentNode !== thi
s) {\n // TODO(arv): DOMException\n throw new Error('NotFoundError
');\n }\n\n var nextNode = oldChildWrapper.nextSibling;\n var pre
viousNode = oldChildWrapper.previousSibling;\n var nodes;\n\n var useN
ative = !this.invalidateShadowRenderer() &&\n !invalidatePa
rent(newChildWrapper);\n\n if (useNative) {\n nodes = collectNodesNa
tive(newChildWrapper);\n } else {\n if (nextNode === newChildWrapper
)\n nextNode = newChildWrapper.nextSibling;\n nodes = collectNod
es(newChildWrapper, this, previousNode, nextNode);\n }\n\n if (!useNat
ive) {\n if (this.firstChild === oldChildWrapper)\n this.firstCh
ild_ = nodes[0];\n if (this.lastChild === oldChildWrapper)\n thi
s.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWrapper.previousSibli
ng_ = oldChildWrapper.nextSibling_ =\n oldChildWrapper.parentNode_ =
undefined;\n\n // replaceChild no matter what the parent is?\n if
(oldChildNode.parentNode) {\n originalReplaceChild.call(\n
oldChildNode.parentNode,\n unwrapNodesForInsertion(this, nodes),\n
oldChildNode);\n }\n } else {\n ensureSameOwner
Document(this, newChildWrapper);\n clearChildNodes(this);\n origin
alReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper),\n
oldChildNode);\n }\n\n enqueueMutation(this, 'chil
dList', {\n addedNodes: nodes,\n removedNodes: createOneElementNod
eList(oldChildWrapper),\n nextSibling: nextNode,\n previousSibling
: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodes
WereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n
* Called after a node was inserted. Subclasses override this to invalidate\n
* the renderer as needed.\n * @private\n */\n nodeIsInserted_: fun
ction() {\n for (var child = this.firstChild; child; child = child.nextSibl
ing) {\n child.nodeIsInserted_();\n }\n },\n\n hasChildNodes:
function() {\n return this.firstChild !== null;\n },\n\n /** @type {N
ode} */\n get parentNode() {\n // If the parentNode has not been overrid
den, use the original parentNode.\n return this.parentNode_ !== undefined ?
\n this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);\n },\n\n
/** @type {Node} */\n get firstChild() {\n return this.firstChild_ !=
= undefined ?\n this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
\n },\n\n /** @type {Node} */\n get lastChild() {\n return this.la
stChild_ !== undefined ?\n this.lastChild_ : wrap(unsafeUnwrap(this).la
stChild);\n },\n\n /** @type {Node} */\n get nextSibling() {\n ret
urn this.nextSibling_ !== undefined ?\n this.nextSibling_ : wrap(unsafe
Unwrap(this).nextSibling);\n },\n\n /** @type {Node} */\n get previousS
ibling() {\n return this.previousSibling_ !== undefined ?\n this.p
reviousSibling_ : wrap(unsafeUnwrap(this).previousSibling);\n },\n\n get p
arentElement() {\n var p = this.parentNode;\n while (p && p.nodeType !
== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n
},\n\n get textContent() {\n // TODO(arv): This should fallback to uns
afeUnwrap(this).textContent if there\n // are no shadow trees below or abov
e the context node.\n var s = '';\n for (var child = this.firstChild;
child; child = child.nextSibling) {\n if (child.nodeType != Node.COMMENT_
NODE) {\n s += child.textContent;\n }\n }\n return s;\
n },\n set textContent(textContent) {\n var removedNodes = snapshotNo
deList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n
removeAllChildNodes(this);\n if (textContent !== '') {\n var t
extNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);\n
this.appendChild(textNode);\n }\n } else {\n clearChildNod
es(this);\n unsafeUnwrap(this).textContent = textContent;\n }\n\n
var addedNodes = snapshotNodeList(this.childNodes);\n\n enqueueMutation(
this, 'childList', {\n addedNodes: addedNodes,\n removedNodes: rem
ovedNodes\n });\n\n nodesWereRemoved(removedNodes);\n nodesWereAd
ded(addedNodes, this);\n },\n\n get childNodes() {\n var wrapperList
= new NodeList();\n var i = 0;\n for (var child = this.firstChild; chi
ld; child = child.nextSibling) {\n wrapperList[i++] = child;\n }\n
wrapperList.length = i;\n return wrapperList;\n },\n\n cloneNode:
function(deep) {\n return cloneNode(this, deep);\n },\n\n contains:
function(child) {\n return contains(this, wrapIfNeeded(child));\n },\n\n
compareDocumentPosition: function(otherNode) {\n // This only wraps, it
therefore only operates on the composed DOM and not\n // the logical DOM.\
n return originalCompareDocumentPosition.call(unsafeUnwrap(this),\n
unwrapIfNeeded(otherNode));\n },\n\
n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes
);\n var remNodes = [];\n var s = '';\n var modNode;\n\n for
(var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n
odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n
this.removeNode(n);\n else if (!modNode)\n modNode = n
;\n else {\n s += n.data;\n remNodes.push(n);\n
}\n } else {\n if (modNode && remNodes.length) {\n
modNode.data += s;\n cleanupNodes(remNodes);\n }\n
remNodes = [];\n s = '';\n modNode = null;\n if
(n.childNodes.length)\n n.normalize();\n }\n }\n\n
// handle case where >1 text nodes are the last children\n if (modNode && r
emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n
}\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u
se a DocumentFragment as a base and then delete the properties of\n // Document
Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow
in some JS engines we recreate the prototype object.\n registerWrapper(Original
Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe
lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj
ect.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNode = clone
Node;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = nodeWasRem
oved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemoved = node
sWereRemoved;\n scope.originalInsertBefore = originalInsertBefore;\n scope.ori
ginalRemoveChild = originalRemoveChild;\n scope.snapshotNodeList = snapshotNode
List;\n scope.wrappers.Node = Node;\n\n})(window.ShadowDOMPolyfill);\n", |
97 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is governed by a BSD-style\n// license that can be found in the LIC
ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLCollection = scop
e.wrappers.HTMLCollection;\n var NodeList = scope.wrappers.NodeList;\n var get
TreeScope = scope.getTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var
wrap = scope.wrap;\n\n var originalDocumentQuerySelector = document.querySelec
tor;\n var originalElementQuerySelector = document.documentElement.querySelecto
r;\n\n var originalDocumentQuerySelectorAll = document.querySelectorAll;\n var
originalElementQuerySelectorAll = document.documentElement.querySelectorAll;\n\
n var originalDocumentGetElementsByTagName = document.getElementsByTagName;\n
var originalElementGetElementsByTagName = document.documentElement.getElementsBy
TagName;\n\n var originalDocumentGetElementsByTagNameNS = document.getElementsB
yTagNameNS;\n var originalElementGetElementsByTagNameNS = document.documentElem
ent.getElementsByTagNameNS;\n\n var OriginalElement = window.Element;\n var Or
iginalDocument = window.HTMLDocument || window.Document;\n\n function filterNod
eList(list, index, result, deep) {\n var wrappedItem = null;\n var root =
null;\n for (var i = 0, length = list.length; i < length; i++) {\n wrapp
edItem = wrap(list[i]);\n if (!deep && (root = getTreeScope(wrappedItem).ro
ot)) {\n if (root instanceof scope.wrappers.ShadowRoot) {\n cont
inue;\n }\n }\n result[index++] = wrappedItem;\n }\n\n re
turn index;\n }\n\n function shimSelector(selector) {\n return String(selec
tor).replace(/\\/deep\\//g, ' ');\n }\n\n function findOne(node, selector) {\n
var m, el = node.firstElementChild;\n while (el) {\n if (el.matches(
selector))\n return el;\n m = findOne(el, selector);\n if (m)\n
return m;\n el = el.nextElementSibling;\n }\n return null;\n
}\n\n function matchesSelector(el, selector) {\n return el.matches(selector
);\n }\n\n var XHTML_NS = 'http://www.w3.org/1999/xhtml';\n\n function matche
sTagName(el, localName, localNameLowerCase) {\n var ln = el.localName;\n r
eturn ln === localName ||\n ln === localNameLowerCase && el.namespaceURI
=== XHTML_NS;\n }\n\n function matchesEveryThing() {\n return true;\n }\n\
n function matchesLocalNameOnly(el, ns, localName) {\n return el.localName =
== localName;\n }\n\n function matchesNameSpace(el, ns) {\n return el.names
paceURI === ns;\n }\n\n function matchesLocalNameNS(el, ns, localName) {\n
return el.namespaceURI === ns && el.localName === localName;\n }\n\n function
findElements(node, index, result, p, arg0, arg1) {\n var el = node.firstEleme
ntChild;\n while (el) {\n if (p(el, arg0, arg1))\n result[index++
] = el;\n index = findElements(el, index, result, p, arg0, arg1);\n el
= el.nextElementSibling;\n }\n return index;\n }\n\n // find and findAl
l will only match Simple Selectors,\n // Structural Pseudo Classes are not guar
enteed to be correct\n // http://www.w3.org/TR/css3-selectors/#simple-selectors
\n\n function querySelectorAllFiltered(p, index, result, selector, deep) {\n
var target = unsafeUnwrap(this);\n var list;\n var root = getTreeScope(th
is).root;\n if (root instanceof scope.wrappers.ShadowRoot) {\n // We are
in the shadow tree and the logical tree is\n // going to be disconnected s
o we do a manual tree traversal\n return findElements(this, index, result,
p, selector, null);\n } else if (target instanceof OriginalElement) {\n
list = originalElementQuerySelectorAll.call(target, selector);\n } else if (t
arget instanceof OriginalDocument) {\n list = originalDocumentQuerySelector
All.call(target, selector);\n } else {\n // When we get a ShadowRoot the
logical tree is going to be disconnected\n // so we do a manual tree trave
rsal\n return findElements(this, index, result, p, selector, null);\n }\
n\n return filterNodeList(list, index, result, deep);\n }\n\n var Selectors
Interface = {\n querySelector: function(selector) {\n var shimmed = shim
Selector(selector);\n var deep = shimmed !== selector;\n selector = sh
immed;\n\n var target = unsafeUnwrap(this);\n var wrappedItem;\n
var root = getTreeScope(this).root;\n if (root instanceof scope.wrappers.Sh
adowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findOne(this, selector);\n } else if (target instanceof OriginalElement) {\
n wrappedItem = wrap(originalElementQuerySelector.call(target, selector))
;\n } else if (target instanceof OriginalDocument) {\n wrappedItem =
wrap(originalDocumentQuerySelector.call(target, selector));\n } else {\n
// When we get a ShadowRoot the logical tree is going to be disconnected\n
// so we do a manual tree traversal\n return findOne(this, select
or);\n }\n\n if (!wrappedItem) {\n // When the original query r
eturns nothing\n // we return nothing (to be consistent with the other wr
apped calls)\n return wrappedItem;\n } else if (!deep && (root = get
TreeScope(wrappedItem).root)) {\n if (root instanceof scope.wrappers.Shad
owRoot) {\n // When the original query returns an element in the Shadow
DOM\n // we must do a manual tree traversal\n return findOne(t
his, selector);\n }\n }\n\n return wrappedItem;\n },\n qu
erySelectorAll: function(selector) {\n var shimmed = shimSelector(selector)
;\n var deep = shimmed !== selector;\n selector = shimmed;\n\n va
r result = new NodeList();\n\n result.length = querySelectorAllFiltered.cal
l(this,\n matchesSelector,\n 0,\n result,\n
selector,\n deep);\n\n return result;\n }\n };\n\n function g
etElementsByTagNameFiltered(p, index, result, localName,\n
lowercase) {\n var target = unsafeUnwrap(this);\n var li
st;\n var root = getTreeScope(this).root;\n if (root instanceof scope.wrap
pers.ShadowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findElements(this, index, result, p, localName, lowercase);\n } else if (tar
get instanceof OriginalElement) {\n list = originalElementGetElementsByTagN
ame.call(target, localName,\n
lowercase);\n } else if (target instanceof OriginalDocument) {\n list
= originalDocumentGetElementsByTagName.call(target, localName,\n
lowercase);\n } else {\n // When
we get a ShadowRoot the logical tree is going to be disconnected\n // so w
e do a manual tree traversal\n return findElements(this, index, result, p,
localName, lowercase);\n }\n\n return filterNodeList(list, index, result,
false);\n }\n\n function getElementsByTagNameNSFiltered(p, index, result, ns,
localName) {\n var target = unsafeUnwrap(this);\n var list;\n var root
= getTreeScope(this).root;\n if (root instanceof scope.wrappers.ShadowRoot) {
\n // We are in the shadow tree and the logical tree is\n // going to
be disconnected so we do a manual tree traversal\n return findElements(this
, index, result, p, ns, localName);\n } else if (target instanceof OriginalEl
ement) {\n list = originalElementGetElementsByTagNameNS.call(target, ns, lo
calName);\n } else if (target instanceof OriginalDocument) {\n list = or
iginalDocumentGetElementsByTagNameNS.call(target, ns, localName);\n } else {\
n // When we get a ShadowRoot the logical tree is going to be disconnected\
n // so we do a manual tree traversal\n return findElements(this, inde
x, result, p, ns, localName);\n }\n\n return filterNodeList(list, index, r
esult, false);\n }\n\n var GetElementsByInterface = {\n getElementsByTagNam
e: function(localName) {\n var result = new HTMLCollection();\n var ma
tch = localName === '*' ? matchesEveryThing : matchesTagName;\n\n result.le
ngth = getElementsByTagNameFiltered.call(this,\n match,\n 0,\n
result,\n localName,\n localName.toLowerCase());\n\n
return result;\n },\n\n getElementsByClassName: function(className)
{\n // TODO(arv): Check className?\n return this.querySelectorAll('.'
+ className);\n },\n\n getElementsByTagNameNS: function(ns, localName) {\n
var result = new HTMLCollection();\n var match = null;\n\n if (n
s === '*') {\n match = localName === '*' ? matchesEveryThing : matchesLoc
alNameOnly;\n } else {\n match = localName === '*' ? matchesNameSpac
e : matchesLocalNameNS;\n }\n\n result.length = getElementsByTagNameNS
Filtered.call(this,\n match,\n 0,\n result,\n
ns || null,\n localName);\n\n return result;\n }\n };\n\n s
cope.GetElementsByInterface = GetElementsByInterface;\n scope.SelectorsInterfac
e = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n", | 97 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is governed by a BSD-style\n// license that can be found in the LIC
ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLCollection = scop
e.wrappers.HTMLCollection;\n var NodeList = scope.wrappers.NodeList;\n var get
TreeScope = scope.getTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var
wrap = scope.wrap;\n\n var originalDocumentQuerySelector = document.querySelec
tor;\n var originalElementQuerySelector = document.documentElement.querySelecto
r;\n\n var originalDocumentQuerySelectorAll = document.querySelectorAll;\n var
originalElementQuerySelectorAll = document.documentElement.querySelectorAll;\n\
n var originalDocumentGetElementsByTagName = document.getElementsByTagName;\n
var originalElementGetElementsByTagName = document.documentElement.getElementsBy
TagName;\n\n var originalDocumentGetElementsByTagNameNS = document.getElementsB
yTagNameNS;\n var originalElementGetElementsByTagNameNS = document.documentElem
ent.getElementsByTagNameNS;\n\n var OriginalElement = window.Element;\n var Or
iginalDocument = window.HTMLDocument || window.Document;\n\n function filterNod
eList(list, index, result, deep) {\n var wrappedItem = null;\n var root =
null;\n for (var i = 0, length = list.length; i < length; i++) {\n wrapp
edItem = wrap(list[i]);\n if (!deep && (root = getTreeScope(wrappedItem).ro
ot)) {\n if (root instanceof scope.wrappers.ShadowRoot) {\n cont
inue;\n }\n }\n result[index++] = wrappedItem;\n }\n\n re
turn index;\n }\n\n function shimSelector(selector) {\n return String(selec
tor).replace(/\\/deep\\//g, ' ');\n }\n\n function findOne(node, selector) {\n
var m, el = node.firstElementChild;\n while (el) {\n if (el.matches(
selector))\n return el;\n m = findOne(el, selector);\n if (m)\n
return m;\n el = el.nextElementSibling;\n }\n return null;\n
}\n\n function matchesSelector(el, selector) {\n return el.matches(selector
);\n }\n\n var XHTML_NS = 'http://www.w3.org/1999/xhtml';\n\n function matche
sTagName(el, localName, localNameLowerCase) {\n var ln = el.localName;\n r
eturn ln === localName ||\n ln === localNameLowerCase && el.namespaceURI
=== XHTML_NS;\n }\n\n function matchesEveryThing() {\n return true;\n }\n\
n function matchesLocalNameOnly(el, ns, localName) {\n return el.localName =
== localName;\n }\n\n function matchesNameSpace(el, ns) {\n return el.names
paceURI === ns;\n }\n\n function matchesLocalNameNS(el, ns, localName) {\n
return el.namespaceURI === ns && el.localName === localName;\n }\n\n function
findElements(node, index, result, p, arg0, arg1) {\n var el = node.firstEleme
ntChild;\n while (el) {\n if (p(el, arg0, arg1))\n result[index++
] = el;\n index = findElements(el, index, result, p, arg0, arg1);\n el
= el.nextElementSibling;\n }\n return index;\n }\n\n // find and findAl
l will only match Simple Selectors,\n // Structural Pseudo Classes are not guar
enteed to be correct\n // http://www.w3.org/TR/css3-selectors/#simple-selectors
\n\n function querySelectorAllFiltered(p, index, result, selector, deep) {\n
var target = unsafeUnwrap(this);\n var list;\n var root = getTreeScope(th
is).root;\n if (root instanceof scope.wrappers.ShadowRoot) {\n // We are
in the shadow tree and the logical tree is\n // going to be disconnected s
o we do a manual tree traversal\n return findElements(this, index, result,
p, selector, null);\n } else if (target instanceof OriginalElement) {\n
list = originalElementQuerySelectorAll.call(target, selector);\n } else if (t
arget instanceof OriginalDocument) {\n list = originalDocumentQuerySelector
All.call(target, selector);\n } else {\n // When we get a ShadowRoot the
logical tree is going to be disconnected\n // so we do a manual tree trave
rsal\n return findElements(this, index, result, p, selector, null);\n }\
n\n return filterNodeList(list, index, result, deep);\n }\n\n var Selectors
Interface = {\n querySelector: function(selector) {\n var shimmed = shim
Selector(selector);\n var deep = shimmed !== selector;\n selector = sh
immed;\n\n var target = unsafeUnwrap(this);\n var wrappedItem;\n
var root = getTreeScope(this).root;\n if (root instanceof scope.wrappers.Sh
adowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findOne(this, selector);\n } else if (target instanceof OriginalElement) {\
n wrappedItem = wrap(originalElementQuerySelector.call(target, selector))
;\n } else if (target instanceof OriginalDocument) {\n wrappedItem =
wrap(originalDocumentQuerySelector.call(target, selector));\n } else {\n
// When we get a ShadowRoot the logical tree is going to be disconnected\n
// so we do a manual tree traversal\n return findOne(this, select
or);\n }\n\n if (!wrappedItem) {\n // When the original query r
eturns nothing\n // we return nothing (to be consistent with the other wr
apped calls)\n return wrappedItem;\n } else if (!deep && (root = get
TreeScope(wrappedItem).root)) {\n if (root instanceof scope.wrappers.Shad
owRoot) {\n // When the original query returns an element in the Shadow
DOM\n // we must do a manual tree traversal\n return findOne(t
his, selector);\n }\n }\n\n return wrappedItem;\n },\n qu
erySelectorAll: function(selector) {\n var shimmed = shimSelector(selector)
;\n var deep = shimmed !== selector;\n selector = shimmed;\n\n va
r result = new NodeList();\n\n result.length = querySelectorAllFiltered.cal
l(this,\n matchesSelector,\n 0,\n result,\n
selector,\n deep);\n\n return result;\n }\n };\n\n function g
etElementsByTagNameFiltered(p, index, result, localName,\n
lowercase) {\n var target = unsafeUnwrap(this);\n var li
st;\n var root = getTreeScope(this).root;\n if (root instanceof scope.wrap
pers.ShadowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findElements(this, index, result, p, localName, lowercase);\n } else if (tar
get instanceof OriginalElement) {\n list = originalElementGetElementsByTagN
ame.call(target, localName,\n
lowercase);\n } else if (target instanceof OriginalDocument) {\n list
= originalDocumentGetElementsByTagName.call(target, localName,\n
lowercase);\n } else {\n // When
we get a ShadowRoot the logical tree is going to be disconnected\n // so w
e do a manual tree traversal\n return findElements(this, index, result, p,
localName, lowercase);\n }\n\n return filterNodeList(list, index, result,
false);\n }\n\n function getElementsByTagNameNSFiltered(p, index, result, ns,
localName) {\n var target = unsafeUnwrap(this);\n var list;\n var root
= getTreeScope(this).root;\n if (root instanceof scope.wrappers.ShadowRoot) {
\n // We are in the shadow tree and the logical tree is\n // going to
be disconnected so we do a manual tree traversal\n return findElements(this
, index, result, p, ns, localName);\n } else if (target instanceof OriginalEl
ement) {\n list = originalElementGetElementsByTagNameNS.call(target, ns, lo
calName);\n } else if (target instanceof OriginalDocument) {\n list = or
iginalDocumentGetElementsByTagNameNS.call(target, ns, localName);\n } else {\
n // When we get a ShadowRoot the logical tree is going to be disconnected\
n // so we do a manual tree traversal\n return findElements(this, inde
x, result, p, ns, localName);\n }\n\n return filterNodeList(list, index, r
esult, false);\n }\n\n var GetElementsByInterface = {\n getElementsByTagNam
e: function(localName) {\n var result = new HTMLCollection();\n var ma
tch = localName === '*' ? matchesEveryThing : matchesTagName;\n\n result.le
ngth = getElementsByTagNameFiltered.call(this,\n match,\n 0,\n
result,\n localName,\n localName.toLowerCase());\n\n
return result;\n },\n\n getElementsByClassName: function(className)
{\n // TODO(arv): Check className?\n return this.querySelectorAll('.'
+ className);\n },\n\n getElementsByTagNameNS: function(ns, localName) {\n
var result = new HTMLCollection();\n var match = null;\n\n if (n
s === '*') {\n match = localName === '*' ? matchesEveryThing : matchesLoc
alNameOnly;\n } else {\n match = localName === '*' ? matchesNameSpac
e : matchesLocalNameNS;\n }\n\n result.length = getElementsByTagNameNS
Filtered.call(this,\n match,\n 0,\n result,\n
ns || null,\n localName);\n\n return result;\n }\n };\n\n s
cope.GetElementsByInterface = GetElementsByInterface;\n scope.SelectorsInterfac
e = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n", |
98 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wra
ppers.NodeList;\n\n function forwardElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n retu
rn node;\n }\n\n function backwardsElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n
return node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild()
{\n return forwardElement(this.firstChild);\n },\n\n get lastElementC
hild() {\n return backwardsElement(this.lastChild);\n },\n\n get chil
dElementCount() {\n var count = 0;\n for (var child = this.firstElemen
tChild;\n child;\n child = child.nextElementSibling) {\n
count++;\n }\n return count;\n },\n\n get children() {\n
var wrapperList = new NodeList();\n var i = 0;\n for (var child = th
is.firstElementChild;\n child;\n child = child.nextElementSi
bling) {\n wrapperList[i++] = child;\n }\n wrapperList.length =
i;\n return wrapperList;\n },\n\n remove: function() {\n var p
= this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n\n
var ChildNodeInterface = {\n get nextElementSibling() {\n return forwar
dElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n
return backwardsElement(this.previousSibling);\n }\n };\n\n scope.ChildNod
eInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInterf
ace;\n\n})(window.ShadowDOMPolyfill);\n", | 98 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wra
ppers.NodeList;\n\n function forwardElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n retu
rn node;\n }\n\n function backwardsElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n
return node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild()
{\n return forwardElement(this.firstChild);\n },\n\n get lastElementC
hild() {\n return backwardsElement(this.lastChild);\n },\n\n get chil
dElementCount() {\n var count = 0;\n for (var child = this.firstElemen
tChild;\n child;\n child = child.nextElementSibling) {\n
count++;\n }\n return count;\n },\n\n get children() {\n
var wrapperList = new NodeList();\n var i = 0;\n for (var child = th
is.firstElementChild;\n child;\n child = child.nextElementSi
bling) {\n wrapperList[i++] = child;\n }\n wrapperList.length =
i;\n return wrapperList;\n },\n\n remove: function() {\n var p
= this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n\n
var ChildNodeInterface = {\n get nextElementSibling() {\n return forwar
dElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n
return backwardsElement(this.previousSibling);\n }\n };\n\n scope.ChildNod
eInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInterf
ace;\n\n})(window.ShadowDOMPolyfill);\n", |
99 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var ChildNodeInterface =
scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMuta
tion = scope.enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper
= scope.registerWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n\n var Ori
ginalCharacterData = window.CharacterData;\n\n function CharacterData(node) {\n
Node.call(this, node);\n }\n CharacterData.prototype = Object.create(Node.
prototype);\n mixin(CharacterData.prototype, {\n get textContent() {\n
return this.data;\n },\n set textContent(value) {\n this.data = value
;\n },\n get data() {\n return unsafeUnwrap(this).data;\n },\n
set data(value) {\n var oldValue = unsafeUnwrap(this).data;\n enqueueM
utation(this, 'characterData', {\n oldValue: oldValue\n });\n u
nsafeUnwrap(this).data = value;\n }\n });\n\n mixin(CharacterData.prototype
, ChildNodeInterface);\n\n registerWrapper(OriginalCharacterData, CharacterData
,\n document.createTextNode(''));\n\n scope.wrappers.Character
Data = CharacterData;\n})(window.ShadowDOMPolyfill);\n", | 99 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var ChildNodeInterface =
scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMuta
tion = scope.enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper
= scope.registerWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n\n var Ori
ginalCharacterData = window.CharacterData;\n\n function CharacterData(node) {\n
Node.call(this, node);\n }\n CharacterData.prototype = Object.create(Node.
prototype);\n mixin(CharacterData.prototype, {\n get textContent() {\n
return this.data;\n },\n set textContent(value) {\n this.data = value
;\n },\n get data() {\n return unsafeUnwrap(this).data;\n },\n
set data(value) {\n var oldValue = unsafeUnwrap(this).data;\n enqueueM
utation(this, 'characterData', {\n oldValue: oldValue\n });\n u
nsafeUnwrap(this).data = value;\n }\n });\n\n mixin(CharacterData.prototype
, ChildNodeInterface);\n\n registerWrapper(OriginalCharacterData, CharacterData
,\n document.createTextNode(''));\n\n scope.wrappers.Character
Data = CharacterData;\n})(window.ShadowDOMPolyfill);\n", |
100 "// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var CharacterData = scop
e.wrappers.CharacterData;\n var enqueueMutation = scope.enqueueMutation;\n var
mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n\n funct
ion toUInt32(x) {\n return x >>> 0;\n }\n\n var OriginalText = window.Text;
\n\n function Text(node) {\n CharacterData.call(this, node);\n }\n Text.pr
ototype = Object.create(CharacterData.prototype);\n mixin(Text.prototype, {\n
splitText: function(offset) {\n offset = toUInt32(offset);\n var s =
this.data;\n if (offset > s.length)\n throw new Error('IndexSizeErr
or');\n var head = s.slice(0, offset);\n var tail = s.slice(offset);\n
this.data = head;\n var newTextNode = this.ownerDocument.createTextNo
de(tail);\n if (this.parentNode)\n this.parentNode.insertBefore(newT
extNode, this.nextSibling);\n return newTextNode;\n }\n });\n\n regist
erWrapper(OriginalText, Text, document.createTextNode(''));\n\n scope.wrappers.
Text = Text;\n})(window.ShadowDOMPolyfill);\n", | 100 "// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var CharacterData = scop
e.wrappers.CharacterData;\n var enqueueMutation = scope.enqueueMutation;\n var
mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n\n funct
ion toUInt32(x) {\n return x >>> 0;\n }\n\n var OriginalText = window.Text;
\n\n function Text(node) {\n CharacterData.call(this, node);\n }\n Text.pr
ototype = Object.create(CharacterData.prototype);\n mixin(Text.prototype, {\n
splitText: function(offset) {\n offset = toUInt32(offset);\n var s =
this.data;\n if (offset > s.length)\n throw new Error('IndexSizeErr
or');\n var head = s.slice(0, offset);\n var tail = s.slice(offset);\n
this.data = head;\n var newTextNode = this.ownerDocument.createTextNo
de(tail);\n if (this.parentNode)\n this.parentNode.insertBefore(newT
extNode, this.nextSibling);\n return newTextNode;\n }\n });\n\n regist
erWrapper(OriginalText, Text, document.createTextNode(''));\n\n scope.wrappers.
Text = Text;\n})(window.ShadowDOMPolyfill);\n", |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
Old versions of iOS do not have bind.\n\nif (!Function.prototype.bind) {\n Func
tion.prototype.bind = function(scope) {\n var self = this;\n var args = Ar
ray.prototype.slice.call(arguments, 1);\n return function() {\n var args
2 = args.slice();\n args2.push.apply(args2, arguments);\n return self.
apply(scope, args2);\n };\n };\n}\n\n})(window.Platform);\n", | 141 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
Old versions of iOS do not have bind.\n\nif (!Function.prototype.bind) {\n Func
tion.prototype.bind = function(scope) {\n var self = this;\n var args = Ar
ray.prototype.slice.call(arguments, 1);\n return function() {\n var args
2 = args.slice();\n args2.push.apply(args2, arguments);\n return self.
apply(scope, args2);\n };\n };\n}\n\n})(window.Platform);\n", |
142 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(global) {\n\n var registrationsTable = new We
akMap();\n\n // We use setImmediate or postMessage for our future callback.\n
var setImmediate = window.msSetImmediate;\n\n // Use post message to emulate se
tImmediate.\n if (!setImmediate) {\n var setImmediateQueue = [];\n var se
ntinel = String(Math.random());\n window.addEventListener('message', function
(e) {\n if (e.data === sentinel) {\n var queue = setImmediateQueue;\
n setImmediateQueue = [];\n queue.forEach(function(func) {\n
func();\n });\n }\n });\n setImmediate = function(func) {\
n setImmediateQueue.push(func);\n window.postMessage(sentinel, '*');\n
};\n }\n\n // This is used to ensure that we never schedule 2 callas to se
tImmediate\n var isScheduled = false;\n\n // Keep track of observers that need
s to be notified next time.\n var scheduledObservers = [];\n\n /**\n * Sched
ules |dispatchCallback| to be called in the future.\n * @param {MutationObserv
er} observer\n */\n function scheduleCallback(observer) {\n scheduledObser
vers.push(observer);\n if (!isScheduled) {\n isScheduled = true;\n
setImmediate(dispatchCallbacks);\n }\n }\n\n function wrapIfNeeded(node) {\
n return window.ShadowDOMPolyfill &&\n window.ShadowDOMPolyfill.wrapIf
Needed(node) ||\n node;\n }\n\n function dispatchCallbacks() {\n //
http://dom.spec.whatwg.org/#mutation-observers\n\n isScheduled = false; // Us
ed to allow a new setImmediate call above.\n\n var observers = scheduledObser
vers;\n scheduledObservers = [];\n // Sort observers based on their creati
on UID (incremental).\n observers.sort(function(o1, o2) {\n return o1.ui
d_ - o2.uid_;\n });\n\n var anyNonEmpty = false;\n observers.forEach(fu
nction(observer) {\n\n // 2.1, 2.2\n var queue = observer.takeRecords(
);\n // 2.3. Remove all transient registered observers whose observer is mo
.\n removeTransientObserversFor(observer);\n\n // 2.4\n if (queue
.length) {\n observer.callback_(queue, observer);\n anyNonEmpty =
true;\n }\n });\n\n // 3.\n if (anyNonEmpty)\n dispatchCallba
cks();\n }\n\n function removeTransientObserversFor(observer) {\n observer.
nodes_.forEach(function(node) {\n var registrations = registrationsTable.ge
t(node);\n if (!registrations)\n return;\n registrations.forEac
h(function(registration) {\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n });\n });\n }\n\n /*
*\n * This function is used for the \"For each registered observer observer (w
ith\n * observer's options as options) in target's list of registered observer
s,\n * run these substeps:\" and the \"For each ancestor ancestor of target, a
nd for\n * each registered observer observer (with options options) in ancesto
r's list\n * of registered observers, run these substeps:\" part of the algori
thms. The\n * |options.subtree| is checked to ensure that the callback is call
ed\n * correctly.\n *\n * @param {Node} target\n * @param {function(Muta
tionObserverInit):MutationRecord} callback\n */\n function forEachAncestorAnd
ObserverEnqueueRecord(target, callback) {\n for (var node = target; node; nod
e = node.parentNode) {\n var registrations = registrationsTable.get(node);\
n\n if (registrations) {\n for (var j = 0; j < registrations.length;
j++) {\n var registration = registrations[j];\n var options =
registration.options;\n\n // Only target ignores subtree.\n i
f (node !== target && !options.subtree)\n continue;\n\n var
record = callback(options);\n if (record)\n registration.enq
ueue(record);\n }\n }\n }\n }\n\n var uidCounter = 0;\n\n /**\
n * The class that maps to the DOM MutationObserver interface.\n * @param {F
unction} callback.\n * @constructor\n */\n function JsMutationObserver(call
back) {\n this.callback_ = callback;\n this.nodes_ = [];\n this.records
_ = [];\n this.uid_ = ++uidCounter;\n }\n\n JsMutationObserver.prototype =
{\n observe: function(target, options) {\n target = wrapIfNeeded(target)
;\n\n // 1.1\n if (!options.childList && !options.attributes && !optio
ns.characterData ||\n\n // 1.2\n options.attributeOldValue &&
!options.attributes ||\n\n // 1.3\n options.attributeFilter &&
options.attributeFilter.length &&\n !options.attributes ||\n\n
// 1.4\n options.characterDataOldValue && !options.characterData)
{\n\n throw new SyntaxError();\n }\n\n var registrations = reg
istrationsTable.get(target);\n if (!registrations)\n registrationsTa
ble.set(target, registrations = []);\n\n // 2\n // If target's list of
registered observers already includes a registered\n // observer associate
d with the context object, replace that registered\n // observer's options
with options.\n var registration;\n for (var i = 0; i < registrations.
length; i++) {\n if (registrations[i].observer === this) {\n reg
istration = registrations[i];\n registration.removeListeners();\n
registration.options = options;\n break;\n }\n }\n\n
// 3.\n // Otherwise, add a new registered observer to target's list of
registered\n // observers with the context object as the observer and optio
ns as the\n // options, and add target to context object's list of nodes on
which it\n // is registered.\n if (!registration) {\n registra
tion = new Registration(this, target, options);\n registrations.push(regi
stration);\n this.nodes_.push(target);\n }\n\n registration.add
Listeners();\n },\n\n disconnect: function() {\n this.nodes_.forEach(
function(node) {\n var registrations = registrationsTable.get(node);\n
for (var i = 0; i < registrations.length; i++) {\n var registratio
n = registrations[i];\n if (registration.observer === this) {\n
registration.removeListeners();\n registrations.splice(i, 1);\n
// Each node can only have one registered observer associated with\n
// this observer.\n break;\n }\n }\n }
, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n
var copyOfRecords = this.records_;\n this.records_ = [];\n return
copyOfRecords;\n }\n };\n\n /**\n * @param {string} type\n * @param {No
de} target\n * @constructor\n */\n function MutationRecord(type, target) {\
n this.type = type;\n this.target = target;\n this.addedNodes = [];\n
this.removedNodes = [];\n this.previousSibling = null;\n this.nextSiblin
g = null;\n this.attributeName = null;\n this.attributeNamespace = null;\n
this.oldValue = null;\n }\n\n function copyMutationRecord(original) {\n
var record = new MutationRecord(original.type, original.target);\n record.ad
dedNodes = original.addedNodes.slice();\n record.removedNodes = original.remo
vedNodes.slice();\n record.previousSibling = original.previousSibling;\n r
ecord.nextSibling = original.nextSibling;\n record.attributeName = original.a
ttributeName;\n record.attributeNamespace = original.attributeNamespace;\n
record.oldValue = original.oldValue;\n return record;\n };\n\n // We keep
track of the two (possibly one) records used in a single mutation.\n var curren
tRecord, recordWithOldValue;\n\n /**\n * Creates a record without |oldValue|
and caches it as |currentRecord| for\n * later use.\n * @param {string} oldV
alue\n * @return {MutationRecord}\n */\n function getRecord(type, target) {
\n return currentRecord = new MutationRecord(type, target);\n }\n\n /**\n
* Gets or creates a record with |oldValue| based in the |currentRecord|\n * @
param {string} oldValue\n * @return {MutationRecord}\n */\n function getRec
ordWithOldValue(oldValue) {\n if (recordWithOldValue)\n return recordWit
hOldValue;\n recordWithOldValue = copyMutationRecord(currentRecord);\n rec
ordWithOldValue.oldValue = oldValue;\n return recordWithOldValue;\n }\n\n f
unction clearRecords() {\n currentRecord = recordWithOldValue = undefined;\n
}\n\n /**\n * @param {MutationRecord} record\n * @return {boolean} Whether
the record represents a record from the current\n * mutation event.\n */\n
function recordRepresentsCurrentMutation(record) {\n return record === recor
dWithOldValue || record === currentRecord;\n }\n\n /**\n * Selects which rec
ord, if any, to replace the last record in the queue.\n * This returns |null|
if no record should be replaced.\n *\n * @param {MutationRecord} lastRecord\
n * @param {MutationRecord} newRecord\n * @param {MutationRecord}\n */\n
function selectRecord(lastRecord, newRecord) {\n if (lastRecord === newRecord
)\n return lastRecord;\n\n // Check if the the record we are adding repr
esents the same record. If\n // so, we keep the one with the oldValue in it.\
n if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord))\n
return recordWithOldValue;\n\n return null;\n }\n\n /**\n * Class used
to represent a registered observer.\n * @param {MutationObserver} observer\n
* @param {Node} target\n * @param {MutationObserverInit} options\n * @cons
tructor\n */\n function Registration(observer, target, options) {\n this.o
bserver = observer;\n this.target = target;\n this.options = options;\n
this.transientObservedNodes = [];\n }\n\n Registration.prototype = {\n enq
ueue: function(record) {\n var records = this.observer.records_;\n var
length = records.length;\n\n // There are cases where we replace the last
record with the new record.\n // For example if the record represents the s
ame mutation we need to use\n // the one with the oldValue. If we get same
record (this can happen as we\n // walk up the tree) we ignore the new reco
rd.\n if (records.length > 0) {\n var lastRecord = records[length -
1];\n var recordToReplaceLast = selectRecord(lastRecord, record);\n
if (recordToReplaceLast) {\n records[length - 1] = recordToReplaceLas
t;\n return;\n }\n } else {\n scheduleCallback(this.
observer);\n }\n\n records[length] = record;\n },\n\n addListene
rs: function() {\n this.addListeners_(this.target);\n },\n\n addListe
ners_: function(node) {\n var options = this.options;\n if (options.at
tributes)\n node.addEventListener('DOMAttrModified', this, true);\n\n
if (options.characterData)\n node.addEventListener('DOMCharacterDataMod
ified', this, true);\n\n if (options.childList)\n node.addEventListe
ner('DOMNodeInserted', this, true);\n\n if (options.childList || options.su
btree)\n node.addEventListener('DOMNodeRemoved', this, true);\n },\n\n
removeListeners: function() {\n this.removeListeners_(this.target);\n
},\n\n removeListeners_: function(node) {\n var options = this.options
;\n if (options.attributes)\n node.removeEventListener('DOMAttrModif
ied', this, true);\n\n if (options.characterData)\n node.removeEvent
Listener('DOMCharacterDataModified', this, true);\n\n if (options.childList
)\n node.removeEventListener('DOMNodeInserted', this, true);\n\n if
(options.childList || options.subtree)\n node.removeEventListener('DOMNod
eRemoved', this, true);\n },\n\n /**\n * Adds a transient observer on
node. The transient observer gets removed\n * next time we deliver the chang
e records.\n * @param {Node} node\n */\n addTransientObserver: functi
on(node) {\n // Don't add transient observers on the target itself. We alre
ady have all\n // the required listeners set up on the target.\n if (n
ode === this.target)\n return;\n\n this.addListeners_(node);\n
this.transientObservedNodes.push(node);\n var registrations = registrations
Table.get(node);\n if (!registrations)\n registrationsTable.set(node
, registrations = []);\n\n // We know that registrations does not contain t
his because we already\n // checked if node === this.target.\n registr
ations.push(this);\n },\n\n removeTransientObservers: function() {\n
var transientObservedNodes = this.transientObservedNodes;\n this.transientO
bservedNodes = [];\n\n transientObservedNodes.forEach(function(node) {\n
// Transient observers are never added to the target.\n this.removeL
isteners_(node);\n\n var registrations = registrationsTable.get(node);\n
for (var i = 0; i < registrations.length; i++) {\n if (registrat
ions[i] === this) {\n registrations.splice(i, 1);\n // Eac
h node can only have one registered observer associated with\n // thi
s observer.\n break;\n }\n }\n }, this);\n },
\n\n handleEvent: function(e) {\n // Stop propagation since we are manag
ing the propagation manually.\n // This means that other mutation events on
the page will not work\n // correctly but that is by design.\n e.stop
ImmediatePropagation();\n\n switch (e.type) {\n case 'DOMAttrModifie
d':\n // http://dom.spec.whatwg.org/#concept-mo-queue-attributes\n\n
var name = e.attrName;\n var namespace = e.relatedNode.namespace
URI;\n var target = e.target;\n\n // 1.\n var record
= new getRecord('attributes', target);\n record.attributeName = name;\n
record.attributeNamespace = namespace;\n\n // 2.\n v
ar oldValue =\n e.attrChange === MutationEvent.ADDITION ? null : e.
prevValue;\n\n forEachAncestorAndObserverEnqueueRecord(target, function
(options) {\n // 3.1, 4.2\n if (!options.attributes)\n
return;\n\n // 3.2, 4.3\n if (options.attributeF
ilter && options.attributeFilter.length &&\n options.attributeFil
ter.indexOf(name) === -1 &&\n options.attributeFilter.indexOf(nam
espace) === -1) {\n return;\n }\n // 3.3, 4.4
\n if (options.attributeOldValue)\n return getRecordWith
OldValue(oldValue);\n\n // 3.4, 4.5\n return record;\n
});\n\n break;\n\n case 'DOMCharacterDataModified':\n
// http://dom.spec.whatwg.org/#concept-mo-queue-characterdata\n va
r target = e.target;\n\n // 1.\n var record = getRecord('chara
cterData', target);\n\n // 2.\n var oldValue = e.prevValue;\n\
n\n forEachAncestorAndObserverEnqueueRecord(target, function(options) {
\n // 3.1, 4.2\n if (!options.characterData)\n
return;\n\n // 3.2, 4.3\n if (options.characterDataOldVa
lue)\n return getRecordWithOldValue(oldValue);\n\n // 3.
3, 4.4\n return record;\n });\n\n break;\n\n
case 'DOMNodeRemoved':\n this.addTransientObserver(e.target);\n
// Fall through.\n case 'DOMNodeInserted':\n // http://dom.sp
ec.whatwg.org/#concept-mo-queue-childlist\n var target = e.relatedNode;
\n var changedNode = e.target;\n var addedNodes, removedNodes;
\n if (e.type === 'DOMNodeInserted') {\n addedNodes = [chang
edNode];\n removedNodes = [];\n } else {\n\n adde
dNodes = [];\n removedNodes = [changedNode];\n }\n
var previousSibling = changedNode.previousSibling;\n var nextSibling =
changedNode.nextSibling;\n\n // 1.\n var record = getRecord('c
hildList', target);\n record.addedNodes = addedNodes;\n record
.removedNodes = removedNodes;\n record.previousSibling = previousSiblin
g;\n record.nextSibling = nextSibling;\n\n forEachAncestorAndO
bserverEnqueueRecord(target, function(options) {\n // 2.1, 3.2\n
if (!options.childList)\n return;\n\n // 2.2, 3.3
\n return record;\n });\n\n }\n\n clearRecords();\
n }\n };\n\n global.JsMutationObserver = JsMutationObserver;\n\n if (!glob
al.MutationObserver)\n global.MutationObserver = JsMutationObserver;\n\n\n})(
this);\n", | 142 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(global) {\n\n var registrationsTable = new We
akMap();\n\n // We use setImmediate or postMessage for our future callback.\n
var setImmediate = window.msSetImmediate;\n\n // Use post message to emulate se
tImmediate.\n if (!setImmediate) {\n var setImmediateQueue = [];\n var se
ntinel = String(Math.random());\n window.addEventListener('message', function
(e) {\n if (e.data === sentinel) {\n var queue = setImmediateQueue;\
n setImmediateQueue = [];\n queue.forEach(function(func) {\n
func();\n });\n }\n });\n setImmediate = function(func) {\
n setImmediateQueue.push(func);\n window.postMessage(sentinel, '*');\n
};\n }\n\n // This is used to ensure that we never schedule 2 callas to se
tImmediate\n var isScheduled = false;\n\n // Keep track of observers that need
s to be notified next time.\n var scheduledObservers = [];\n\n /**\n * Sched
ules |dispatchCallback| to be called in the future.\n * @param {MutationObserv
er} observer\n */\n function scheduleCallback(observer) {\n scheduledObser
vers.push(observer);\n if (!isScheduled) {\n isScheduled = true;\n
setImmediate(dispatchCallbacks);\n }\n }\n\n function wrapIfNeeded(node) {\
n return window.ShadowDOMPolyfill &&\n window.ShadowDOMPolyfill.wrapIf
Needed(node) ||\n node;\n }\n\n function dispatchCallbacks() {\n //
http://dom.spec.whatwg.org/#mutation-observers\n\n isScheduled = false; // Us
ed to allow a new setImmediate call above.\n\n var observers = scheduledObser
vers;\n scheduledObservers = [];\n // Sort observers based on their creati
on UID (incremental).\n observers.sort(function(o1, o2) {\n return o1.ui
d_ - o2.uid_;\n });\n\n var anyNonEmpty = false;\n observers.forEach(fu
nction(observer) {\n\n // 2.1, 2.2\n var queue = observer.takeRecords(
);\n // 2.3. Remove all transient registered observers whose observer is mo
.\n removeTransientObserversFor(observer);\n\n // 2.4\n if (queue
.length) {\n observer.callback_(queue, observer);\n anyNonEmpty =
true;\n }\n });\n\n // 3.\n if (anyNonEmpty)\n dispatchCallba
cks();\n }\n\n function removeTransientObserversFor(observer) {\n observer.
nodes_.forEach(function(node) {\n var registrations = registrationsTable.ge
t(node);\n if (!registrations)\n return;\n registrations.forEac
h(function(registration) {\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n });\n });\n }\n\n /*
*\n * This function is used for the \"For each registered observer observer (w
ith\n * observer's options as options) in target's list of registered observer
s,\n * run these substeps:\" and the \"For each ancestor ancestor of target, a
nd for\n * each registered observer observer (with options options) in ancesto
r's list\n * of registered observers, run these substeps:\" part of the algori
thms. The\n * |options.subtree| is checked to ensure that the callback is call
ed\n * correctly.\n *\n * @param {Node} target\n * @param {function(Muta
tionObserverInit):MutationRecord} callback\n */\n function forEachAncestorAnd
ObserverEnqueueRecord(target, callback) {\n for (var node = target; node; nod
e = node.parentNode) {\n var registrations = registrationsTable.get(node);\
n\n if (registrations) {\n for (var j = 0; j < registrations.length;
j++) {\n var registration = registrations[j];\n var options =
registration.options;\n\n // Only target ignores subtree.\n i
f (node !== target && !options.subtree)\n continue;\n\n var
record = callback(options);\n if (record)\n registration.enq
ueue(record);\n }\n }\n }\n }\n\n var uidCounter = 0;\n\n /**\
n * The class that maps to the DOM MutationObserver interface.\n * @param {F
unction} callback.\n * @constructor\n */\n function JsMutationObserver(call
back) {\n this.callback_ = callback;\n this.nodes_ = [];\n this.records
_ = [];\n this.uid_ = ++uidCounter;\n }\n\n JsMutationObserver.prototype =
{\n observe: function(target, options) {\n target = wrapIfNeeded(target)
;\n\n // 1.1\n if (!options.childList && !options.attributes && !optio
ns.characterData ||\n\n // 1.2\n options.attributeOldValue &&
!options.attributes ||\n\n // 1.3\n options.attributeFilter &&
options.attributeFilter.length &&\n !options.attributes ||\n\n
// 1.4\n options.characterDataOldValue && !options.characterData)
{\n\n throw new SyntaxError();\n }\n\n var registrations = reg
istrationsTable.get(target);\n if (!registrations)\n registrationsTa
ble.set(target, registrations = []);\n\n // 2\n // If target's list of
registered observers already includes a registered\n // observer associate
d with the context object, replace that registered\n // observer's options
with options.\n var registration;\n for (var i = 0; i < registrations.
length; i++) {\n if (registrations[i].observer === this) {\n reg
istration = registrations[i];\n registration.removeListeners();\n
registration.options = options;\n break;\n }\n }\n\n
// 3.\n // Otherwise, add a new registered observer to target's list of
registered\n // observers with the context object as the observer and optio
ns as the\n // options, and add target to context object's list of nodes on
which it\n // is registered.\n if (!registration) {\n registra
tion = new Registration(this, target, options);\n registrations.push(regi
stration);\n this.nodes_.push(target);\n }\n\n registration.add
Listeners();\n },\n\n disconnect: function() {\n this.nodes_.forEach(
function(node) {\n var registrations = registrationsTable.get(node);\n
for (var i = 0; i < registrations.length; i++) {\n var registratio
n = registrations[i];\n if (registration.observer === this) {\n
registration.removeListeners();\n registrations.splice(i, 1);\n
// Each node can only have one registered observer associated with\n
// this observer.\n break;\n }\n }\n }
, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n
var copyOfRecords = this.records_;\n this.records_ = [];\n return
copyOfRecords;\n }\n };\n\n /**\n * @param {string} type\n * @param {No
de} target\n * @constructor\n */\n function MutationRecord(type, target) {\
n this.type = type;\n this.target = target;\n this.addedNodes = [];\n
this.removedNodes = [];\n this.previousSibling = null;\n this.nextSiblin
g = null;\n this.attributeName = null;\n this.attributeNamespace = null;\n
this.oldValue = null;\n }\n\n function copyMutationRecord(original) {\n
var record = new MutationRecord(original.type, original.target);\n record.ad
dedNodes = original.addedNodes.slice();\n record.removedNodes = original.remo
vedNodes.slice();\n record.previousSibling = original.previousSibling;\n r
ecord.nextSibling = original.nextSibling;\n record.attributeName = original.a
ttributeName;\n record.attributeNamespace = original.attributeNamespace;\n
record.oldValue = original.oldValue;\n return record;\n };\n\n // We keep
track of the two (possibly one) records used in a single mutation.\n var curren
tRecord, recordWithOldValue;\n\n /**\n * Creates a record without |oldValue|
and caches it as |currentRecord| for\n * later use.\n * @param {string} oldV
alue\n * @return {MutationRecord}\n */\n function getRecord(type, target) {
\n return currentRecord = new MutationRecord(type, target);\n }\n\n /**\n
* Gets or creates a record with |oldValue| based in the |currentRecord|\n * @
param {string} oldValue\n * @return {MutationRecord}\n */\n function getRec
ordWithOldValue(oldValue) {\n if (recordWithOldValue)\n return recordWit
hOldValue;\n recordWithOldValue = copyMutationRecord(currentRecord);\n rec
ordWithOldValue.oldValue = oldValue;\n return recordWithOldValue;\n }\n\n f
unction clearRecords() {\n currentRecord = recordWithOldValue = undefined;\n
}\n\n /**\n * @param {MutationRecord} record\n * @return {boolean} Whether
the record represents a record from the current\n * mutation event.\n */\n
function recordRepresentsCurrentMutation(record) {\n return record === recor
dWithOldValue || record === currentRecord;\n }\n\n /**\n * Selects which rec
ord, if any, to replace the last record in the queue.\n * This returns |null|
if no record should be replaced.\n *\n * @param {MutationRecord} lastRecord\
n * @param {MutationRecord} newRecord\n * @param {MutationRecord}\n */\n
function selectRecord(lastRecord, newRecord) {\n if (lastRecord === newRecord
)\n return lastRecord;\n\n // Check if the the record we are adding repr
esents the same record. If\n // so, we keep the one with the oldValue in it.\
n if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord))\n
return recordWithOldValue;\n\n return null;\n }\n\n /**\n * Class used
to represent a registered observer.\n * @param {MutationObserver} observer\n
* @param {Node} target\n * @param {MutationObserverInit} options\n * @cons
tructor\n */\n function Registration(observer, target, options) {\n this.o
bserver = observer;\n this.target = target;\n this.options = options;\n
this.transientObservedNodes = [];\n }\n\n Registration.prototype = {\n enq
ueue: function(record) {\n var records = this.observer.records_;\n var
length = records.length;\n\n // There are cases where we replace the last
record with the new record.\n // For example if the record represents the s
ame mutation we need to use\n // the one with the oldValue. If we get same
record (this can happen as we\n // walk up the tree) we ignore the new reco
rd.\n if (records.length > 0) {\n var lastRecord = records[length -
1];\n var recordToReplaceLast = selectRecord(lastRecord, record);\n
if (recordToReplaceLast) {\n records[length - 1] = recordToReplaceLas
t;\n return;\n }\n } else {\n scheduleCallback(this.
observer);\n }\n\n records[length] = record;\n },\n\n addListene
rs: function() {\n this.addListeners_(this.target);\n },\n\n addListe
ners_: function(node) {\n var options = this.options;\n if (options.at
tributes)\n node.addEventListener('DOMAttrModified', this, true);\n\n
if (options.characterData)\n node.addEventListener('DOMCharacterDataMod
ified', this, true);\n\n if (options.childList)\n node.addEventListe
ner('DOMNodeInserted', this, true);\n\n if (options.childList || options.su
btree)\n node.addEventListener('DOMNodeRemoved', this, true);\n },\n\n
removeListeners: function() {\n this.removeListeners_(this.target);\n
},\n\n removeListeners_: function(node) {\n var options = this.options
;\n if (options.attributes)\n node.removeEventListener('DOMAttrModif
ied', this, true);\n\n if (options.characterData)\n node.removeEvent
Listener('DOMCharacterDataModified', this, true);\n\n if (options.childList
)\n node.removeEventListener('DOMNodeInserted', this, true);\n\n if
(options.childList || options.subtree)\n node.removeEventListener('DOMNod
eRemoved', this, true);\n },\n\n /**\n * Adds a transient observer on
node. The transient observer gets removed\n * next time we deliver the chang
e records.\n * @param {Node} node\n */\n addTransientObserver: functi
on(node) {\n // Don't add transient observers on the target itself. We alre
ady have all\n // the required listeners set up on the target.\n if (n
ode === this.target)\n return;\n\n this.addListeners_(node);\n
this.transientObservedNodes.push(node);\n var registrations = registrations
Table.get(node);\n if (!registrations)\n registrationsTable.set(node
, registrations = []);\n\n // We know that registrations does not contain t
his because we already\n // checked if node === this.target.\n registr
ations.push(this);\n },\n\n removeTransientObservers: function() {\n
var transientObservedNodes = this.transientObservedNodes;\n this.transientO
bservedNodes = [];\n\n transientObservedNodes.forEach(function(node) {\n
// Transient observers are never added to the target.\n this.removeL
isteners_(node);\n\n var registrations = registrationsTable.get(node);\n
for (var i = 0; i < registrations.length; i++) {\n if (registrat
ions[i] === this) {\n registrations.splice(i, 1);\n // Eac
h node can only have one registered observer associated with\n // thi
s observer.\n break;\n }\n }\n }, this);\n },
\n\n handleEvent: function(e) {\n // Stop propagation since we are manag
ing the propagation manually.\n // This means that other mutation events on
the page will not work\n // correctly but that is by design.\n e.stop
ImmediatePropagation();\n\n switch (e.type) {\n case 'DOMAttrModifie
d':\n // http://dom.spec.whatwg.org/#concept-mo-queue-attributes\n\n
var name = e.attrName;\n var namespace = e.relatedNode.namespace
URI;\n var target = e.target;\n\n // 1.\n var record
= new getRecord('attributes', target);\n record.attributeName = name;\n
record.attributeNamespace = namespace;\n\n // 2.\n v
ar oldValue =\n e.attrChange === MutationEvent.ADDITION ? null : e.
prevValue;\n\n forEachAncestorAndObserverEnqueueRecord(target, function
(options) {\n // 3.1, 4.2\n if (!options.attributes)\n
return;\n\n // 3.2, 4.3\n if (options.attributeF
ilter && options.attributeFilter.length &&\n options.attributeFil
ter.indexOf(name) === -1 &&\n options.attributeFilter.indexOf(nam
espace) === -1) {\n return;\n }\n // 3.3, 4.4
\n if (options.attributeOldValue)\n return getRecordWith
OldValue(oldValue);\n\n // 3.4, 4.5\n return record;\n
});\n\n break;\n\n case 'DOMCharacterDataModified':\n
// http://dom.spec.whatwg.org/#concept-mo-queue-characterdata\n va
r target = e.target;\n\n // 1.\n var record = getRecord('chara
cterData', target);\n\n // 2.\n var oldValue = e.prevValue;\n\
n\n forEachAncestorAndObserverEnqueueRecord(target, function(options) {
\n // 3.1, 4.2\n if (!options.characterData)\n
return;\n\n // 3.2, 4.3\n if (options.characterDataOldVa
lue)\n return getRecordWithOldValue(oldValue);\n\n // 3.
3, 4.4\n return record;\n });\n\n break;\n\n
case 'DOMNodeRemoved':\n this.addTransientObserver(e.target);\n
// Fall through.\n case 'DOMNodeInserted':\n // http://dom.sp
ec.whatwg.org/#concept-mo-queue-childlist\n var target = e.relatedNode;
\n var changedNode = e.target;\n var addedNodes, removedNodes;
\n if (e.type === 'DOMNodeInserted') {\n addedNodes = [chang
edNode];\n removedNodes = [];\n } else {\n\n adde
dNodes = [];\n removedNodes = [changedNode];\n }\n
var previousSibling = changedNode.previousSibling;\n var nextSibling =
changedNode.nextSibling;\n\n // 1.\n var record = getRecord('c
hildList', target);\n record.addedNodes = addedNodes;\n record
.removedNodes = removedNodes;\n record.previousSibling = previousSiblin
g;\n record.nextSibling = nextSibling;\n\n forEachAncestorAndO
bserverEnqueueRecord(target, function(options) {\n // 2.1, 3.2\n
if (!options.childList)\n return;\n\n // 2.2, 3.3
\n return record;\n });\n\n }\n\n clearRecords();\
n }\n };\n\n global.JsMutationObserver = JsMutationObserver;\n\n if (!glob
al.MutationObserver)\n global.MutationObserver = JsMutationObserver;\n\n\n})(
this);\n", |
143 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.HTMLImports = window
.HTMLImports || {flags:{}};", | 143 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.HTMLImports = window
.HTMLImports || {flags:{}};", |
144 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope) {\r\n\r\nvar hasNative = ('import' in document.createElement('link'));
\r\nvar useNative = hasNative;\r\n\r\nisIE = /Trident/.test(navigator.userAgent)
;\r\n\r\n// TODO(sorvell): SD polyfill intrusion\r\nvar hasShadowDOMPolyfill = B
oolean(window.ShadowDOMPolyfill);\r\nvar wrap = function(node) {\r\n return has
ShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node) : node;\r\n};\r\nvar ma
inDoc = wrap(document);\r\n \r\n// NOTE: We cannot polyfill document.currentS
cript because it's not possible\r\n// both to override and maintain the ability
to capture the native value;\r\n// therefore we choose to expose _currentScript
both when native imports\r\n// and the polyfill are in use.\r\nvar currentScript
Descriptor = {\r\n get: function() {\r\n var script = HTMLImports.currentScr
ipt || document.currentScript ||\r\n // NOTE: only works when called in s
ynchronously executing code.\r\n // readyState should check if `loading`
but IE10 is \r\n // interactive when scripts run so we cheat.\r\n
(document.readyState !== 'complete' ? \r\n document.scripts[document.scri
pts.length - 1] : null);\r\n return wrap(script);\r\n },\r\n configurable:
true\r\n};\r\n\r\nObject.defineProperty(document, '_currentScript', currentScrip
tDescriptor);\r\nObject.defineProperty(mainDoc, '_currentScript', currentScriptD
escriptor);\r\n\r\n// call a callback when all HTMLImports in the document at ca
ll (or at least\r\n// document ready) time have loaded.\r\n// 1. ensure the doc
ument is in a ready state (has dom), then \r\n// 2. watch for loading of imports
and call callback when done\r\nfunction whenImportsReady(callback, doc) {\r\n
doc = doc || mainDoc;\r\n // if document is loading, wait and try again\r\n wh
enDocumentReady(function() {\r\n watchImportsLoad(callback, doc);\r\n }, doc
);\r\n}\r\n\r\n// call the callback when the document is in a ready state (has d
om)\r\nvar requiredReadyState = isIE ? 'complete' : 'interactive';\r\nvar READY_
EVENT = 'readystatechange';\r\nfunction isDocumentReady(doc) {\r\n return (doc.
readyState === 'complete' ||\r\n doc.readyState === requiredReadyState);\r\
n}\r\n\r\n// call <callback> when we ensure the document is in a ready state\r\n
function whenDocumentReady(callback, doc) {\r\n if (!isDocumentReady(doc)) {\r\
n var checkReady = function() {\r\n if (doc.readyState === 'complete' ||
\r\n doc.readyState === requiredReadyState) {\r\n doc.removeEve
ntListener(READY_EVENT, checkReady);\r\n whenDocumentReady(callback, doc)
;\r\n }\r\n };\r\n doc.addEventListener(READY_EVENT, checkReady);\r\n
} else if (callback) {\r\n callback();\r\n }\r\n}\r\n\r\nfunction markTarg
etLoaded(event) {\r\n event.target.__loaded = true;\r\n}\r\n\r\n// call <callba
ck> when we ensure all imports have loaded\r\nfunction watchImportsLoad(callback
, doc) {\r\n var imports = doc.querySelectorAll('link[rel=import]');\r\n var l
oaded = 0, l = imports.length;\r\n function checkDone(d) { \r\n if (loaded =
= l) {\r\n callback && callback();\r\n }\r\n }\r\n function loadedImpo
rt(e) {\r\n markTargetLoaded(e);\r\n loaded++;\r\n checkDone();\r\n }\
r\n if (l) {\r\n for (var i=0, imp; (i<l) && (imp=imports[i]); i++) {\r\n
if (isImportLoaded(imp)) {\r\n loadedImport.call(imp, {target: imp});\
r\n } else {\r\n imp.addEventListener('load', loadedImport);\r\n
imp.addEventListener('error', loadedImport);\r\n }\r\n }\r\n } else
{\r\n checkDone();\r\n }\r\n}\r\n\r\n// NOTE: test for native imports loadi
ng is based on explicitly watching\r\n// all imports (see below).\r\n// We canno
t rely on this entirely without watching the entire document\r\n// for import li
nks. For perf reasons, currently only head is watched.\r\n// Instead, we fallbac
k to checking if the import property is available \r\n// and the document is not
itself loading. \r\nfunction isImportLoaded(link) {\r\n return useNative ? lin
k.__loaded || \r\n (link.import && link.import.readyState !== 'loading') :\
r\n link.__importParsed;\r\n}\r\n\r\n// TODO(sorvell): Workaround for \r\n/
/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=25007, should be removed when\r
\n// this bug is addressed.\r\n// (1) Install a mutation observer to see when HT
MLImports have loaded\r\n// (2) if this script is run during document load it wi
ll watch any existing\r\n// imports for loading.\r\n//\r\n// NOTE: The workaroun
d has restricted functionality: (1) it's only compatible\r\n// with imports that
are added to document.head since the mutation observer \r\n// watches only head
for perf reasons, (2) it requires this script\r\n// to run before any imports h
ave completed loading.\r\nif (useNative) {\r\n new MutationObserver(function(mx
ns) {\r\n for (var i=0, l=mxns.length, m; (i < l) && (m=mxns[i]); i++) {\r\n
if (m.addedNodes) {\r\n handleImports(m.addedNodes);\r\n }\r\n
}\r\n }).observe(document.head, {childList: true});\r\n\r\n function handle
Imports(nodes) {\r\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]);
i++) {\r\n if (isImport(n)) {\r\n handleImport(n); \r\n }\r\n
}\r\n }\r\n\r\n function isImport(element) {\r\n return element.localNam
e === 'link' && element.rel === 'import';\r\n }\r\n\r\n function handleImport(
element) {\r\n var loaded = element.import;\r\n if (loaded) {\r\n mar
kTargetLoaded({target: element});\r\n } else {\r\n element.addEventListe
ner('load', markTargetLoaded);\r\n element.addEventListener('error', markTa
rgetLoaded);\r\n }\r\n }\r\n\r\n // make sure to catch any imports that are
in the process of loading\r\n // when this script is run.\r\n (function() {\r
\n if (document.readyState === 'loading') {\r\n var imports = document.q
uerySelectorAll('link[rel=import]');\r\n for (var i=0, l=imports.length, im
p; (i<l) && (imp=imports[i]); i++) {\r\n handleImport(imp);\r\n }\r\
n }\r\n })();\r\n\r\n}\r\n\r\n// Fire the 'HTMLImportsLoaded' event when imp
orts in document at load time \r\n// have loaded. This event is required to simu
late the script blocking \r\n// behavior of native imports. A main document scri
pt that needs to be sure\r\n// imports have loaded should wait for this event.\r
\nwhenImportsReady(function() {\r\n HTMLImports.ready = true;\r\n HTMLImports.
readyTime = new Date().getTime();\r\n mainDoc.dispatchEvent(\r\n new CustomE
vent('HTMLImportsLoaded', {bubbles: true})\r\n );\r\n});\r\n\r\n// exports\r\ns
cope.useNative = useNative;\r\nscope.isImportLoaded = isImportLoaded;\r\nscope.w
henReady = whenImportsReady;\r\nscope.isIE = isIE;\r\n\r\n// deprecated\r\nscope
.whenImportsReady = whenImportsReady;\r\n\r\n})(window.HTMLImports);", | 144 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope) {\r\n\r\nvar hasNative = ('import' in document.createElement('link'));
\r\nvar useNative = hasNative;\r\n\r\nisIE = /Trident/.test(navigator.userAgent)
;\r\n\r\n// TODO(sorvell): SD polyfill intrusion\r\nvar hasShadowDOMPolyfill = B
oolean(window.ShadowDOMPolyfill);\r\nvar wrap = function(node) {\r\n return has
ShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node) : node;\r\n};\r\nvar ma
inDoc = wrap(document);\r\n \r\n// NOTE: We cannot polyfill document.currentS
cript because it's not possible\r\n// both to override and maintain the ability
to capture the native value;\r\n// therefore we choose to expose _currentScript
both when native imports\r\n// and the polyfill are in use.\r\nvar currentScript
Descriptor = {\r\n get: function() {\r\n var script = HTMLImports.currentScr
ipt || document.currentScript ||\r\n // NOTE: only works when called in s
ynchronously executing code.\r\n // readyState should check if `loading`
but IE10 is \r\n // interactive when scripts run so we cheat.\r\n
(document.readyState !== 'complete' ? \r\n document.scripts[document.scri
pts.length - 1] : null);\r\n return wrap(script);\r\n },\r\n configurable:
true\r\n};\r\n\r\nObject.defineProperty(document, '_currentScript', currentScrip
tDescriptor);\r\nObject.defineProperty(mainDoc, '_currentScript', currentScriptD
escriptor);\r\n\r\n// call a callback when all HTMLImports in the document at ca
ll (or at least\r\n// document ready) time have loaded.\r\n// 1. ensure the doc
ument is in a ready state (has dom), then \r\n// 2. watch for loading of imports
and call callback when done\r\nfunction whenImportsReady(callback, doc) {\r\n
doc = doc || mainDoc;\r\n // if document is loading, wait and try again\r\n wh
enDocumentReady(function() {\r\n watchImportsLoad(callback, doc);\r\n }, doc
);\r\n}\r\n\r\n// call the callback when the document is in a ready state (has d
om)\r\nvar requiredReadyState = isIE ? 'complete' : 'interactive';\r\nvar READY_
EVENT = 'readystatechange';\r\nfunction isDocumentReady(doc) {\r\n return (doc.
readyState === 'complete' ||\r\n doc.readyState === requiredReadyState);\r\
n}\r\n\r\n// call <callback> when we ensure the document is in a ready state\r\n
function whenDocumentReady(callback, doc) {\r\n if (!isDocumentReady(doc)) {\r\
n var checkReady = function() {\r\n if (doc.readyState === 'complete' ||
\r\n doc.readyState === requiredReadyState) {\r\n doc.removeEve
ntListener(READY_EVENT, checkReady);\r\n whenDocumentReady(callback, doc)
;\r\n }\r\n };\r\n doc.addEventListener(READY_EVENT, checkReady);\r\n
} else if (callback) {\r\n callback();\r\n }\r\n}\r\n\r\nfunction markTarg
etLoaded(event) {\r\n event.target.__loaded = true;\r\n}\r\n\r\n// call <callba
ck> when we ensure all imports have loaded\r\nfunction watchImportsLoad(callback
, doc) {\r\n var imports = doc.querySelectorAll('link[rel=import]');\r\n var l
oaded = 0, l = imports.length;\r\n function checkDone(d) { \r\n if (loaded =
= l) {\r\n callback && callback();\r\n }\r\n }\r\n function loadedImpo
rt(e) {\r\n markTargetLoaded(e);\r\n loaded++;\r\n checkDone();\r\n }\
r\n if (l) {\r\n for (var i=0, imp; (i<l) && (imp=imports[i]); i++) {\r\n
if (isImportLoaded(imp)) {\r\n loadedImport.call(imp, {target: imp});\
r\n } else {\r\n imp.addEventListener('load', loadedImport);\r\n
imp.addEventListener('error', loadedImport);\r\n }\r\n }\r\n } else
{\r\n checkDone();\r\n }\r\n}\r\n\r\n// NOTE: test for native imports loadi
ng is based on explicitly watching\r\n// all imports (see below).\r\n// We canno
t rely on this entirely without watching the entire document\r\n// for import li
nks. For perf reasons, currently only head is watched.\r\n// Instead, we fallbac
k to checking if the import property is available \r\n// and the document is not
itself loading. \r\nfunction isImportLoaded(link) {\r\n return useNative ? lin
k.__loaded || \r\n (link.import && link.import.readyState !== 'loading') :\
r\n link.__importParsed;\r\n}\r\n\r\n// TODO(sorvell): Workaround for \r\n/
/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=25007, should be removed when\r
\n// this bug is addressed.\r\n// (1) Install a mutation observer to see when HT
MLImports have loaded\r\n// (2) if this script is run during document load it wi
ll watch any existing\r\n// imports for loading.\r\n//\r\n// NOTE: The workaroun
d has restricted functionality: (1) it's only compatible\r\n// with imports that
are added to document.head since the mutation observer \r\n// watches only head
for perf reasons, (2) it requires this script\r\n// to run before any imports h
ave completed loading.\r\nif (useNative) {\r\n new MutationObserver(function(mx
ns) {\r\n for (var i=0, l=mxns.length, m; (i < l) && (m=mxns[i]); i++) {\r\n
if (m.addedNodes) {\r\n handleImports(m.addedNodes);\r\n }\r\n
}\r\n }).observe(document.head, {childList: true});\r\n\r\n function handle
Imports(nodes) {\r\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]);
i++) {\r\n if (isImport(n)) {\r\n handleImport(n); \r\n }\r\n
}\r\n }\r\n\r\n function isImport(element) {\r\n return element.localNam
e === 'link' && element.rel === 'import';\r\n }\r\n\r\n function handleImport(
element) {\r\n var loaded = element.import;\r\n if (loaded) {\r\n mar
kTargetLoaded({target: element});\r\n } else {\r\n element.addEventListe
ner('load', markTargetLoaded);\r\n element.addEventListener('error', markTa
rgetLoaded);\r\n }\r\n }\r\n\r\n // make sure to catch any imports that are
in the process of loading\r\n // when this script is run.\r\n (function() {\r
\n if (document.readyState === 'loading') {\r\n var imports = document.q
uerySelectorAll('link[rel=import]');\r\n for (var i=0, l=imports.length, im
p; (i<l) && (imp=imports[i]); i++) {\r\n handleImport(imp);\r\n }\r\
n }\r\n })();\r\n\r\n}\r\n\r\n// Fire the 'HTMLImportsLoaded' event when imp
orts in document at load time \r\n// have loaded. This event is required to simu
late the script blocking \r\n// behavior of native imports. A main document scri
pt that needs to be sure\r\n// imports have loaded should wait for this event.\r
\nwhenImportsReady(function() {\r\n HTMLImports.ready = true;\r\n HTMLImports.
readyTime = new Date().getTime();\r\n mainDoc.dispatchEvent(\r\n new CustomE
vent('HTMLImportsLoaded', {bubbles: true})\r\n );\r\n});\r\n\r\n// exports\r\ns
cope.useNative = useNative;\r\nscope.isImportLoaded = isImportLoaded;\r\nscope.w
henReady = whenImportsReady;\r\nscope.isIE = isIE;\r\n\r\n// deprecated\r\nscope
.whenImportsReady = whenImportsReady;\r\n\r\n})(window.HTMLImports);", |
145 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope) {\n\n //
imports\n var path = scope.path;\n var xhr = scope.xhr;\n var flags = scope.f
lags;\n\n // TODO(sorvell): this loader supports a dynamic list of urls\n // a
nd an oncomplete callback that is called when the loader is done.\n // The poly
fill currently does *not* need this dynamism or the onComplete\n // concept. Be
cause of this, the loader could be simplified quite a bit.\n var Loader = funct
ion(onLoad, onComplete) {\n this.cache = {};\n this.onload = onLoad;\n
this.oncomplete = onComplete;\n this.inflight = 0;\n this.pending = {};\n
};\n\n Loader.prototype = {\n addNodes: function(nodes) {\n // number
of transactions to complete\n this.inflight += nodes.length;\n // comm
ence transactions\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]);
i++) {\n this.require(n);\n }\n // anything to do?\n this
.checkDone();\n },\n addNode: function(node) {\n // number of transac
tions to complete\n this.inflight++;\n // commence transactions\n
this.require(node);\n // anything to do?\n this.checkDone();\n },\
n require: function(elt) {\n var url = elt.src || elt.href;\n // en
sure we have a standard url that can be used\n // reliably for deduping.\n
// TODO(sjmiles): ad-hoc\n elt.__nodeUrl = url;\n // deduplicatio
n\n if (!this.dedupe(url, elt)) {\n // fetch this resource\n
this.fetch(url, elt);\n }\n },\n dedupe: function(url, elt) {\n
if (this.pending[url]) {\n // add to list of nodes waiting for inUrl\n
this.pending[url].push(elt);\n // don't need fetch\n return t
rue;\n }\n var resource;\n if (this.cache[url]) {\n this.o
nload(url, elt, this.cache[url]);\n // finished this transaction\n
this.tail();\n // don't need fetch\n return true;\n }\n
// first node waiting for inUrl\n this.pending[url] = [elt];\n // nee
d fetch (not a dupe)\n return false;\n },\n fetch: function(url, elt)
{\n flags.load && console.log('fetch', url, elt);\n if (url.match(/^d
ata:/)) {\n // Handle Data URI Scheme\n var pieces = url.split(','
);\n var header = pieces[0];\n var body = pieces[1];\n if(h
eader.indexOf(';base64') > -1) {\n body = atob(body);\n } else {
\n body = decodeURIComponent(body);\n }\n setTimeout(func
tion() {\n this.receive(url, elt, null, body);\n }.bind(this),
0);\n } else {\n var receiveXhr = function(err, resource, redirecte
dUrl) {\n this.receive(url, elt, err, resource, redirectedUrl);\n
}.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(sorvell): b
locked on)\n // https://code.google.com/p/chromium/issues/detail?id=25722
1\n // xhr'ing for a document makes scripts in imports runnable; otherwis
e\n // they are not; however, it requires that we have doctype=html in\n
// the import which is unacceptable. This is only needed on Chrome\n
// to avoid the bug above.\n /*\n if (isDocumentLink(elt)) {\n
xhr.loadDocument(url, receiveXhr);\n } else {\n xhr.loa
d(url, receiveXhr);\n }\n */\n }\n },\n receive: functi
on(url, elt, err, resource, redirectedUrl) {\n this.cache[url] = resource;\
n var $p = this.pending[url];\n for (var i=0, l=$p.length, p; (i<l) &&
(p=$p[i]); i++) {\n // If url was redirected, use the redirected locatio
n so paths are\n // calculated relative to that.\n this.onload(url
, p, resource, err, redirectedUrl);\n this.tail();\n }\n this.p
ending[url] = null;\n },\n tail: function() {\n --this.inflight;\n
this.checkDone();\n },\n checkDone: function() {\n if (!this.infli
ght) {\n this.oncomplete();\n }\n }\n };\n\n xhr = xhr || {\n
async: true,\n ok: function(request) {\n return (request.status >= 200
&& request.status < 300)\n || (request.status === 304)\n || (
request.status === 0);\n },\n load: function(url, next, nextContext) {\n
var request = new XMLHttpRequest();\n if (scope.flags.debug || scope.fl
ags.bust) {\n url += '?' + Math.random();\n }\n request.open('G
ET', url, xhr.async);\n request.addEventListener('readystatechange', functi
on(e) {\n if (request.readyState === 4) {\n // Servers redirecti
ng an import can add a Location header to help us\n // polyfill correct
ly.\n var locationHeader = request.getResponseHeader(\"Location\");\n
var redirectedUrl = null;\n if (locationHeader) {\n
var redirectedUrl = (locationHeader.substr( 0, 1 ) === \"/\")\n ? l
ocation.origin + locationHeader // Location is a relative path\n :
locationHeader; // Full path\n }\n next.ca
ll(nextContext, !xhr.ok(request) && request,\n request.response ||
request.responseText, redirectedUrl);\n }\n });\n request.send(
);\n return request;\n },\n loadDocument: function(url, next, nextCon
text) {\n this.load(url, next, nextContext).responseType = 'document';\n
}\n };\n\n // exports\n scope.xhr = xhr;\n scope.Loader = Loader;\n\n})(win
dow.HTMLImports);\n", | 145 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope) {\n\n //
imports\n var path = scope.path;\n var xhr = scope.xhr;\n var flags = scope.f
lags;\n\n // TODO(sorvell): this loader supports a dynamic list of urls\n // a
nd an oncomplete callback that is called when the loader is done.\n // The poly
fill currently does *not* need this dynamism or the onComplete\n // concept. Be
cause of this, the loader could be simplified quite a bit.\n var Loader = funct
ion(onLoad, onComplete) {\n this.cache = {};\n this.onload = onLoad;\n
this.oncomplete = onComplete;\n this.inflight = 0;\n this.pending = {};\n
};\n\n Loader.prototype = {\n addNodes: function(nodes) {\n // number
of transactions to complete\n this.inflight += nodes.length;\n // comm
ence transactions\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]);
i++) {\n this.require(n);\n }\n // anything to do?\n this
.checkDone();\n },\n addNode: function(node) {\n // number of transac
tions to complete\n this.inflight++;\n // commence transactions\n
this.require(node);\n // anything to do?\n this.checkDone();\n },\
n require: function(elt) {\n var url = elt.src || elt.href;\n // en
sure we have a standard url that can be used\n // reliably for deduping.\n
// TODO(sjmiles): ad-hoc\n elt.__nodeUrl = url;\n // deduplicatio
n\n if (!this.dedupe(url, elt)) {\n // fetch this resource\n
this.fetch(url, elt);\n }\n },\n dedupe: function(url, elt) {\n
if (this.pending[url]) {\n // add to list of nodes waiting for inUrl\n
this.pending[url].push(elt);\n // don't need fetch\n return t
rue;\n }\n var resource;\n if (this.cache[url]) {\n this.o
nload(url, elt, this.cache[url]);\n // finished this transaction\n
this.tail();\n // don't need fetch\n return true;\n }\n
// first node waiting for inUrl\n this.pending[url] = [elt];\n // nee
d fetch (not a dupe)\n return false;\n },\n fetch: function(url, elt)
{\n flags.load && console.log('fetch', url, elt);\n if (url.match(/^d
ata:/)) {\n // Handle Data URI Scheme\n var pieces = url.split(','
);\n var header = pieces[0];\n var body = pieces[1];\n if(h
eader.indexOf(';base64') > -1) {\n body = atob(body);\n } else {
\n body = decodeURIComponent(body);\n }\n setTimeout(func
tion() {\n this.receive(url, elt, null, body);\n }.bind(this),
0);\n } else {\n var receiveXhr = function(err, resource, redirecte
dUrl) {\n this.receive(url, elt, err, resource, redirectedUrl);\n
}.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(sorvell): b
locked on)\n // https://code.google.com/p/chromium/issues/detail?id=25722
1\n // xhr'ing for a document makes scripts in imports runnable; otherwis
e\n // they are not; however, it requires that we have doctype=html in\n
// the import which is unacceptable. This is only needed on Chrome\n
// to avoid the bug above.\n /*\n if (isDocumentLink(elt)) {\n
xhr.loadDocument(url, receiveXhr);\n } else {\n xhr.loa
d(url, receiveXhr);\n }\n */\n }\n },\n receive: functi
on(url, elt, err, resource, redirectedUrl) {\n this.cache[url] = resource;\
n var $p = this.pending[url];\n for (var i=0, l=$p.length, p; (i<l) &&
(p=$p[i]); i++) {\n // If url was redirected, use the redirected locatio
n so paths are\n // calculated relative to that.\n this.onload(url
, p, resource, err, redirectedUrl);\n this.tail();\n }\n this.p
ending[url] = null;\n },\n tail: function() {\n --this.inflight;\n
this.checkDone();\n },\n checkDone: function() {\n if (!this.infli
ght) {\n this.oncomplete();\n }\n }\n };\n\n xhr = xhr || {\n
async: true,\n ok: function(request) {\n return (request.status >= 200
&& request.status < 300)\n || (request.status === 304)\n || (
request.status === 0);\n },\n load: function(url, next, nextContext) {\n
var request = new XMLHttpRequest();\n if (scope.flags.debug || scope.fl
ags.bust) {\n url += '?' + Math.random();\n }\n request.open('G
ET', url, xhr.async);\n request.addEventListener('readystatechange', functi
on(e) {\n if (request.readyState === 4) {\n // Servers redirecti
ng an import can add a Location header to help us\n // polyfill correct
ly.\n var locationHeader = request.getResponseHeader(\"Location\");\n
var redirectedUrl = null;\n if (locationHeader) {\n
var redirectedUrl = (locationHeader.substr( 0, 1 ) === \"/\")\n ? l
ocation.origin + locationHeader // Location is a relative path\n :
locationHeader; // Full path\n }\n next.ca
ll(nextContext, !xhr.ok(request) && request,\n request.response ||
request.responseText, redirectedUrl);\n }\n });\n request.send(
);\n return request;\n },\n loadDocument: function(url, next, nextCon
text) {\n this.load(url, next, nextContext).responseType = 'document';\n
}\n };\n\n // exports\n scope.xhr = xhr;\n scope.Loader = Loader;\n\n})(win
dow.HTMLImports);\n", |
146 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope) {\n\nvar I
MPORT_LINK_TYPE = 'import';\nvar flags = scope.flags;\nvar isIE = scope.isIE;\n/
/ TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ?
\n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n// importP
arser\n// highlander object to manage parsing of imports\n// parses import relat
ed elements\n// and ensures proper parse order\n// parse order is enforced by cr
awling the tree and monitoring which elements\n// have been parsed; async parsin
g is also supported.\n\n// highlander object for parsing a document tree\nvar im
portParser = {\n // parse selectors for main document elements\n documentSelec
tors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for import doc
ument elements\n importsSelectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']',
\n 'link[rel=stylesheet]',\n 'style',\n 'script:not([type])',\n 'scr
ipt[type=\"text/javascript\"]'\n ].join(','),\n map: {\n link: 'parseLink',
\n script: 'parseScript',\n style: 'parseStyle'\n },\n // try to parse t
he next import in the tree\n parseNext: function() {\n var next = this.nextT
oParse();\n if (next) {\n this.parse(next);\n }\n },\n parse: funct
ion(elt) {\n if (this.isParsed(elt)) {\n flags.parse && console.log('[%s
] is already parsed', elt.localName);\n return;\n }\n var fn = this[t
his.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\n fn.
call(this, elt);\n }\n },\n // only 1 element may be parsed at a time; pars
ing is async so each\n // parsing implementation must inform the system that pa
rsing is complete\n // via markParsingComplete.\n // To prompt the system to p
arse the next element, parseNext should then be\n // called.\n // Note, parseN
ext used to be included at the end of markParsingComplete, but\n // we must not
do this so that, for example, we can (1) mark parsing complete \n // then (2)
fire an import load event, and then (3) parse the next resource.\n markParsing:
function(elt) {\n flags.parse && console.log('parsing', elt);\n this.pars
ingElement = elt;\n },\n markParsingComplete: function(elt) {\n elt.__impor
tParsed = true;\n if (elt.__importElement) {\n elt.__importElement.__imp
ortParsed = true;\n }\n this.parsingElement = null;\n flags.parse && co
nsole.log('completed', elt);\n },\n invalidateParse: function(doc) {\n if (
doc && doc.__importLink) {\n doc.__importParsed = doc.__importLink.__import
Parsed = false;\n this.parseSoon();\n }\n },\n parseSoon: function() {
\n if (this._parseSoon) {\n cancelAnimationFrame(this._parseDelay);\n
}\n var parser = this;\n this._parseSoon = requestAnimationFrame(function
() {\n parser.parseNext();\n });\n },\n parseImport: function(elt) {\n
// TODO(sorvell): consider if there's a better way to do this;\n // expos
e an imports parsing hook; this is needed, for example, by the\n // CustomEle
ments polyfill.\n if (HTMLImports.__importsParsingHook) {\n HTMLImports.
__importsParsingHook(elt);\n }\n if (elt.import) {\n elt.import.__imp
ortParsed = true;\n }\n this.markParsingComplete(elt);\n // fire load e
vent\n if (elt.__resource && !elt.__error) {\n elt.dispatchEvent(new Cus
tomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEvent(
new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): worka
round for Safari addEventListener not working\n // for elements not in the ma
in document.\n if (elt.__pending) {\n var fn;\n while (elt.__pendin
g.length) {\n fn = elt.__pending.shift();\n if (fn) {\n f
n({target: elt});\n }\n }\n }\n this.parseNext();\n },\n par
seLink: function(linkElt) {\n if (nodeIsImport(linkElt)) {\n this.parseI
mport(linkElt);\n } else {\n // make href absolute\n linkElt.href =
linkElt.href;\n this.parseGeneric(linkElt);\n }\n },\n parseStyle: fu
nction(elt) {\n // TODO(sorvell): style element load event can just not fire
so clone styles\n var src = elt;\n elt = cloneStyle(elt);\n elt.__impor
tElement = src;\n this.parseGeneric(elt);\n },\n parseGeneric: function(elt
) {\n this.trackElement(elt);\n this.addElementToDocument(elt);\n },\n r
ootImportForElement: function(elt) {\n var n = elt;\n while (n.ownerDocume
nt.__importLink) {\n n = n.ownerDocument.__importLink;\n }\n return n
;\n },\n addElementToDocument: function(elt) {\n var port = this.rootImport
ForElement(elt.__importElement || elt);\n var l = port.__insertedElements = p
ort.__insertedElements || 0;\n var refNode = port.nextElementSibling;\n fo
r (var i=0; i < l; i++) {\n refNode = refNode && refNode.nextElementSibling
;\n }\n port.parentNode.insertBefore(elt, refNode);\n },\n // tracks whe
n a loadable element has loaded\n trackElement: function(elt, callback) {\n
var self = this;\n var done = function(e) {\n if (callback) {\n c
allback(e);\n }\n self.markParsingComplete(elt);\n self.parseNext
();\n };\n elt.addEventListener('load', done);\n elt.addEventListener('
error', done);\n\n // NOTE: IE does not fire \"load\" event for styles that h
ave already loaded\n // This is in violation of the spec, so we try our harde
st to work around it\n if (isIE && elt.localName === 'style') {\n var fa
keLoad = false;\n // If there's not @import in the textContent, assume it h
as loaded\n if (elt.textContent.indexOf('@import') == -1) {\n fakeLo
ad = true;\n // if we have a sheet, we have been parsed\n } else if (e
lt.sheet) {\n fakeLoad = true;\n var csr = elt.sheet.cssRules;\n
var len = csr ? csr.length : 0;\n // search the rules for @import's
\n for (var i = 0, r; (i < len) && (r = csr[i]); i++) {\n if (r.
type === CSSRule.IMPORT_RULE) {\n // if every @import has resolved, f
ake the load\n fakeLoad = fakeLoad && Boolean(r.styleSheet);\n
}\n }\n }\n // dispatch a fake load event and continue parsi
ng\n if (fakeLoad) {\n elt.dispatchEvent(new CustomEvent('load', {bu
bbles: false}));\n }\n }\n },\n // NOTE: execute scripts by injecting
them and watching for the load/error\n // event. Inline scripts are handled via
dataURL's because browsers tend to\n // provide correct parsing errors in this
case. If this has any compatibility\n // issues, we can switch to injecting th
e inline script with textContent.\n // Scripts with dataURL's do not appear to
generate load events and therefore\n // we assume they execute synchronously.\n
parseScript: function(scriptElt) {\n var script = document.createElement('s
cript');\n script.__importElement = scriptElt;\n script.src = scriptElt.sr
c ? scriptElt.src : \n generateScriptDataUrl(scriptElt);\n scope.curre
ntScript = scriptElt;\n this.trackElement(script, function(e) {\n script
.parentNode.removeChild(script);\n scope.currentScript = null; \n });\n
this.addElementToDocument(script);\n },\n // determine the next element in
the tree which should be parsed\n nextToParse: function() {\n this._mayPars
e = [];\n return !this.parsingElement && this.nextToParseInDoc(mainDoc);\n }
,\n nextToParseInDoc: function(doc, link) {\n // use `marParse` list to avoi
d looping into the same document again\n // since it could cause an iloop.\n
if (doc && this._mayParse.indexOf(doc) < 0) {\n this._mayParse.push(doc)
;\n var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));\n
for (var i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n
if (!this.isParsed(n)) {\n if (this.hasResource(n)) {\n retu
rn nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n;\n } else {
\n return;\n }\n }\n }\n }\n // all nodes
have been parsed, ready to parse import, if any\n return link;\n },\n // re
turn the set of parse selectors relevant for this node.\n parseSelectorsForNode
: function(node) {\n var doc = node.ownerDocument || node;\n return doc ==
= mainDoc ? this.documentSelectors : this.importsSelectors;\n },\n isParsed: f
unction(node) {\n return node.__importParsed;\n },\n hasResource: function(
node) {\n if (nodeIsImport(node) && (node.import === undefined)) {\n ret
urn false;\n }\n return true;\n }\n};\n\nfunction nodeIsImport(elt) {\n
return (elt.localName === 'link') && (elt.rel === IMPORT_LINK_TYPE);\n}\n\nfunct
ion generateScriptDataUrl(script) {\n var scriptContent = generateScriptContent
(script);\n return 'data:text/javascript;charset=utf-8,' + encodeURIComponent(s
criptContent);\n}\n\nfunction generateScriptContent(script) {\n return script.t
extContent + generateSourceMapHint(script);\n}\n\n// calculate source map hint\n
function generateSourceMapHint(script) {\n var moniker = script.__nodeUrl;\n i
f (!moniker) {\n moniker = script.ownerDocument.baseURI;\n // there could
be more than one script this url\n var tag = '[' + Math.floor((Math.random()+
1)*1000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we n
eed to allow \n // this sort of thing\n var matches = script.textContent.m
atch(/Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n
// tag the moniker\n moniker += '/' + tag + '.js';\n }\n return '\\n//# sou
rceURL=' + moniker + '\\n';\n}\n\n// style/stylesheet handling\n\n// clone style
with proper path resolution for main document\n// NOTE: styles are the only ele
ments that require direct path fixup.\nfunction cloneStyle(style) {\n var clone
= style.ownerDocument.createElement('style');\n clone.textContent = style.text
Content;\n path.resolveUrlsInStyle(clone);\n return clone;\n}\n\n// path fixup
: style elements in imports must be made relative to the main \n// document. We
fixup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;
\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n\nvar path =
{\n resolveUrlsInStyle: function(style) {\n var doc = style.ownerDocument;\n
var resolver = doc.createElement('a');\n style.textContent = this.resolve
UrlsInCssText(style.textContent, resolver);\n return style; \n },\n resolv
eUrlsInCssText: function(cssText, urlObj) {\n var r = this.replaceUrls(cssTex
t, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, CSS_IMPORT_REGE
XP);\n return r;\n },\n replaceUrls: function(text, urlObj, regexp) {\n
return text.replace(regexp, function(m, pre, url, post) {\n var urlPath = u
rl.replace(/[\"']/g, '');\n urlObj.href = urlPath;\n urlPath = urlObj.
href;\n return pre + '\\'' + urlPath + '\\'' + post;\n }); \n }\n}\n
\n// exports\nscope.parser = importParser;\nscope.path = path;\n\n})(HTMLImports
);\n", | 146 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope) {\n\nvar I
MPORT_LINK_TYPE = 'import';\nvar flags = scope.flags;\nvar isIE = scope.isIE;\n/
/ TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ?
\n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n// importP
arser\n// highlander object to manage parsing of imports\n// parses import relat
ed elements\n// and ensures proper parse order\n// parse order is enforced by cr
awling the tree and monitoring which elements\n// have been parsed; async parsin
g is also supported.\n\n// highlander object for parsing a document tree\nvar im
portParser = {\n // parse selectors for main document elements\n documentSelec
tors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for import doc
ument elements\n importsSelectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']',
\n 'link[rel=stylesheet]',\n 'style',\n 'script:not([type])',\n 'scr
ipt[type=\"text/javascript\"]'\n ].join(','),\n map: {\n link: 'parseLink',
\n script: 'parseScript',\n style: 'parseStyle'\n },\n // try to parse t
he next import in the tree\n parseNext: function() {\n var next = this.nextT
oParse();\n if (next) {\n this.parse(next);\n }\n },\n parse: funct
ion(elt) {\n if (this.isParsed(elt)) {\n flags.parse && console.log('[%s
] is already parsed', elt.localName);\n return;\n }\n var fn = this[t
his.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\n fn.
call(this, elt);\n }\n },\n // only 1 element may be parsed at a time; pars
ing is async so each\n // parsing implementation must inform the system that pa
rsing is complete\n // via markParsingComplete.\n // To prompt the system to p
arse the next element, parseNext should then be\n // called.\n // Note, parseN
ext used to be included at the end of markParsingComplete, but\n // we must not
do this so that, for example, we can (1) mark parsing complete \n // then (2)
fire an import load event, and then (3) parse the next resource.\n markParsing:
function(elt) {\n flags.parse && console.log('parsing', elt);\n this.pars
ingElement = elt;\n },\n markParsingComplete: function(elt) {\n elt.__impor
tParsed = true;\n if (elt.__importElement) {\n elt.__importElement.__imp
ortParsed = true;\n }\n this.parsingElement = null;\n flags.parse && co
nsole.log('completed', elt);\n },\n invalidateParse: function(doc) {\n if (
doc && doc.__importLink) {\n doc.__importParsed = doc.__importLink.__import
Parsed = false;\n this.parseSoon();\n }\n },\n parseSoon: function() {
\n if (this._parseSoon) {\n cancelAnimationFrame(this._parseDelay);\n
}\n var parser = this;\n this._parseSoon = requestAnimationFrame(function
() {\n parser.parseNext();\n });\n },\n parseImport: function(elt) {\n
// TODO(sorvell): consider if there's a better way to do this;\n // expos
e an imports parsing hook; this is needed, for example, by the\n // CustomEle
ments polyfill.\n if (HTMLImports.__importsParsingHook) {\n HTMLImports.
__importsParsingHook(elt);\n }\n if (elt.import) {\n elt.import.__imp
ortParsed = true;\n }\n this.markParsingComplete(elt);\n // fire load e
vent\n if (elt.__resource && !elt.__error) {\n elt.dispatchEvent(new Cus
tomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEvent(
new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): worka
round for Safari addEventListener not working\n // for elements not in the ma
in document.\n if (elt.__pending) {\n var fn;\n while (elt.__pendin
g.length) {\n fn = elt.__pending.shift();\n if (fn) {\n f
n({target: elt});\n }\n }\n }\n this.parseNext();\n },\n par
seLink: function(linkElt) {\n if (nodeIsImport(linkElt)) {\n this.parseI
mport(linkElt);\n } else {\n // make href absolute\n linkElt.href =
linkElt.href;\n this.parseGeneric(linkElt);\n }\n },\n parseStyle: fu
nction(elt) {\n // TODO(sorvell): style element load event can just not fire
so clone styles\n var src = elt;\n elt = cloneStyle(elt);\n elt.__impor
tElement = src;\n this.parseGeneric(elt);\n },\n parseGeneric: function(elt
) {\n this.trackElement(elt);\n this.addElementToDocument(elt);\n },\n r
ootImportForElement: function(elt) {\n var n = elt;\n while (n.ownerDocume
nt.__importLink) {\n n = n.ownerDocument.__importLink;\n }\n return n
;\n },\n addElementToDocument: function(elt) {\n var port = this.rootImport
ForElement(elt.__importElement || elt);\n var l = port.__insertedElements = p
ort.__insertedElements || 0;\n var refNode = port.nextElementSibling;\n fo
r (var i=0; i < l; i++) {\n refNode = refNode && refNode.nextElementSibling
;\n }\n port.parentNode.insertBefore(elt, refNode);\n },\n // tracks whe
n a loadable element has loaded\n trackElement: function(elt, callback) {\n
var self = this;\n var done = function(e) {\n if (callback) {\n c
allback(e);\n }\n self.markParsingComplete(elt);\n self.parseNext
();\n };\n elt.addEventListener('load', done);\n elt.addEventListener('
error', done);\n\n // NOTE: IE does not fire \"load\" event for styles that h
ave already loaded\n // This is in violation of the spec, so we try our harde
st to work around it\n if (isIE && elt.localName === 'style') {\n var fa
keLoad = false;\n // If there's not @import in the textContent, assume it h
as loaded\n if (elt.textContent.indexOf('@import') == -1) {\n fakeLo
ad = true;\n // if we have a sheet, we have been parsed\n } else if (e
lt.sheet) {\n fakeLoad = true;\n var csr = elt.sheet.cssRules;\n
var len = csr ? csr.length : 0;\n // search the rules for @import's
\n for (var i = 0, r; (i < len) && (r = csr[i]); i++) {\n if (r.
type === CSSRule.IMPORT_RULE) {\n // if every @import has resolved, f
ake the load\n fakeLoad = fakeLoad && Boolean(r.styleSheet);\n
}\n }\n }\n // dispatch a fake load event and continue parsi
ng\n if (fakeLoad) {\n elt.dispatchEvent(new CustomEvent('load', {bu
bbles: false}));\n }\n }\n },\n // NOTE: execute scripts by injecting
them and watching for the load/error\n // event. Inline scripts are handled via
dataURL's because browsers tend to\n // provide correct parsing errors in this
case. If this has any compatibility\n // issues, we can switch to injecting th
e inline script with textContent.\n // Scripts with dataURL's do not appear to
generate load events and therefore\n // we assume they execute synchronously.\n
parseScript: function(scriptElt) {\n var script = document.createElement('s
cript');\n script.__importElement = scriptElt;\n script.src = scriptElt.sr
c ? scriptElt.src : \n generateScriptDataUrl(scriptElt);\n scope.curre
ntScript = scriptElt;\n this.trackElement(script, function(e) {\n script
.parentNode.removeChild(script);\n scope.currentScript = null; \n });\n
this.addElementToDocument(script);\n },\n // determine the next element in
the tree which should be parsed\n nextToParse: function() {\n this._mayPars
e = [];\n return !this.parsingElement && this.nextToParseInDoc(mainDoc);\n }
,\n nextToParseInDoc: function(doc, link) {\n // use `marParse` list to avoi
d looping into the same document again\n // since it could cause an iloop.\n
if (doc && this._mayParse.indexOf(doc) < 0) {\n this._mayParse.push(doc)
;\n var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));\n
for (var i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n
if (!this.isParsed(n)) {\n if (this.hasResource(n)) {\n retu
rn nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n;\n } else {
\n return;\n }\n }\n }\n }\n // all nodes
have been parsed, ready to parse import, if any\n return link;\n },\n // re
turn the set of parse selectors relevant for this node.\n parseSelectorsForNode
: function(node) {\n var doc = node.ownerDocument || node;\n return doc ==
= mainDoc ? this.documentSelectors : this.importsSelectors;\n },\n isParsed: f
unction(node) {\n return node.__importParsed;\n },\n hasResource: function(
node) {\n if (nodeIsImport(node) && (node.import === undefined)) {\n ret
urn false;\n }\n return true;\n }\n};\n\nfunction nodeIsImport(elt) {\n
return (elt.localName === 'link') && (elt.rel === IMPORT_LINK_TYPE);\n}\n\nfunct
ion generateScriptDataUrl(script) {\n var scriptContent = generateScriptContent
(script);\n return 'data:text/javascript;charset=utf-8,' + encodeURIComponent(s
criptContent);\n}\n\nfunction generateScriptContent(script) {\n return script.t
extContent + generateSourceMapHint(script);\n}\n\n// calculate source map hint\n
function generateSourceMapHint(script) {\n var moniker = script.__nodeUrl;\n i
f (!moniker) {\n moniker = script.ownerDocument.baseURI;\n // there could
be more than one script this url\n var tag = '[' + Math.floor((Math.random()+
1)*1000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we n
eed to allow \n // this sort of thing\n var matches = script.textContent.m
atch(/Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n
// tag the moniker\n moniker += '/' + tag + '.js';\n }\n return '\\n//# sou
rceURL=' + moniker + '\\n';\n}\n\n// style/stylesheet handling\n\n// clone style
with proper path resolution for main document\n// NOTE: styles are the only ele
ments that require direct path fixup.\nfunction cloneStyle(style) {\n var clone
= style.ownerDocument.createElement('style');\n clone.textContent = style.text
Content;\n path.resolveUrlsInStyle(clone);\n return clone;\n}\n\n// path fixup
: style elements in imports must be made relative to the main \n// document. We
fixup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;
\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n\nvar path =
{\n resolveUrlsInStyle: function(style) {\n var doc = style.ownerDocument;\n
var resolver = doc.createElement('a');\n style.textContent = this.resolve
UrlsInCssText(style.textContent, resolver);\n return style; \n },\n resolv
eUrlsInCssText: function(cssText, urlObj) {\n var r = this.replaceUrls(cssTex
t, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, CSS_IMPORT_REGE
XP);\n return r;\n },\n replaceUrls: function(text, urlObj, regexp) {\n
return text.replace(regexp, function(m, pre, url, post) {\n var urlPath = u
rl.replace(/[\"']/g, '');\n urlObj.href = urlPath;\n urlPath = urlObj.
href;\n return pre + '\\'' + urlPath + '\\'' + post;\n }); \n }\n}\n
\n// exports\nscope.parser = importParser;\nscope.path = path;\n\n})(HTMLImports
);\n", |
147 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n (function(scope) {\n\nvar
useNative = scope.useNative;\nvar flags = scope.flags;\nvar IMPORT_LINK_TYPE = '
import';\n\n// TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.Shadow
DOMPolyfill ? \n ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\nif (
!useNative) {\n\n // imports\n var xhr = scope.xhr;\n var Loader = scope.Load
er;\n var parser = scope.parser;\n\n // importer\n // highlander object to ma
nage loading of imports\n\n // for any document, importer:\n // - loads any li
nked import documents (with deduping)\n\n var importer = {\n documents: {},\
n // nodes to load in the mian document\n documentPreloadSelectors: 'link[
rel=' + IMPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPre
loadSelectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']'\n ].join(','),\n
loadNode: function(node) {\n importLoader.addNode(node);\n },\n /
/ load all loadable elements within the parent element\n loadSubtree: functio
n(parent) {\n var nodes = this.marshalNodes(parent);\n // add these no
des to loader's queue\n importLoader.addNodes(nodes);\n },\n marshalN
odes: function(parent) {\n // all preloadable nodes in inDocument\n re
turn parent.querySelectorAll(this.loadSelectorsForNode(parent));\n },\n //
find the proper set of load selectors for a given node\n loadSelectorsForNod
e: function(node) {\n var doc = node.ownerDocument || node;\n return d
oc === mainDoc ? this.documentPreloadSelectors :\n this.importsPreloadS
electors;\n },\n loaded: function(url, elt, resource, err, redirectedUrl)
{\n flags.load && console.log('loaded', url, elt);\n // store generic
resource\n // TODO(sorvell): fails for nodes inside <template>.content\n
// see https://code.google.com/p/chromium/issues/detail?id=249381.\n elt
.__resource = resource;\n elt.__error = err;\n if (isDocumentLink(elt)
) {\n var doc = this.documents[url];\n // if we've never seen a do
cument at this url\n if (doc === undefined) {\n // generate an H
TMLDocument from data\n doc = err ? null : makeDocument(resource, redir
ectedUrl || url);\n if (doc) {\n doc.__importLink = elt;\n
// note, we cannot use MO to detect parsed nodes because\n
// SD polyfill does not report these as mutations.\n this.bootDocumen
t(doc);\n }\n // cache document\n this.documents[url]
= doc;\n }\n // don't store import record until we're actually lo
aded\n // store document resource\n elt.import = doc;\n }\n
parser.parseNext();\n },\n bootDocument: function(doc) {\n this.l
oadSubtree(doc);\n this.observe(doc);\n parser.parseNext();\n },\n
loadedAll: function() {\n parser.parseNext();\n }\n };\n\n // loade
r singleton\n var importLoader = new Loader(importer.loaded.bind(importer), \n
importer.loadedAll.bind(importer));\n\n function isDocumentLink(elt) {\n
return isLinkRel(elt, IMPORT_LINK_TYPE);\n }\n\n function isLinkRel(elt, rel
) {\n return elt.localName === 'link' && elt.getAttribute('rel') === rel;\n
}\n\n function isScript(elt) {\n return elt.localName === 'script';\n }\n\n
function makeDocument(resource, url) {\n // create a new HTML document\n
var doc = resource;\n if (!(doc instanceof Document)) {\n doc = documen
t.implementation.createHTMLDocument(IMPORT_LINK_TYPE);\n }\n // cache the
new document's source url\n doc._URL = url;\n // establish a relative path
via <base>\n var base = doc.createElement('base');\n base.setAttribute('h
ref', url);\n // add baseURI support to browsers (IE) that lack it.\n if (
!doc.baseURI) {\n doc.baseURI = url;\n }\n // ensure UTF-8 charset\n
var meta = doc.createElement('meta');\n meta.setAttribute('charset', 'utf-
8');\n\n doc.head.appendChild(meta);\n doc.head.appendChild(base);\n //
install HTML last as it may trigger CustomElement upgrades\n // TODO(sjmiles
): problem wrt to template boostrapping below,\n // template bootstrapping mu
st (?) come before element upgrade\n // but we cannot bootstrap templates unt
il they are in a document\n // which is too late\n if (!(resource instance
of Document)) {\n // install html\n doc.body.innerHTML = resource;\n
}\n // TODO(sorvell): ideally this code is not aware of Template polyfill,\
n // but for now the polyfill needs help to bootstrap these templates\n if
(window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {\n HTMLTemp
lateElement.bootstrap(doc);\n }\n return doc;\n }\n\n // Polyfill docume
nt.baseURI for browsers without it.\n if (!document.baseURI) {\n var baseURI
Descriptor = {\n get: function() {\n var base = document.querySelect
or('base');\n return base ? base.href : window.location.href;\n },\n
configurable: true\n };\n\n Object.defineProperty(document, 'baseURI
', baseURIDescriptor);\n Object.defineProperty(mainDoc, 'baseURI', baseURIDes
criptor);\n }\n\n // IE shim for CustomEvent\n if (typeof window.CustomEvent
!== 'function') {\n window.CustomEvent = function(inType, dictionary) {\n
var e = document.createEvent('HTMLEvents');\n e.initEvent(inType,\n
dictionary.bubbles === false ? false : true,\n dictionary.cancela
ble === false ? false : true,\n dictionary.detail);\n return e;\n
};\n }\n\n} else {\n // do nothing if using native imports\n var importer
= {};\n}\n\n// exports\nscope.importer = importer;\nscope.IMPORT_LINK_TYPE = IM
PORT_LINK_TYPE;\nscope.importLoader = importLoader;\n\n\n})(window.HTMLImports);
\n", | 147 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n (function(scope) {\n\nvar
useNative = scope.useNative;\nvar flags = scope.flags;\nvar IMPORT_LINK_TYPE = '
import';\n\n// TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.Shadow
DOMPolyfill ? \n ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\nif (
!useNative) {\n\n // imports\n var xhr = scope.xhr;\n var Loader = scope.Load
er;\n var parser = scope.parser;\n\n // importer\n // highlander object to ma
nage loading of imports\n\n // for any document, importer:\n // - loads any li
nked import documents (with deduping)\n\n var importer = {\n documents: {},\
n // nodes to load in the mian document\n documentPreloadSelectors: 'link[
rel=' + IMPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPre
loadSelectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']'\n ].join(','),\n
loadNode: function(node) {\n importLoader.addNode(node);\n },\n /
/ load all loadable elements within the parent element\n loadSubtree: functio
n(parent) {\n var nodes = this.marshalNodes(parent);\n // add these no
des to loader's queue\n importLoader.addNodes(nodes);\n },\n marshalN
odes: function(parent) {\n // all preloadable nodes in inDocument\n re
turn parent.querySelectorAll(this.loadSelectorsForNode(parent));\n },\n //
find the proper set of load selectors for a given node\n loadSelectorsForNod
e: function(node) {\n var doc = node.ownerDocument || node;\n return d
oc === mainDoc ? this.documentPreloadSelectors :\n this.importsPreloadS
electors;\n },\n loaded: function(url, elt, resource, err, redirectedUrl)
{\n flags.load && console.log('loaded', url, elt);\n // store generic
resource\n // TODO(sorvell): fails for nodes inside <template>.content\n
// see https://code.google.com/p/chromium/issues/detail?id=249381.\n elt
.__resource = resource;\n elt.__error = err;\n if (isDocumentLink(elt)
) {\n var doc = this.documents[url];\n // if we've never seen a do
cument at this url\n if (doc === undefined) {\n // generate an H
TMLDocument from data\n doc = err ? null : makeDocument(resource, redir
ectedUrl || url);\n if (doc) {\n doc.__importLink = elt;\n
// note, we cannot use MO to detect parsed nodes because\n
// SD polyfill does not report these as mutations.\n this.bootDocumen
t(doc);\n }\n // cache document\n this.documents[url]
= doc;\n }\n // don't store import record until we're actually lo
aded\n // store document resource\n elt.import = doc;\n }\n
parser.parseNext();\n },\n bootDocument: function(doc) {\n this.l
oadSubtree(doc);\n this.observe(doc);\n parser.parseNext();\n },\n
loadedAll: function() {\n parser.parseNext();\n }\n };\n\n // loade
r singleton\n var importLoader = new Loader(importer.loaded.bind(importer), \n
importer.loadedAll.bind(importer));\n\n function isDocumentLink(elt) {\n
return isLinkRel(elt, IMPORT_LINK_TYPE);\n }\n\n function isLinkRel(elt, rel
) {\n return elt.localName === 'link' && elt.getAttribute('rel') === rel;\n
}\n\n function isScript(elt) {\n return elt.localName === 'script';\n }\n\n
function makeDocument(resource, url) {\n // create a new HTML document\n
var doc = resource;\n if (!(doc instanceof Document)) {\n doc = documen
t.implementation.createHTMLDocument(IMPORT_LINK_TYPE);\n }\n // cache the
new document's source url\n doc._URL = url;\n // establish a relative path
via <base>\n var base = doc.createElement('base');\n base.setAttribute('h
ref', url);\n // add baseURI support to browsers (IE) that lack it.\n if (
!doc.baseURI) {\n doc.baseURI = url;\n }\n // ensure UTF-8 charset\n
var meta = doc.createElement('meta');\n meta.setAttribute('charset', 'utf-
8');\n\n doc.head.appendChild(meta);\n doc.head.appendChild(base);\n //
install HTML last as it may trigger CustomElement upgrades\n // TODO(sjmiles
): problem wrt to template boostrapping below,\n // template bootstrapping mu
st (?) come before element upgrade\n // but we cannot bootstrap templates unt
il they are in a document\n // which is too late\n if (!(resource instance
of Document)) {\n // install html\n doc.body.innerHTML = resource;\n
}\n // TODO(sorvell): ideally this code is not aware of Template polyfill,\
n // but for now the polyfill needs help to bootstrap these templates\n if
(window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {\n HTMLTemp
lateElement.bootstrap(doc);\n }\n return doc;\n }\n\n // Polyfill docume
nt.baseURI for browsers without it.\n if (!document.baseURI) {\n var baseURI
Descriptor = {\n get: function() {\n var base = document.querySelect
or('base');\n return base ? base.href : window.location.href;\n },\n
configurable: true\n };\n\n Object.defineProperty(document, 'baseURI
', baseURIDescriptor);\n Object.defineProperty(mainDoc, 'baseURI', baseURIDes
criptor);\n }\n\n // IE shim for CustomEvent\n if (typeof window.CustomEvent
!== 'function') {\n window.CustomEvent = function(inType, dictionary) {\n
var e = document.createEvent('HTMLEvents');\n e.initEvent(inType,\n
dictionary.bubbles === false ? false : true,\n dictionary.cancela
ble === false ? false : true,\n dictionary.detail);\n return e;\n
};\n }\n\n} else {\n // do nothing if using native imports\n var importer
= {};\n}\n\n// exports\nscope.importer = importer;\nscope.IMPORT_LINK_TYPE = IM
PORT_LINK_TYPE;\nscope.importLoader = importLoader;\n\n\n})(window.HTMLImports);
\n", |
148 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\nvar IM
PORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\nvar importSelector = 'link[rel=' + IMP
ORT_LINK_TYPE + ']';\nvar importer = scope.importer;\nvar parser = scope.parser;
\n\n// we track mutations for addedNodes, looking for imports\nfunction handler(
mutations) {\n for (var i=0, l=mutations.length, m; (i<l) && (m=mutations[i]);
i++) {\n if (m.type === 'childList' && m.addedNodes.length) {\n addedNod
es(m.addedNodes);\n }\n }\n}\n\n// find loadable elements and add them to th
e importer\nfunction addedNodes(nodes) {\n var owner;\n for (var i=0, l=nodes.
length, n; (i<l) && (n=nodes[i]); i++) {\n owner = owner || n.ownerDocument;\
n if (shouldLoadNode(n)) {\n importer.loadNode(n);\n }\n if (n.chi
ldren && n.children.length) {\n addedNodes(n.children);\n }\n }\n // T
ODO(sorvell): This is not the right approach here. We shouldn't need to\n // in
validate parsing when an element is added. Disabling this code \n // until a be
tter approach is found.\n /*\n if (owner) {\n parser.invalidateParse(owner)
;\n }\n */\n}\n\nfunction shouldLoadNode(node) {\n return (node.nodeType ===
1) && matches.call(node,\n importer.loadSelectorsForNode(node));\n}\n\n// x
-plat matches\nvar matches = HTMLElement.prototype.matches || \n HTMLElement.
prototype.matchesSelector || \n HTMLElement.prototype.webkitMatchesSelector |
|\n HTMLElement.prototype.mozMatchesSelector ||\n HTMLElement.prototype.ms
MatchesSelector;\n\nvar observer = new MutationObserver(handler);\n\n// observe
the given root for loadable elements\nfunction observe(root) {\n observer.obser
ve(root, {childList: true, subtree: true});\n}\n\n// exports\n// TODO(sorvell):
factor so can put on scope\nscope.observe = observe;\nimporter.observe = observe
;\n\n})(HTMLImports);\n", | 148 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\nvar IM
PORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\nvar importSelector = 'link[rel=' + IMP
ORT_LINK_TYPE + ']';\nvar importer = scope.importer;\nvar parser = scope.parser;
\n\n// we track mutations for addedNodes, looking for imports\nfunction handler(
mutations) {\n for (var i=0, l=mutations.length, m; (i<l) && (m=mutations[i]);
i++) {\n if (m.type === 'childList' && m.addedNodes.length) {\n addedNod
es(m.addedNodes);\n }\n }\n}\n\n// find loadable elements and add them to th
e importer\nfunction addedNodes(nodes) {\n var owner;\n for (var i=0, l=nodes.
length, n; (i<l) && (n=nodes[i]); i++) {\n owner = owner || n.ownerDocument;\
n if (shouldLoadNode(n)) {\n importer.loadNode(n);\n }\n if (n.chi
ldren && n.children.length) {\n addedNodes(n.children);\n }\n }\n // T
ODO(sorvell): This is not the right approach here. We shouldn't need to\n // in
validate parsing when an element is added. Disabling this code \n // until a be
tter approach is found.\n /*\n if (owner) {\n parser.invalidateParse(owner)
;\n }\n */\n}\n\nfunction shouldLoadNode(node) {\n return (node.nodeType ===
1) && matches.call(node,\n importer.loadSelectorsForNode(node));\n}\n\n// x
-plat matches\nvar matches = HTMLElement.prototype.matches || \n HTMLElement.
prototype.matchesSelector || \n HTMLElement.prototype.webkitMatchesSelector |
|\n HTMLElement.prototype.mozMatchesSelector ||\n HTMLElement.prototype.ms
MatchesSelector;\n\nvar observer = new MutationObserver(handler);\n\n// observe
the given root for loadable elements\nfunction observe(root) {\n observer.obser
ve(root, {childList: true, subtree: true});\n}\n\n// exports\n// TODO(sorvell):
factor so can put on scope\nscope.observe = observe;\nimporter.observe = observe
;\n\n})(HTMLImports);\n", |
149 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(){\n\n// bootstra
p\n\n// TODO(sorvell): SD polyfill intrusion\nvar doc = window.ShadowDOMPolyfill
? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n// no ne
ed to bootstrap the polyfill when native imports is available.\nif (!HTMLImports
.useNative) {\n function bootstrap() {\n HTMLImports.importer.bootDocument(d
oc);\n }\n \n // TODO(sorvell): SD polyfill does *not* generate mutations f
or nodes added\n // by the parser. For this reason, we must wait until the dom
exists to \n // bootstrap.\n if (document.readyState === 'complete' ||\n
(document.readyState === 'interactive' && !window.attachEvent)) {\n bootstrap
();\n } else {\n document.addEventListener('DOMContentLoaded', bootstrap);\n
}\n}\n\n})();\n", | 149 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(){\n\n// bootstra
p\n\n// TODO(sorvell): SD polyfill intrusion\nvar doc = window.ShadowDOMPolyfill
? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n// no ne
ed to bootstrap the polyfill when native imports is available.\nif (!HTMLImports
.useNative) {\n function bootstrap() {\n HTMLImports.importer.bootDocument(d
oc);\n }\n \n // TODO(sorvell): SD polyfill does *not* generate mutations f
or nodes added\n // by the parser. For this reason, we must wait until the dom
exists to \n // bootstrap.\n if (document.readyState === 'complete' ||\n
(document.readyState === 'interactive' && !window.attachEvent)) {\n bootstrap
();\n } else {\n document.addEventListener('DOMContentLoaded', bootstrap);\n
}\n}\n\n})();\n", |
150 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.CustomElements = win
dow.CustomElements || {flags:{}};", | 150 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.CustomElements = win
dow.CustomElements || {flags:{}};", |
151 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE
= window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the
subtree rooted at node, applying 'find(element, data)' function\r\n// to each e
lement\r\n// if 'find' returns true for 'element', do not search element's subtr
ee\r\nfunction findAll(node, find, data) {\r\n var e = node.firstElementChild;\
r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Nod
e.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r
\n if (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\
n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all
shadowRoots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = no
de.shadowRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = roo
t.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, includ
ing descent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction f
orSubtree(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.
length && console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n
if (cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });
\r\n forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNo
des.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\
r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r
\n return true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle o
n added node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(nod
e, function(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\
r\n}\r\n\r\n// manage lifecycle on added node and it's subtree\r\nfunction added
Node(node) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgra
de custom elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!
node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = no
de.getAttribute('is') || node.localName;\r\n var definition = scope.registry[
type];\r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:
', node.localName);\r\n scope.upgrade(node);\r\n logFlags.dom && conso
le.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insert
edNode(node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtr
ee(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TO
DO(sorvell): on platforms without MutationObserver, mutations may not be\r\n// r
eliable and therefore attached/detached are not reliable.\r\n// To make these ca
llbacks less likely to fail, we defer all inserts and removes\r\n// to give a ch
ance for elements to be inserted into dom.\r\n// This ensures attachedCallback f
ires for elements that are created and\r\n// immediately added to dom.\r\nvar ha
sPolyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserve
r === window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMu
tations;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\
nfunction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendin
gMutations) {\r\n isPendingMutations = true;\r\n var async = (window.Platf
orm && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(ta
keMutations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutati
ons = false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p;
(i<l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r
\n\r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n defer
Mutation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n
_inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descent
s into trees that can never have inDocument(*) true, fix this\r\nfunction _inser
ted(element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed
in the space\r\n // of one microtask, in which case we won't be 'inDocument' h
ere\r\n // But there are other cases where we are testing for inserted without\
r\n // specific knowledge of mutations, and must test 'inDocument' to determine
\r\n // whether to call inserted\r\n // If we can factor these cases into sepa
rate code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): w
hen logging, do work on all custom elements so we can\r\n // track behavior eve
n when callbacks not defined\r\n //console.log('inserted: ', element.localName)
;\r\n if (element.attachedCallback || element.detachedCallback || (element.__up
graded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', e
lement.localName);\r\n if (inDocument(element)) {\r\n element.__inserted
= (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bl
untly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n
element.__inserted = 1;\r\n }\r\n // if we are 'over inserted',
squelch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.
dom && console.warn('inserted:', element.localName,\r\n 'insert/remove
count:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n
logFlags.dom && console.log('inserted:', element.localName);\r\n
element.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.g
roupEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r
\n forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunct
ion removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(fun
ction() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(e
lement);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles):
temporary: do work on all custom elements so we can track\r\n // behavior even
when callbacks not defined\r\n if (element.attachedCallback || element.detached
Callback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && con
sole.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\
n element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are
in a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (elemen
t.__inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if
we are 'over removed', squelch the callback\r\n if (element.__inserted < 0
) {\r\n logFlags.dom && console.warn('removed:', element.localName,\r\n
'insert/remove count:', element.__inserted)\r\n } else if (elemen
t.detachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }
\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill in
trustion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\
nfunction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMP
olyfill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(elem
ent) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (
p) {\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNo
de || p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shad
owRoot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watc
hing shadow-root for: ', node.localName);\r\n // watch all unwatched roots...
\r\n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(roo
t);\r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction w
atchRoot(root) {\r\n observe(root);\r\n}\r\n\r\nfunction handler(mutations) {\r
\n //\r\n if (logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && m
x.type === 'childList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n
var d = mx.addedNodes[0];\r\n while (d && d !== document && !d.
host) {\r\n d = d.parentNode;\r\n }\r\n var u = d &
& (d.URL || d._URL || (d.host && d.host.localName)) || '';\r\n u = u.sp
lit('/?').shift().split('/').pop();\r\n }\r\n }\r\n console.group('
mutations (%d) [%s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.
forEach(function(mx) {\r\n //logFlags.dom && console.group('mutation');\r\n
if (mx.type === 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r
\n //logFlags.dom && console.log(n.localName);\r\n if (!n.localNam
e) {\r\n return;\r\n }\r\n // nodes added may need lifecy
cle management\r\n addedNode(n);\r\n });\r\n // removed nodes m
ay need lifecycle management\r\n forEach(mx.removedNodes, function(n) {\r\n
//logFlags.dom && console.log(n.localName);\r\n if (!n.localName)
{\r\n return;\r\n }\r\n removedNode(n);\r\n });\r\n
}\r\n //logFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom &&
console.groupEnd();\r\n};\r\n\r\nfunction takeRecords(node) {\r\n // If the op
tional node is not supplied, assume we mean the whole document.\r\n if (node ==
= undefined) node = document;\r\n\r\n // Find the root of the tree, which will
be an Document or ShadowRoot.\r\n while (node.parentNode) {\r\n node = node.
parentNode;\r\n }\r\n\r\n var observer = node.__observer;\r\n if (observer) {
\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n }\r\n}\r\n
\r\nvar forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\
n\r\nfunction observe(inRoot) {\r\n if (inRoot.__observer) return;\r\n\r\n //
For each ShadowRoot, we create a new MutationObserver, so the root can be\r\n /
/ garbage collected once all references to the `inRoot` node are gone.\r\n var
observer = new MutationObserver(handler);\r\n observer.observe(inRoot, {childLi
st: true, subtree: true});\r\n inRoot.__observer = observer;\r\n}\r\n\r\nfuncti
on observeDocument(doc) {\r\n observe(doc);\r\n}\r\n\r\nfunction upgradeDocumen
t(doc) {\r\n logFlags.dom && console.group('upgradeDocument: ', (doc.baseURI).s
plit('/').pop());\r\n addedNode(doc);\r\n logFlags.dom && console.groupEnd();\
r\n}\r\n\r\n/*\r\nThis method is intended to be called when the document tree (i
ncluding imports)\r\nhas pending custom elements to upgrade. It can be called mu
ltiple times and \r\nshould do nothing if no elements are in need of upgrade.\r\
n\r\nNote that the import tree can consume itself and therefore special care\r\n
must be taken to avoid recursion.\r\n*/\r\nvar upgradedDocuments;\r\nfunction up
gradeDocumentTree(doc) {\r\n upgradedDocuments = [];\r\n _upgradeDocumentTree(
doc);\r\n upgradedDocuments = null;\r\n}\r\n\r\n\r\nfunction _upgradeDocumentTr
ee(doc) {\r\n doc = wrapIfNeeded(doc);\r\n if (upgradedDocuments.indexOf(doc)
>= 0) {\r\n return;\r\n }\r\n upgradedDocuments.push(doc);\r\n //console.l
og('upgradeDocumentTree: ', (doc.baseURI).split('/').pop());\r\n // upgrade con
tained imported documents\r\n var imports = doc.querySelectorAll('link[rel=' +
IMPORT_LINK_TYPE + ']');\r\n for (var i=0, l=imports.length, n; (i<l) && (n=imp
orts[i]); i++) {\r\n if (n.import && n.import.__parsed) {\r\n _upgradeDo
cumentTree(n.import);\r\n }\r\n }\r\n upgradeDocument(doc);\r\n}\r\n\r\n//
exports\r\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\r\nscope.watchShadow = wat
chShadow;\r\nscope.upgradeDocumentTree = upgradeDocumentTree;\r\nscope.upgradeAl
l = addedNode;\r\nscope.upgradeSubtree = addedSubtree;\r\nscope.insertedNode = i
nsertedNode;\r\n\r\nscope.observeDocument = observeDocument;\r\nscope.upgradeDoc
ument = upgradeDocument;\r\n\r\nscope.takeRecords = takeRecords;\r\n\r\n})(windo
w.CustomElements);\r\n", | 151 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE
= window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the
subtree rooted at node, applying 'find(element, data)' function\r\n// to each e
lement\r\n// if 'find' returns true for 'element', do not search element's subtr
ee\r\nfunction findAll(node, find, data) {\r\n var e = node.firstElementChild;\
r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Nod
e.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r
\n if (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\
n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all
shadowRoots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = no
de.shadowRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = roo
t.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, includ
ing descent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction f
orSubtree(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.
length && console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n
if (cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });
\r\n forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNo
des.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\
r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r
\n return true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle o
n added node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(nod
e, function(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\
r\n}\r\n\r\n// manage lifecycle on added node and it's subtree\r\nfunction added
Node(node) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgra
de custom elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!
node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = no
de.getAttribute('is') || node.localName;\r\n var definition = scope.registry[
type];\r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:
', node.localName);\r\n scope.upgrade(node);\r\n logFlags.dom && conso
le.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insert
edNode(node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtr
ee(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TO
DO(sorvell): on platforms without MutationObserver, mutations may not be\r\n// r
eliable and therefore attached/detached are not reliable.\r\n// To make these ca
llbacks less likely to fail, we defer all inserts and removes\r\n// to give a ch
ance for elements to be inserted into dom.\r\n// This ensures attachedCallback f
ires for elements that are created and\r\n// immediately added to dom.\r\nvar ha
sPolyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserve
r === window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMu
tations;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\
nfunction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendin
gMutations) {\r\n isPendingMutations = true;\r\n var async = (window.Platf
orm && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(ta
keMutations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutati
ons = false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p;
(i<l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r
\n\r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n defer
Mutation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n
_inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descent
s into trees that can never have inDocument(*) true, fix this\r\nfunction _inser
ted(element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed
in the space\r\n // of one microtask, in which case we won't be 'inDocument' h
ere\r\n // But there are other cases where we are testing for inserted without\
r\n // specific knowledge of mutations, and must test 'inDocument' to determine
\r\n // whether to call inserted\r\n // If we can factor these cases into sepa
rate code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): w
hen logging, do work on all custom elements so we can\r\n // track behavior eve
n when callbacks not defined\r\n //console.log('inserted: ', element.localName)
;\r\n if (element.attachedCallback || element.detachedCallback || (element.__up
graded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', e
lement.localName);\r\n if (inDocument(element)) {\r\n element.__inserted
= (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bl
untly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n
element.__inserted = 1;\r\n }\r\n // if we are 'over inserted',
squelch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.
dom && console.warn('inserted:', element.localName,\r\n 'insert/remove
count:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n
logFlags.dom && console.log('inserted:', element.localName);\r\n
element.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.g
roupEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r
\n forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunct
ion removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(fun
ction() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(e
lement);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles):
temporary: do work on all custom elements so we can track\r\n // behavior even
when callbacks not defined\r\n if (element.attachedCallback || element.detached
Callback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && con
sole.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\
n element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are
in a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (elemen
t.__inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if
we are 'over removed', squelch the callback\r\n if (element.__inserted < 0
) {\r\n logFlags.dom && console.warn('removed:', element.localName,\r\n
'insert/remove count:', element.__inserted)\r\n } else if (elemen
t.detachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }
\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill in
trustion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\
nfunction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMP
olyfill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(elem
ent) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (
p) {\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNo
de || p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shad
owRoot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watc
hing shadow-root for: ', node.localName);\r\n // watch all unwatched roots...
\r\n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(roo
t);\r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction w
atchRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root._
_watched = true;\r\n }\r\n}\r\n\r\nfunction handler(mutations) {\r\n //\r\n i
f (logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && mx.type === 'c
hildList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n var d
= mx.addedNodes[0];\r\n while (d && d !== document && !d.host) {\r\n
d = d.parentNode;\r\n }\r\n var u = d && (d.URL || d
._URL || (d.host && d.host.localName)) || '';\r\n u = u.split('/?').shi
ft().split('/').pop();\r\n }\r\n }\r\n console.group('mutations (%d
) [%s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.forEach(funct
ion(mx) {\r\n //logFlags.dom && console.group('mutation');\r\n if (mx.type
=== 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r\n //l
ogFlags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n // nodes added may need lifecycle managemen
t\r\n addedNode(n);\r\n });\r\n // removed nodes may need lifec
ycle management\r\n forEach(mx.removedNodes, function(n) {\r\n //log
Flags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n removedNode(n);\r\n });\r\n }\r\n
//logFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom && console.grou
pEnd();\r\n};\r\n\r\nvar observer = new MutationObserver(handler);\r\n\r\nfuncti
on takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ou
rselves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\n
var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\n\r\
nfunction observe(inRoot) {\r\n observer.observe(inRoot, {childList: true, subt
ree: true});\r\n}\r\n\r\nfunction observeDocument(doc) {\r\n observe(doc);\r\n}
\r\n\r\nfunction upgradeDocument(doc) {\r\n logFlags.dom && console.group('upgr
adeDocument: ', (doc.baseURI).split('/').pop());\r\n addedNode(doc);\r\n logFl
ags.dom && console.groupEnd();\r\n}\r\n\r\n/*\r\nThis method is intended to be c
alled when the document tree (including imports)\r\nhas pending custom elements
to upgrade. It can be called multiple times and \r\nshould do nothing if no elem
ents are in need of upgrade.\r\n\r\nNote that the import tree can consume itself
and therefore special care\r\nmust be taken to avoid recursion.\r\n*/\r\nvar up
gradedDocuments;\r\nfunction upgradeDocumentTree(doc) {\r\n upgradedDocuments =
[];\r\n _upgradeDocumentTree(doc);\r\n upgradedDocuments = null;\r\n}\r\n\r\n
\r\nfunction _upgradeDocumentTree(doc) {\r\n doc = wrapIfNeeded(doc);\r\n if (
upgradedDocuments.indexOf(doc) >= 0) {\r\n return;\r\n }\r\n upgradedDocume
nts.push(doc);\r\n //console.log('upgradeDocumentTree: ', (doc.baseURI).split('
/').pop());\r\n // upgrade contained imported documents\r\n var imports = doc.
querySelectorAll('link[rel=' + IMPORT_LINK_TYPE + ']');\r\n for (var i=0, l=imp
orts.length, n; (i<l) && (n=imports[i]); i++) {\r\n if (n.import && n.import.
__parsed) {\r\n _upgradeDocumentTree(n.import);\r\n }\r\n }\r\n upgrad
eDocument(doc);\r\n}\r\n\r\n// exports\r\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_T
YPE;\r\nscope.watchShadow = watchShadow;\r\nscope.upgradeDocumentTree = upgradeD
ocumentTree;\r\nscope.upgradeAll = addedNode;\r\nscope.upgradeSubtree = addedSub
tree;\r\nscope.insertedNode = insertedNode;\r\n\r\nscope.observeDocument = obser
veDocument;\r\nscope.upgradeDocument = upgradeDocument;\r\n\r\nscope.takeRecords
= takeRecords;\r\n\r\n})(window.CustomElements);\r\n", |
152 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Implements `docum
ent.registerElement`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extens
ions to the `document` object.\n * @class Document\n*/\n\n(function(scope) {\n\n
// imports\n\nif (!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nv
ar flags = scope.flags;\n\n// native document.registerElement?\n\nvar hasNative
= Boolean(document.registerElement);\n// For consistent timing, use native custo
m elements only when not polyfilling\n// other key related web components featur
es.\nvar useNative = !flags.register && hasNative && !window.ShadowDOMPolyfill &
& (!window.HTMLImports || HTMLImports.useNative);\n\nif (useNative) {\n\n // st
ub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.
upgradeElement = nop;\n\n scope.watchShadow = nop;\n scope.upgrade = nop;\n s
cope.upgradeAll = nop;\n scope.upgradeSubtree = nop;\n scope.observeDocument =
nop;\n scope.upgradeDocument = nop;\n scope.upgradeDocumentTree = nop;\n sco
pe.takeRecords = nop;\n scope.reservedTagList = [];\n\n} else {\n\n /**\n *
Registers a custom tag name with the document.\n *\n * When a registered ele
ment is created, a `readyCallback` method is called\n * in the scope of the el
ement. The `readyCallback` method can be specified on\n * either `options.prot
otype` or `options.lifecycle` with the latter taking\n * precedence.\n *\n
* @method register\n * @param {String} name The tag name to register. Must in
clude a dash ('-'),\n * for example 'x-component'.\n * @param {Object} op
tions\n * @param {String} [options.extends]\n * (_off spec_) Tag nam
e of an element to extend (or blank for a new\n * element). This paramete
r is not part of the specification, but instead\n * is a hint for the pol
yfill because the extendee is difficult to infer.\n * Remember that the i
nput prototype must chain to the extended element's\n * prototype (or HTM
LElement.prototype) regardless of the value of\n * `extends`.\n * @p
aram {Object} options.prototype The prototype to use for the new\n * elem
ent. The prototype must inherit from HTMLElement.\n * @param {Object} [opti
ons.lifecycle]\n * Callbacks that fire at important phases in the life of
the custom\n * element.\n *\n * @example\n * FancyButton = do
cument.registerElement(\"fancy-button\", {\n * extends: 'button',\n *
prototype: Object.create(HTMLButtonElement.prototype, {\n * r
eadyCallback: {\n * value: function() {\n * console.
log(\"a fancy-button was created\",\n * }\n * }\n *
})\n * });\n * @return {Function} Constructor for the newly regist
ered type.\n */\n function register(name, options) {\n //console.warn('doc
ument.registerElement(\"' + name + '\", ', options, ')');\n // construct a de
fintion out of options\n // TODO(sjmiles): probably should clone options inst
ead of mutating it\n var definition = options || {};\n if (!name) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first arg
ument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first ar
gument (\\'name\\') must contain a dash (\\'-\\'). Argument provided was \\'' +
String(name) + '\\'.');\n }\n // prevent registering reserved names\n i
f (isReservedTag(name)) {\n throw new Error('Failed to execute \\'registerE
lement\\' on \\'Document\\': Registration failed for type \\'' + String(name) +
'\\'. The type name is invalid.');\n }\n // elements may only be registere
d once\n if (getRegisteredDefinition(name)) {\n throw new Error('Duplica
teDefinitionError: a type with name \\'' + String(name) + '\\' is already regist
ered');\n }\n // must have a prototype, default to an extension of HTMLEle
ment\n // TODO(sjmiles): probably should throw if no prototype, check spec\n
if (!definition.prototype) {\n // TODO(sjmiles): replace with more appro
priate error (EricB can probably\n // offer guidance)\n throw new Erro
r('Options missing required prototype property');\n }\n // record name\n
definition.__name = name.toLowerCase();\n // ensure a lifecycle object so w
e don't have to null test it\n definition.lifecycle = definition.lifecycle ||
{};\n // build a list of ancestral custom elements (for native base detectio
n)\n // TODO(sjmiles): we used to need to store this, but current code only\n
// uses it in 'resolveTagName': it should probably be inlined\n definitio
n.ancestry = ancestry(definition.extends);\n // extensions of native speciali
zations of HTMLElement require localName\n // to remain native, and use secon
dary 'is' specifier for extension type\n resolveTagName(definition);\n //
some platforms require modifications to the user-supplied prototype\n // chai
n\n resolvePrototypeChain(definition);\n // overrides to implement attribu
teChanged callback\n overrideAttributeApi(definition.prototype);\n // 7.1.
5: Register the DEFINITION with DOCUMENT\n registerDefinition(definition.__na
me, definition);\n // 7.1.7. Run custom element constructor generation algori
thm with PROTOTYPE\n // 7.1.8. Return the output of the previous step.\n d
efinition.ctor = generateConstructor(definition);\n definition.ctor.prototype
= definition.prototype;\n // force our .constructor to be our actual constru
ctor\n definition.prototype.constructor = definition.ctor;\n // if initial
parsing is complete\n if (scope.ready) {\n // upgrade any pre-existing
nodes of this type\n scope.upgradeDocumentTree(document);\n }\n retur
n definition.ctor;\n }\n\n function isReservedTag(name) {\n for (var i = 0;
i < reservedTagList.length; i++) {\n if (name === reservedTagList[i]) {\n
return true;\n }\n }\n }\n\n var reservedTagList = [\n 'anno
tation-xml', 'color-profile', 'font-face', 'font-face-src',\n 'font-face-uri'
, 'font-face-format', 'font-face-name', 'missing-glyph'\n ];\n\n function ance
stry(extnds) {\n var extendee = getRegisteredDefinition(extnds);\n if (ext
endee) {\n return ancestry(extendee.extends).concat([extendee]);\n }\n
return [];\n }\n\n function resolveTagName(definition) {\n // if we are e
xplicitly extending something, that thing is our\n // baseTag, unless it repr
esents a custom component\n var baseTag = definition.extends;\n // if our
ancestry includes custom components, we only have a\n // baseTag if one of th
em does\n for (var i=0, a; (a=definition.ancestry[i]); i++) {\n baseTag
= a.is && a.tag;\n }\n // our tag is our baseTag, if it exists, and otherw
ise just our name\n definition.tag = baseTag || definition.__name;\n if (b
aseTag) {\n // if there is a base tag, use secondary 'is' specifier\n
definition.is = definition.__name;\n }\n }\n\n function resolvePrototypeCha
in(definition) {\n // if we don't support __proto__ we need to locate the nat
ive level\n // prototype for precise mixing in\n if (!Object.__proto__) {\
n // default prototype\n var nativePrototype = HTMLElement.prototype;\
n // work out prototype when using type-extension\n if (definition.is)
{\n var inst = document.createElement(definition.tag);\n var expe
ctedPrototype = Object.getPrototypeOf(inst);\n // only set nativePrototyp
e if it will actually appear in the definition's chain\n if (expectedProt
otype === definition.prototype) {\n nativePrototype = expectedPrototype
;\n }\n }\n // ensure __proto__ reference is installed at each
point on the prototype\n // chain.\n // NOTE: On platforms without __p
roto__, a mixin strategy is used instead\n // of prototype swizzling. In th
is case, this generated __proto__ provides\n // limited support for prototy
pe traversal.\n var proto = definition.prototype, ancestor;\n while (p
roto && (proto !== nativePrototype)) {\n ancestor = Object.getPrototypeOf
(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n
}\n // cache this in case of mixin\n definition.native = nativePrototy
pe;\n }\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n /
/ 4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMEN
T by this new object\n //\n // the custom element instantiation algorithm
must also ensure that the\n // output is a valid DOM element with the proper
wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag),
definition);\n }\n\n function upgrade(element, definition) {\n // some defi
nitions specify an 'is' attribute\n if (definition.is) {\n element.setAt
tribute('is', definition.is);\n }\n // make 'element' implement definition
.prototype\n implement(element, definition);\n // flag as upgraded\n el
ement.__upgraded__ = true;\n // lifecycle management\n created(element);\n
// attachedCallback fires in tree order, call before recursing\n scope.in
sertedNode(element);\n // there should never be a shadow root on element at t
his point\n scope.upgradeSubtree(element);\n // OUTPUT\n return element
;\n }\n\n function implement(element, definition) {\n // prototype swizzlin
g is best\n if (Object.__proto__) {\n element.__proto__ = definition.pro
totype;\n } else {\n // where above we can re-acquire inPrototype via\n
// getPrototypeOf(Element), we cannot do so when\n // we use mixin, so
we install a magic reference\n customMixin(element, definition.prototype,
definition.native);\n element.__proto__ = definition.prototype;\n }\n }
\n\n function customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): '
used' allows us to only copy the 'youngest' version of\n // any property. Thi
s set should be precalculated. We also need to\n // consider this for support
ing 'super'.\n var used = {};\n // start with inSrc\n var p = inSrc;\n
// The default is HTMLElement.prototype, so we add a test to avoid mixing in\
n // native prototypes\n while (p !== inNative && p !== HTMLElement.protot
ype) {\n var keys = Object.getOwnPropertyNames(p);\n for (var i=0, k;
k=keys[i]; i++) {\n if (!used[k]) {\n Object.defineProperty(inTa
rget, k,\n Object.getOwnPropertyDescriptor(p, k));\n used[
k] = 1;\n }\n }\n p = Object.getPrototypeOf(p);\n }\n }\n\n
function created(element) {\n // invoke createdCallback\n if (element.cr
eatedCallback) {\n element.createdCallback();\n }\n }\n\n // attribute
watching\n\n function overrideAttributeApi(prototype) {\n // overrides to i
mplement callbacks\n // TODO(sjmiles): should support access via .attributes
NamedNodeMap\n // TODO(sjmiles): preserves user defined overrides, if any\n
if (prototype.setAttribute._polyfilled) {\n return;\n }\n var setAt
tribute = prototype.setAttribute;\n prototype.setAttribute = function(name, v
alue) {\n changeAttribute.call(this, name, value, setAttribute);\n }\n
var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribut
e = function(name) {\n changeAttribute.call(this, name, null, removeAttribu
te);\n }\n prototype.setAttribute._polyfilled = true;\n }\n\n // https:/
/dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\n // index.html#dfn-att
ribute-changed-callback\n function changeAttribute(name, value, operation) {\n
name = name.toLowerCase();\n var oldValue = this.getAttribute(name);\n
operation.apply(this, arguments);\n var newValue = this.getAttribute(name);\n
if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n
this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n //
element registry (maps tag names to definitions)\n\n var registry = {};\n\n f
unction getRegisteredDefinition(name) {\n if (name) {\n return registry[
name.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definiti
on) {\n registry[name] = definition;\n }\n\n function generateConstructor(d
efinition) {\n return function() {\n return instantiate(definition);\n
};\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function
createElementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support
non-HTML elements,\n // just call createElementNS for non HTML Elements\n
if (namespace === HTML_NAMESPACE) {\n return createElement(tag, typeExtens
ion);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n
}\n\n function createElement(tag, typeExtension) {\n // TODO(sjmiles): ignor
e 'tag' when using 'typeExtension', we could\n // error check it, or perhaps
there should only ever be one argument\n var definition = getRegisteredDefini
tion(typeExtension || tag);\n if (definition) {\n if (tag == definition.
tag && typeExtension == definition.is) {\n return new definition.ctor();\
n }\n // Handle empty string for type extension.\n if (!typeExten
sion && !definition.is) {\n return new definition.ctor();\n }\n }
\n\n if (typeExtension) {\n var element = createElement(tag);\n ele
ment.setAttribute('is', typeExtension);\n return element;\n }\n var e
lement = domCreateElement(tag);\n // Custom tags should be HTMLElements even
if not upgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTM
LElement);\n }\n return element;\n }\n\n function upgradeElement(element
) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE))
{\n var is = element.getAttribute('is');\n var definition = getRegiste
redDefinition(is || element.localName);\n if (definition) {\n if (is
&& definition.tag == element.localName) {\n return upgrade(element, de
finition);\n } else if (!is && !definition.extends) {\n return u
pgrade(element, definition);\n }\n }\n }\n }\n\n function clone
Node(deep) {\n // call original clone\n var n = domCloneNode.call(this, de
ep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // r
eturn the clone\n return n;\n }\n // capture native createElement before we
override it\n\n var domCreateElement = document.createElement.bind(document);\
n var domCreateElementNS = document.createElementNS.bind(document);\n\n // cap
ture native cloneNode before we override it\n\n var domCloneNode = Node.prototy
pe.cloneNode;\n\n // exports\n\n document.registerElement = register;\n docum
ent.createElement = createElement; // override\n document.createElementNS = cre
ateElementNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n
\n scope.registry = registry;\n\n /**\n * Upgrade an element to a custom ele
ment. Upgrading an element\n * causes the custom prototype to be applied, an `
is` attribute\n * to be attached (as needed), and invocation of the `readyCall
back`.\n * `upgrade` does nothing if the element is already upgraded, or\n *
if it matches no registered custom tag name.\n *\n * @method ugprade\n *
@param {Element} element The element to upgrade.\n * @return {Element} The upg
raded element.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custo
m 'instanceof'. This is necessary when CustomElements\n// are implemented via a
mixin strategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__
&& !useNative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n wh
ile (p) {\n // NOTE: this is not technically correct since we're not checki
ng if\n // an object is an instance of a constructor; however, this should\
n // be good enough for the mixin strategy.\n if (p === ctor.prototype
) {\n return true;\n }\n p = p.__proto__;\n }\n return fa
lse;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instan
ceof base;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reserved
TagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElemen
t;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.Cu
stomElements);\n", | 152 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Implements `docum
ent.registerElement`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extens
ions to the `document` object.\n * @class Document\n*/\n\n(function(scope) {\n\n
// imports\n\nif (!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nv
ar flags = scope.flags;\n\n// native document.registerElement?\n\nvar hasNative
= Boolean(document.registerElement);\n// For consistent timing, use native custo
m elements only when not polyfilling\n// other key related web components featur
es.\nvar useNative = !flags.register && hasNative && !window.ShadowDOMPolyfill &
& (!window.HTMLImports || HTMLImports.useNative);\n\nif (useNative) {\n\n // st
ub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.
upgradeElement = nop;\n\n scope.watchShadow = nop;\n scope.upgrade = nop;\n s
cope.upgradeAll = nop;\n scope.upgradeSubtree = nop;\n scope.observeDocument =
nop;\n scope.upgradeDocument = nop;\n scope.upgradeDocumentTree = nop;\n sco
pe.takeRecords = nop;\n scope.reservedTagList = [];\n\n} else {\n\n /**\n *
Registers a custom tag name with the document.\n *\n * When a registered ele
ment is created, a `readyCallback` method is called\n * in the scope of the el
ement. The `readyCallback` method can be specified on\n * either `options.prot
otype` or `options.lifecycle` with the latter taking\n * precedence.\n *\n
* @method register\n * @param {String} name The tag name to register. Must in
clude a dash ('-'),\n * for example 'x-component'.\n * @param {Object} op
tions\n * @param {String} [options.extends]\n * (_off spec_) Tag nam
e of an element to extend (or blank for a new\n * element). This paramete
r is not part of the specification, but instead\n * is a hint for the pol
yfill because the extendee is difficult to infer.\n * Remember that the i
nput prototype must chain to the extended element's\n * prototype (or HTM
LElement.prototype) regardless of the value of\n * `extends`.\n * @p
aram {Object} options.prototype The prototype to use for the new\n * elem
ent. The prototype must inherit from HTMLElement.\n * @param {Object} [opti
ons.lifecycle]\n * Callbacks that fire at important phases in the life of
the custom\n * element.\n *\n * @example\n * FancyButton = do
cument.registerElement(\"fancy-button\", {\n * extends: 'button',\n *
prototype: Object.create(HTMLButtonElement.prototype, {\n * r
eadyCallback: {\n * value: function() {\n * console.
log(\"a fancy-button was created\",\n * }\n * }\n *
})\n * });\n * @return {Function} Constructor for the newly regist
ered type.\n */\n function register(name, options) {\n //console.warn('doc
ument.registerElement(\"' + name + '\", ', options, ')');\n // construct a de
fintion out of options\n // TODO(sjmiles): probably should clone options inst
ead of mutating it\n var definition = options || {};\n if (!name) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first arg
ument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first ar
gument (\\'name\\') must contain a dash (\\'-\\'). Argument provided was \\'' +
String(name) + '\\'.');\n }\n // prevent registering reserved names\n i
f (isReservedTag(name)) {\n throw new Error('Failed to execute \\'registerE
lement\\' on \\'Document\\': Registration failed for type \\'' + String(name) +
'\\'. The type name is invalid.');\n }\n // elements may only be registere
d once\n if (getRegisteredDefinition(name)) {\n throw new Error('Duplica
teDefinitionError: a type with name \\'' + String(name) + '\\' is already regist
ered');\n }\n // must have a prototype, default to an extension of HTMLEle
ment\n // TODO(sjmiles): probably should throw if no prototype, check spec\n
if (!definition.prototype) {\n // TODO(sjmiles): replace with more appro
priate error (EricB can probably\n // offer guidance)\n throw new Erro
r('Options missing required prototype property');\n }\n // record name\n
definition.__name = name.toLowerCase();\n // ensure a lifecycle object so w
e don't have to null test it\n definition.lifecycle = definition.lifecycle ||
{};\n // build a list of ancestral custom elements (for native base detectio
n)\n // TODO(sjmiles): we used to need to store this, but current code only\n
// uses it in 'resolveTagName': it should probably be inlined\n definitio
n.ancestry = ancestry(definition.extends);\n // extensions of native speciali
zations of HTMLElement require localName\n // to remain native, and use secon
dary 'is' specifier for extension type\n resolveTagName(definition);\n //
some platforms require modifications to the user-supplied prototype\n // chai
n\n resolvePrototypeChain(definition);\n // overrides to implement attribu
teChanged callback\n overrideAttributeApi(definition.prototype);\n // 7.1.
5: Register the DEFINITION with DOCUMENT\n registerDefinition(definition.__na
me, definition);\n // 7.1.7. Run custom element constructor generation algori
thm with PROTOTYPE\n // 7.1.8. Return the output of the previous step.\n d
efinition.ctor = generateConstructor(definition);\n definition.ctor.prototype
= definition.prototype;\n // force our .constructor to be our actual constru
ctor\n definition.prototype.constructor = definition.ctor;\n // if initial
parsing is complete\n if (scope.ready) {\n // upgrade any pre-existing
nodes of this type\n scope.upgradeDocumentTree(document);\n }\n retur
n definition.ctor;\n }\n\n function isReservedTag(name) {\n for (var i = 0;
i < reservedTagList.length; i++) {\n if (name === reservedTagList[i]) {\n
return true;\n }\n }\n }\n\n var reservedTagList = [\n 'anno
tation-xml', 'color-profile', 'font-face', 'font-face-src',\n 'font-face-uri'
, 'font-face-format', 'font-face-name', 'missing-glyph'\n ];\n\n function ance
stry(extnds) {\n var extendee = getRegisteredDefinition(extnds);\n if (ext
endee) {\n return ancestry(extendee.extends).concat([extendee]);\n }\n
return [];\n }\n\n function resolveTagName(definition) {\n // if we are e
xplicitly extending something, that thing is our\n // baseTag, unless it repr
esents a custom component\n var baseTag = definition.extends;\n // if our
ancestry includes custom components, we only have a\n // baseTag if one of th
em does\n for (var i=0, a; (a=definition.ancestry[i]); i++) {\n baseTag
= a.is && a.tag;\n }\n // our tag is our baseTag, if it exists, and otherw
ise just our name\n definition.tag = baseTag || definition.__name;\n if (b
aseTag) {\n // if there is a base tag, use secondary 'is' specifier\n
definition.is = definition.__name;\n }\n }\n\n function resolvePrototypeCha
in(definition) {\n // if we don't support __proto__ we need to locate the nat
ive level\n // prototype for precise mixing in\n if (!Object.__proto__) {\
n // default prototype\n var nativePrototype = HTMLElement.prototype;\
n // work out prototype when using type-extension\n if (definition.is)
{\n var inst = document.createElement(definition.tag);\n var expe
ctedPrototype = Object.getPrototypeOf(inst);\n // only set nativePrototyp
e if it will actually appear in the definition's chain\n if (expectedProt
otype === definition.prototype) {\n nativePrototype = expectedPrototype
;\n }\n }\n // ensure __proto__ reference is installed at each
point on the prototype\n // chain.\n // NOTE: On platforms without __p
roto__, a mixin strategy is used instead\n // of prototype swizzling. In th
is case, this generated __proto__ provides\n // limited support for prototy
pe traversal.\n var proto = definition.prototype, ancestor;\n while (p
roto && (proto !== nativePrototype)) {\n ancestor = Object.getPrototypeOf
(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n
}\n // cache this in case of mixin\n definition.native = nativePrototy
pe;\n }\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n /
/ 4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMEN
T by this new object\n //\n // the custom element instantiation algorithm
must also ensure that the\n // output is a valid DOM element with the proper
wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag),
definition);\n }\n\n function upgrade(element, definition) {\n // some defi
nitions specify an 'is' attribute\n if (definition.is) {\n element.setAt
tribute('is', definition.is);\n }\n // make 'element' implement definition
.prototype\n implement(element, definition);\n // flag as upgraded\n el
ement.__upgraded__ = true;\n // lifecycle management\n created(element);\n
// attachedCallback fires in tree order, call before recursing\n scope.in
sertedNode(element);\n // there should never be a shadow root on element at t
his point\n scope.upgradeSubtree(element);\n // OUTPUT\n return element
;\n }\n\n function implement(element, definition) {\n // prototype swizzlin
g is best\n if (Object.__proto__) {\n element.__proto__ = definition.pro
totype;\n } else {\n // where above we can re-acquire inPrototype via\n
// getPrototypeOf(Element), we cannot do so when\n // we use mixin, so
we install a magic reference\n customMixin(element, definition.prototype,
definition.native);\n element.__proto__ = definition.prototype;\n }\n }
\n\n function customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): '
used' allows us to only copy the 'youngest' version of\n // any property. Thi
s set should be precalculated. We also need to\n // consider this for support
ing 'super'.\n var used = {};\n // start with inSrc\n var p = inSrc;\n
// The default is HTMLElement.prototype, so we add a test to avoid mixing in\
n // native prototypes\n while (p !== inNative && p !== HTMLElement.protot
ype) {\n var keys = Object.getOwnPropertyNames(p);\n for (var i=0, k;
k=keys[i]; i++) {\n if (!used[k]) {\n Object.defineProperty(inTa
rget, k,\n Object.getOwnPropertyDescriptor(p, k));\n used[
k] = 1;\n }\n }\n p = Object.getPrototypeOf(p);\n }\n }\n\n
function created(element) {\n // invoke createdCallback\n if (element.cr
eatedCallback) {\n element.createdCallback();\n }\n }\n\n // attribute
watching\n\n function overrideAttributeApi(prototype) {\n // overrides to i
mplement callbacks\n // TODO(sjmiles): should support access via .attributes
NamedNodeMap\n // TODO(sjmiles): preserves user defined overrides, if any\n
if (prototype.setAttribute._polyfilled) {\n return;\n }\n var setAt
tribute = prototype.setAttribute;\n prototype.setAttribute = function(name, v
alue) {\n changeAttribute.call(this, name, value, setAttribute);\n }\n
var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribut
e = function(name) {\n changeAttribute.call(this, name, null, removeAttribu
te);\n }\n prototype.setAttribute._polyfilled = true;\n }\n\n // https:/
/dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\n // index.html#dfn-att
ribute-changed-callback\n function changeAttribute(name, value, operation) {\n
name = name.toLowerCase();\n var oldValue = this.getAttribute(name);\n
operation.apply(this, arguments);\n var newValue = this.getAttribute(name);\n
if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n
this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n //
element registry (maps tag names to definitions)\n\n var registry = {};\n\n f
unction getRegisteredDefinition(name) {\n if (name) {\n return registry[
name.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definiti
on) {\n registry[name] = definition;\n }\n\n function generateConstructor(d
efinition) {\n return function() {\n return instantiate(definition);\n
};\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function
createElementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support
non-HTML elements,\n // just call createElementNS for non HTML Elements\n
if (namespace === HTML_NAMESPACE) {\n return createElement(tag, typeExtens
ion);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n
}\n\n function createElement(tag, typeExtension) {\n // TODO(sjmiles): ignor
e 'tag' when using 'typeExtension', we could\n // error check it, or perhaps
there should only ever be one argument\n var definition = getRegisteredDefini
tion(typeExtension || tag);\n if (definition) {\n if (tag == definition.
tag && typeExtension == definition.is) {\n return new definition.ctor();\
n }\n // Handle empty string for type extension.\n if (!typeExten
sion && !definition.is) {\n return new definition.ctor();\n }\n }
\n\n if (typeExtension) {\n var element = createElement(tag);\n ele
ment.setAttribute('is', typeExtension);\n return element;\n }\n var e
lement = domCreateElement(tag);\n // Custom tags should be HTMLElements even
if not upgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTM
LElement);\n }\n return element;\n }\n\n function upgradeElement(element
) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE))
{\n var is = element.getAttribute('is');\n var definition = getRegiste
redDefinition(is || element.localName);\n if (definition) {\n if (is
&& definition.tag == element.localName) {\n return upgrade(element, de
finition);\n } else if (!is && !definition.extends) {\n return u
pgrade(element, definition);\n }\n }\n }\n }\n\n function clone
Node(deep) {\n // call original clone\n var n = domCloneNode.call(this, de
ep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // r
eturn the clone\n return n;\n }\n // capture native createElement before we
override it\n\n var domCreateElement = document.createElement.bind(document);\
n var domCreateElementNS = document.createElementNS.bind(document);\n\n // cap
ture native cloneNode before we override it\n\n var domCloneNode = Node.prototy
pe.cloneNode;\n\n // exports\n\n document.registerElement = register;\n docum
ent.createElement = createElement; // override\n document.createElementNS = cre
ateElementNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n
\n scope.registry = registry;\n\n /**\n * Upgrade an element to a custom ele
ment. Upgrading an element\n * causes the custom prototype to be applied, an `
is` attribute\n * to be attached (as needed), and invocation of the `readyCall
back`.\n * `upgrade` does nothing if the element is already upgraded, or\n *
if it matches no registered custom tag name.\n *\n * @method ugprade\n *
@param {Element} element The element to upgrade.\n * @return {Element} The upg
raded element.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custo
m 'instanceof'. This is necessary when CustomElements\n// are implemented via a
mixin strategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__
&& !useNative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n wh
ile (p) {\n // NOTE: this is not technically correct since we're not checki
ng if\n // an object is an instance of a constructor; however, this should\
n // be good enough for the mixin strategy.\n if (p === ctor.prototype
) {\n return true;\n }\n p = p.__proto__;\n }\n return fa
lse;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instan
ceof base;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reserved
TagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElemen
t;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.Cu
stomElements);\n", |
153 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
import\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object
for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel='
+ IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse:
function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse onc
e\n inDocument.__parsed = true;\n // all parsable elements in inDocume
nt (depth-first pre-order traversal)\n var elts = inDocument.querySelectorA
ll(parser.selectors);\n // for each parsable node type, call the mapped par
sing method\n forEach(elts, function(e) {\n parser[parser.map[e.loca
lName]](e);\n });\n // upgrade all upgradeable static elements, anythi
ng dynamically\n // created should be caught by observer\n CustomEleme
nts.upgradeDocument(inDocument);\n // observe document for dom changes\n
CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functi
on(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.pa
rseImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (li
nkElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction
isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.g
etAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.fo
rEach.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser
;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);", | 153 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
import\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object
for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel='
+ IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse:
function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse onc
e\n inDocument.__parsed = true;\n // all parsable elements in inDocume
nt (depth-first pre-order traversal)\n var elts = inDocument.querySelectorA
ll(parser.selectors);\n // for each parsable node type, call the mapped par
sing method\n forEach(elts, function(e) {\n parser[parser.map[e.loca
lName]](e);\n });\n // upgrade all upgradeable static elements, anythi
ng dynamically\n // created should be caught by observer\n CustomEleme
nts.upgradeDocument(inDocument);\n // observe document for dom changes\n
CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functi
on(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.pa
rseImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (li
nkElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction
isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.g
etAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.fo
rEach.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser
;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);", |
154 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\n// boo
tstrap parsing\nfunction bootstrap() {\n // parse document\n CustomElements.pa
rser.parse(document);\n // one more pass before register is 'live'\n CustomEle
ments.upgradeDocument(document);\n // install upgrade hook if HTMLImports are a
vailable\n if (window.HTMLImports) {\n HTMLImports.__importsParsingHook = fu
nction(elt) {\n CustomElements.parser.parse(elt.import);\n }\n }\n //
set internal 'ready' flag, now document.registerElement will trigger \n // sync
hronous upgrades\n CustomElements.ready = true;\n // async to ensure *native*
custom elements upgrade prior to this\n // DOMContentLoaded can fire before ele
ments upgrade (e.g. when there's\n // an external script)\n setTimeout(functio
n() {\n // capture blunt profiling data\n CustomElements.readyTime = Date.
now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElem
ents.readyTime - HTMLImports.readyTime;\n }\n // notify the system that we
are bootstrapped\n document.dispatchEvent(\n new CustomEvent('WebCompon
entsReady', {bubbles: true})\n );\n });\n}\n\n// CustomEvent shim for IE\nif
(typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function(i
nType, params) {\n params = params || {};\n var e = document.createEvent('
CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(p
arams.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.pr
ototype = window.Event.prototype;\n}\n\n// When loading at readyState complete t
ime (or via flag), boot custom elements\n// immediately.\n// If relevant, HTMLIm
ports must already be loaded.\nif (document.readyState === 'complete' || scope.f
lags.eager) {\n bootstrap();\n// When loading at readyState interactive time, b
ootstrap only if HTMLImports\n// are not pending. Also avoid IE as the semantics
of this state are unreliable.\n} else if (document.readyState === 'interactive'
&& !window.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready
)) {\n bootstrap();\n// When loading at other readyStates, wait for the appropr
iate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImport
s && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n wi
ndow.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\n"
, | 154 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\n// boo
tstrap parsing\nfunction bootstrap() {\n // parse document\n CustomElements.pa
rser.parse(document);\n // one more pass before register is 'live'\n CustomEle
ments.upgradeDocument(document);\n // install upgrade hook if HTMLImports are a
vailable\n if (window.HTMLImports) {\n HTMLImports.__importsParsingHook = fu
nction(elt) {\n CustomElements.parser.parse(elt.import);\n }\n }\n //
set internal 'ready' flag, now document.registerElement will trigger \n // sync
hronous upgrades\n CustomElements.ready = true;\n // async to ensure *native*
custom elements upgrade prior to this\n // DOMContentLoaded can fire before ele
ments upgrade (e.g. when there's\n // an external script)\n setTimeout(functio
n() {\n // capture blunt profiling data\n CustomElements.readyTime = Date.
now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElem
ents.readyTime - HTMLImports.readyTime;\n }\n // notify the system that we
are bootstrapped\n document.dispatchEvent(\n new CustomEvent('WebCompon
entsReady', {bubbles: true})\n );\n });\n}\n\n// CustomEvent shim for IE\nif
(typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function(i
nType, params) {\n params = params || {};\n var e = document.createEvent('
CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(p
arams.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.pr
ototype = window.Event.prototype;\n}\n\n// When loading at readyState complete t
ime (or via flag), boot custom elements\n// immediately.\n// If relevant, HTMLIm
ports must already be loaded.\nif (document.readyState === 'complete' || scope.f
lags.eager) {\n bootstrap();\n// When loading at readyState interactive time, b
ootstrap only if HTMLImports\n// are not pending. Also avoid IE as the semantics
of this state are unreliable.\n} else if (document.readyState === 'interactive'
&& !window.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready
)) {\n bootstrap();\n// When loading at other readyStates, wait for the appropr
iate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImport
s && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n wi
ndow.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\n"
, |
155 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function() {\n\nif (wind
ow.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var
fns = ['upgradeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocume
nt'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn)
{\n original[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach
(function(fn) {\n CustomElements[fn] = function(inNode) {\n return origi
nal[fn](wrap(inNode));\n };\n });\n\n}\n\n})();\n", | 155 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function() {\n\nif (wind
ow.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var
fns = ['upgradeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocume
nt'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn)
{\n original[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach
(function(fn) {\n CustomElements[fn] = function(inNode) {\n return origi
nal[fn](wrap(inNode));\n };\n });\n\n}\n\n})();\n", |
156 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n '
use strict';\n\n // polyfill performance.now\n\n if (!window.performance) {\n
var start = Date.now();\n // only at millisecond precision\n window.per
formance = {now: function(){ return Date.now() - start }};\n }\n\n // polyfill
for requestAnimationFrame\n\n if (!window.requestAnimationFrame) {\n window
.requestAnimationFrame = (function() {\n var nativeRaf = window.webkitReque
stAnimationFrame ||\n window.mozRequestAnimationFrame;\n\n return na
tiveRaf ?\n function(callback) {\n return nativeRaf(function() {
\n callback(performance.now());\n });\n } :\n
function( callback ){\n return window.setTimeout(callback, 1000 / 60);\
n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n window
.cancelAnimationFrame = (function() {\n return window.webkitCancelAnimatio
nFrame ||\n window.mozCancelAnimationFrame ||\n function(id) {\n
clearTimeout(id);\n };\n })();\n }\n\n // Make a stub for Po
lymer() for polyfill purposes; under the HTMLImports\n // polyfill, scripts in
the main document run before imports. That means\n // if (1) polymer is importe
d and (2) Polymer() is called in the main document\n // in a script after the i
mport, 2 occurs before 1. We correct this here\n // by specfiically patching Po
lymer(); this is not necessary under native\n // HTMLImports.\n var elementDec
larations = [];\n\n var polymerStub = function(name, dictionary) {\n if ((ty
peof name !== 'string') && (arguments.length === 1)) {\n Array.prototype.pu
sh.call(arguments, document._currentScript);\n }\n elementDeclarations.pus
h(arguments);\n };\n window.Polymer = polymerStub;\n\n // deliver queued delc
arations\n scope.consumeDeclarations = function(callback) {\n scope.consumeD
eclarations = function() {\n throw 'Possible attempt to load Polymer twice';
\n };\n if (callback) {\n callback(elementDeclarations);\n }\n
elementDeclarations = null;\n };\n\n function installPolymerWarning() {\n i
f (window.Polymer === polymerStub) {\n window.Polymer = function() {\n
throw new Error('You tried to use polymer without loading it first. To ' +\n
'load polymer, <link rel=\"import\" href=\"' + \n 'components/
polymer/polymer.html\">');\n };\n }\n }\n\n // Once DOMContent has loa
ded, any main document scripts that depend on\n // Polymer() should have run. C
alling Polymer() now is an error until\n // polymer is imported.\n if (HTMLImp
orts.useNative) {\n installPolymerWarning();\n } else {\n addEventListene
r('DOMContentLoaded', installPolymerWarning);\n }\n\n})(window.Platform);\n", | 156 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n '
use strict';\n\n // polyfill performance.now\n\n if (!window.performance) {\n
var start = Date.now();\n // only at millisecond precision\n window.per
formance = {now: function(){ return Date.now() - start }};\n }\n\n // polyfill
for requestAnimationFrame\n\n if (!window.requestAnimationFrame) {\n window
.requestAnimationFrame = (function() {\n var nativeRaf = window.webkitReque
stAnimationFrame ||\n window.mozRequestAnimationFrame;\n\n return na
tiveRaf ?\n function(callback) {\n return nativeRaf(function() {
\n callback(performance.now());\n });\n } :\n
function( callback ){\n return window.setTimeout(callback, 1000 / 60);\
n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n window
.cancelAnimationFrame = (function() {\n return window.webkitCancelAnimatio
nFrame ||\n window.mozCancelAnimationFrame ||\n function(id) {\n
clearTimeout(id);\n };\n })();\n }\n\n // Make a stub for Po
lymer() for polyfill purposes; under the HTMLImports\n // polyfill, scripts in
the main document run before imports. That means\n // if (1) polymer is importe
d and (2) Polymer() is called in the main document\n // in a script after the i
mport, 2 occurs before 1. We correct this here\n // by specfiically patching Po
lymer(); this is not necessary under native\n // HTMLImports.\n var elementDec
larations = [];\n\n var polymerStub = function(name, dictionary) {\n if ((ty
peof name !== 'string') && (arguments.length === 1)) {\n Array.prototype.pu
sh.call(arguments, document._currentScript);\n }\n elementDeclarations.pus
h(arguments);\n };\n window.Polymer = polymerStub;\n\n // deliver queued delc
arations\n scope.consumeDeclarations = function(callback) {\n scope.consumeD
eclarations = function() {\n throw 'Possible attempt to load Polymer twice';
\n };\n if (callback) {\n callback(elementDeclarations);\n }\n
elementDeclarations = null;\n };\n\n function installPolymerWarning() {\n i
f (window.Polymer === polymerStub) {\n window.Polymer = function() {\n
throw new Error('You tried to use polymer without loading it first. To ' +\n
'load polymer, <link rel=\"import\" href=\"' + \n 'components/
polymer/polymer.html\">');\n };\n }\n }\n\n // Once DOMContent has loa
ded, any main document scripts that depend on\n // Polymer() should have run. C
alling Polymer() now is an error until\n // polymer is imported.\n if (HTMLImp
orts.useNative) {\n installPolymerWarning();\n } else {\n addEventListene
r('DOMContentLoaded', installPolymerWarning);\n }\n\n})(window.Platform);\n", |
157 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /
/ It's desireable to provide a default stylesheet \n // that's convenient for s
tyling unresolved elements, but\n // it's cumbersome to have to include this ma
nually in every page.\n // It would make sense to put inside some HTMLImport bu
t \n // the HTMLImports polyfill does not allow loading of stylesheets \n // t
hat block rendering. Therefore this injection is tolerated here.\n //\n // NOT
E: position: relative fixes IE's failure to inherit opacity \n // when a child
is not statically positioned.\n var style = document.createElement('style');\n
style.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in
0.2s;' \n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; di
splay: block; overflow: hidden; position: relative;' \n + ' } \\n'\n ;
\n var head = document.querySelector('head');\n head.insertBefore(style, head.
firstChild);\n\n})(Platform);\n", | 157 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /
/ It's desireable to provide a default stylesheet \n // that's convenient for s
tyling unresolved elements, but\n // it's cumbersome to have to include this ma
nually in every page.\n // It would make sense to put inside some HTMLImport bu
t \n // the HTMLImports polyfill does not allow loading of stylesheets \n // t
hat block rendering. Therefore this injection is tolerated here.\n //\n // NOT
E: position: relative fixes IE's failure to inherit opacity \n // when a child
is not statically positioned.\n var style = document.createElement('style');\n
style.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in
0.2s;' \n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; di
splay: block; overflow: hidden; position: relative;' \n + ' } \\n'\n ;
\n var head = document.querySelector('head');\n head.insertBefore(style, head.
firstChild);\n\n})(Platform);\n", |
158 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n f
unction withDependencies(task, depends) {\n depends = depends || [];\n if
(!depends.map) {\n depends = [depends];\n }\n return task.apply(this,
depends.map(marshal));\n }\n\n function module(name, dependsOrFactory, module
Factory) {\n var module;\n switch (arguments.length) {\n case 0:\n
return;\n case 1:\n module = null;\n break;\n case
2:\n // dependsOrFactory is `factory` in this case\n module = depe
ndsOrFactory.apply(this);\n break;\n default:\n // dependsOrF
actory is `depends` in this case\n module = withDependencies(moduleFactor
y, dependsOrFactory);\n break;\n }\n modules[name] = module;\n };\
n\n function marshal(name) {\n return modules[name];\n }\n\n var modules =
{};\n\n function using(depends, task) {\n HTMLImports.whenImportsReady(func
tion() {\n withDependencies(task, depends);\n });\n };\n\n // exports\
n\n scope.marshal = marshal;\n // `module` confuses commonjs detectors\n scop
e.modularize = module;\n scope.using = using;\n\n})(window);\n" | 158 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n f
unction withDependencies(task, depends) {\n depends = depends || [];\n if
(!depends.map) {\n depends = [depends];\n }\n return task.apply(this,
depends.map(marshal));\n }\n\n function module(name, dependsOrFactory, module
Factory) {\n var module;\n switch (arguments.length) {\n case 0:\n
return;\n case 1:\n module = null;\n break;\n case
2:\n // dependsOrFactory is `factory` in this case\n module = depe
ndsOrFactory.apply(this);\n break;\n default:\n // dependsOrF
actory is `depends` in this case\n module = withDependencies(moduleFactor
y, dependsOrFactory);\n break;\n }\n modules[name] = module;\n };\
n\n function marshal(name) {\n return modules[name];\n }\n\n var modules =
{};\n\n function using(depends, task) {\n HTMLImports.whenImportsReady(func
tion() {\n withDependencies(task, depends);\n });\n };\n\n // exports\
n\n scope.marshal = marshal;\n // `module` confuses commonjs detectors\n scop
e.modularize = module;\n scope.using = using;\n\n})(window);\n" |
159 ] | 159 ] |
160 } | 160 } |
OLD | NEW |