LyogRmV1aWxsZSBkZSBzdHlsZSBEb2NCb29rIGR1IHByb2pldCBUcmFkdWMub3JnICAgICAgICAgICAgICAgICovCi8qIERvY0Jvb2sgQ1NTIHN0eWxlc2hlZXQgb2YgdGhlIFRyYWR1Yy5vcmcgcHJvamVjdCAgICAgICAgICAgICAqLwoKLyogKGMpIEplYW4tUGhpbGlwcGUgR3XpcmFyZCAtIDE0IGFv+3QgMjAwNCAgICAgICAgICAgICAgICAgICAgICovCi8qIChjKSBKZWFuLVBoaWxpcHBlIEd16XJhcmQgLSAxNCBBdWd1c3QgMjAwNCAgICAgICAgICAgICAgICAgICAqLwoKLyogQ2V0dGUgZmV1aWxsZSBkZSBzdHlsZSBlc3QgbGlicmUsIHZvdXMgcG91dmV6IGxhICAgICAgICAgICAgICovCi8qIHJlZGlzdHJpYnVlciBldCBsYSBtb2RpZmllciBzZWxvbiBsZXMgdGVybWVzIGRlIGxhIExpY2VuY2UgICAqLwovKiBBcnQgTGlicmUuIFZvdXMgdHJvdXZlcmV6IHVuIGV4ZW1wbGFpcmUgZGUgY2V0dGUgTGljZW5jZSBzdXIgKi8KLyogaHR0cDovL3RpZ3JlcmF5ZS5vcmcvUGV0aXQtZ3VpZGUtZHUtdHJhZHVjdGV1ci5odG1sI2xpY2VuY2UtYXJ0LWxpYnJlICovCgovKiBUaGlzIHdvcmsgb2YgYXJ0IGlzIGZyZWUsIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgKi8KLyogbW9kaWZ5IGl0IGFjY29yZGluZyB0byB0ZXJtcyBvZiB0aGUgRnJlZSBBcnQgbGljZW5zZS4gWW91ICAgICovCi8qIHdpbGwgZmluZCBhIHNwZWNpbWVuIG9mIHRoaXMgbGljZW5zZSBvbiB0aGUgQ29weWxlZnQgICAgICAgICAqLwovKiBBdHRpdHVkZSB3ZWIgc2l0ZTogaHR0cDovL2FydGxpYnJlLm9yZyBhcyB3ZWxsIGFzIG9uIG90aGVyICAgKi8KLyogc2l0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIFBsZWFzZSBub3RlIHRoYXQgdGhlIEZyZW5jaCB2ZXJzaW9uIG9mIHRoaXMgbGljZW5jZSBhcyBzaG93biAqLwovKiBvbiBodHRwOi8vdGlncmVyYXllLm9yZy9QZXRpdC1ndWlkZS1kdS10cmFkdWN0ZXVyLmh0bWwjbGljZW5jZS1hcnQtbGlicmUgKi8KLyogaXMgb25seSBvZmZpY2lhbCBsaWNlbmNlIG9mIHRoaXMgZG9jdW1lbnQuIFRoZSBFbmdsaXNoICAgICAgICovCi8qIGlzIG9ubHkgcHJvdmlkZWQgdG8gaGVscCB5b3UgdW5kZXJzdGFuZCB0aGlzIGxpY2VuY2UuICAgICAgICAqLwoKLyogTGEgZGVybmnocmUgdmVyc2lvbiBkZSBjZXR0ZSBmZXVpbGxlIGRlIHN0eWxlIGVzdCB0b3Vqb3VycyAgICovCi8qIGRpc3BvbmlibGUgc3VyoDogaHR0cDovL3RpZ3JlcmF5ZS5vcmcvc3R5bGUuY3NzICAgICAgICAgICAgICAqLwovKiBFbGxlIGVzdCDpZ2FsZW1lbnQgZGlzcG9uaWJsZSBzdXKgOiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogaHR0cDovL3d3dy50cmFkdWMub3JnL2RvY3MvSE9XVE8vbGVjdHVyZS9zdHlsZS5jc3MgICAgICAgICAgICovCgovKiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzdHlsZXNoZWV0IGlzIGF2YWlsYWJsZSBmcm9tOiAgICAgKi8KLyogaHR0cDovL3RpZ3JlcmF5ZS5vcmcvc3R5bGUuY3NzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIEl0IGlzIGFsc28gYXZhaWxhYmxlIG9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiBodHRwOi8vd3d3LnRyYWR1Yy5vcmcvZG9jcy9IT1dUTy9sZWN0dXJlL3N0eWxlLmNzcyAgICAgICAgICAgKi8KCi8qIE4naOlzaXRleiBwYXMg4CBlbnZveWVyIHZvcyBjb21tZW50YWlyZXMgZXQgY29ycmVjdGlvbnMg4CAgICAqLwovKiBKZWFuLVBoaWxpcHBlIEd16XJhcmQgPGplYW4tcGhpbGlwcGUuZ3VlcmFyZEB0aWdyZXJheWUub3JnPiAgKi8KCi8qIFBsZWFzZSBzZW5kIGZlZWRiYWNrIGFuZCBidWcgcmVwb3J0cyB0byAgICAgICAgICAgICAgICAgICAgICAqLwovKiBKZWFuLVBoaWxpcHBlIEd16XJhcmQgPGplYW4tcGhpbGlwcGUuZ3VlcmFyZEB0aWdyZXJheWUub3JnPiAgKi8KCi8qICRJZDogc3R5bGUuY3NzLHYgMS4xNCAyMDA0LzA5LzEwIDIwOjEyOjA5IGZldnJpZXIgRXhwIGZldnJpZXIgJCAqLwoKLyogUHLpc2VudGF0aW9uIGfpbulyYWxlIGR1IGRvY3VtZW50ICovCi8qIE92ZXJhbGwgZG9jdW1lbnQgcHJlc2VudGF0aW9uICovCgpib2R5IHsKICAgIC8qCiAgICBmb250LWZhbWlseTogQXBvbGxpbmUsICJVUlcgUGFsbGFkaW8gTCIsIEdhcmFtb25kLCBqR2FyYW1vbmQsCiAgICAgICAgICAgICAgICAgIkJpdHN0cmVhbSBDeWJlcmJpdCIsICJQYWxhdGlubyBMaW5vdHlwZSIsIHNlcmlmOwogICAgICovCiAgICBtYXJnaW46IDclOwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KCi8qIFRhaWxsZSBkdSB0ZXh0ZSAqLwovKiBUZXh0IHNpemUgKi8KCiogeyBmb250LXNpemU6IDEwMCU7IH0KCi8qIEdlc3Rpb24gZGVzIHRleHRlcyBtaXMgZW4gcmVsaWVmIGltYnJpcXXpcyAqLwovKiBFbWJlZGRlZCBlbXBoYXNpcyAqLwoKZW0geyBmb250LXN0eWxlOiBpdGFsaWM7IH0KZW0gZW0geyBmb250LXN0eWxlOiBub3JtYWw7IH0KZW0gZW0gZW0geyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qIFRpdHJlcyAqLwovKiBUaXRsZXMgKi8KCmgxIHsgZm9udC1zaXplOiAyMDAlOyBmb250LXdlaWdodDogOTAwOyB9CmgyIHsgZm9udC1zaXplOiAxNjAlOyBmb250LXdlaWdodDogOTAwOyB9CmgzIHsgZm9udC1zaXplOiAxMzAlOyBmb250LXdlaWdodDogYm9sZDsgfQpoNCB7IGZvbnQtc2l6ZTogMTE1JTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KaDUgeyBmb250LXNpemU6IDEwOCU7IGZvbnQtd2VpZ2h0OiBib2xkOyB9Cmg2IHsgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsgfQoKLyogTm9tIGRlIGZhbWlsbGUgZW4gcGV0aXRlcyBtYWp1c2N1bGVzICh1bmlxdWVtZW50IGVuIGZyYW7nYWlzKSAqLwovKiBMYXN0IG5hbWVzIGluIHNtYWxsIGNhcHMgKGZvciBGcmVuY2ggb25seSkgKi8KCipbY2xhc3N+PSJzdXJuYW1lIl06bGFuZyhmcikgeyBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7IH0KCi8qIEJsb2NzIGRlIGNpdGF0aW9uICovCi8qIFF1b3RhdGlvbiBibG9jcyAqLwoKZGl2W2NsYXNzfj0iYmxvY2txdW90ZSJdIHsKICBib3JkZXI6IHNvbGlkIDJweCAjQUFBOwogIHBhZGRpbmc6IDVweDsKICBtYXJnaW46IDVweDsKfQoKZGl2W2NsYXNzfj0iYmxvY2txdW90ZSJdID4gdGFibGUgewogIGJvcmRlcjogbm9uZTsKfQoKLyogQmxvY3MgbGl06XJhdXigOiBmb25kIGdyaXMgY2xhaXIgKi8KLyogTGl0ZXJhbCBibG9jczogbGlnaHQgZ3JheSBiYWNrZ3JvdW5kICovCgoqW2NsYXNzfj0ibGl0ZXJhbGxheW91dCJdIHsKICBiYWNrZ3JvdW5kOiAjZjBmMGYwOwogIHBhZGRpbmc6IDVweDsKICBtYXJnaW46IDVweDsKfQoKLyogUHJvZ3JhbW1lcyBldCBjYXB0dXJlcyB0ZXh0ZaA6IGZvbmQgYmxldSBjbGFpciAqLwovKiBMaXN0aW5nIGFuZCB0ZXh0IHNjcmVlbiBzbmFwc2hvdHM6IGxpZ2h0IGJsdWUgYmFja2dyb3VuZCAqLwoKKltjbGFzc349InByb2dyYW1saXN0aW5nIl0sICpbY2xhc3N+PSJzY3JlZW4iXSB7CiAgYmFja2dyb3VuZDogI2YwZjBmZjsKICBwYWRkaW5nOiA1cHg7CiAgbWFyZ2luOiA1cHg7Cn0KCi8qIExlcyB0ZXh0ZXMg4CByZW1wbGFjZXIgc29udCBzdXJsaWdu6XMgZW4gdmVydCBw4mxlICovCi8qIFJlcGxhY2VhYmxlIHRleHQgaW4gaGlnaGxpZ2h0ZWQgaW4gcGFsZSBncmVlbiAqLwoKKltjbGFzc349InJlcGxhY2VhYmxlIl0geyAKICAgIGJhY2tncm91bmQtY29sb3I6ICM5OGZiOTg7CiAgICBmb250LXN0eWxlOiBub3JtYWw7IH0KCi8qIFRhYmxlc6A6IGZvbmRzIGdyaXMgY2xhaXIgJiBib3JkcyBzaW1wbGVzICovCi8qIFRhYmxlczogbGlnaHQgZ3JheSBiYWNrZ3JvdW5kIGFuZCBzb2xpZCBib3JkZXJzICovCgoqW2NsYXNzfj0idGFibGUiXSAqW2NsYXNzfj0idGl0bGUiXSB7IHdpZHRoOjEwMCU7IGJvcmRlcjogMHB4OyB9Cgp0YWJsZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgIHBhZGRpbmc6IDJweDsKICAgIG1hcmdpbjogNXB4Owp9CgovKiBMaXN0ZXMgc2ltcGxlcyBlbiBzdHlsZSB0YWJsZSAqLwovKiBTaW1wbGVzIGxpc3RzIGluIHRhYmxlIHByZXNlbnRhdGlvbiAqLwoKdGFibGVbY2xhc3N+PSJzaW1wbGVsaXN0Il0gewogICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsKICAgIG1hcmdpbjogNXB4OwogICAgYm9yZGVyOiBzb2xpZCAxcHggI0FBQTsKfQoKdGFibGVbY2xhc3N+PSJzaW1wbGVsaXN0Il0gdGQgewogICAgYm9yZGVyOiBzb2xpZCAxcHggI0FBQTsKfQoKLyogTGVzIHRhYmxlcyAqLwovKiBUYWJsZXMgKi8KCipbY2xhc3N+PSJ0YWJsZSJdIHRhYmxlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7CiAgICBib3JkZXI6IHNvbGlkIDFweCAjQUFBOwp9CipbY2xhc3N+PSJpbmZvcm1hbHRhYmxlIl0gdGFibGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyB9Cgp0aCx0ZCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcGFkZGluZzogMC4xZW0gMC4zZW07CiAgICBlbXB0eS1jZWxsczogc2hvdzsgCn0KCi8qIEFsaWduZW1lbnQgZGVzIGNvbG9ubmVzICovCi8qIENvbHVubXMgYWxpZ25tZW50ICovCgp0ZFthbGlnbj1jZW50ZXJdICwgIHRoW2FsaWduPWNlbnRlcl0gIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9CnRkW2FsaWduPXJpZ2h0XSAsICAgdGhbYWxpZ249cmlnaHRdICAgeyB0ZXh0LWFsaWduOiByaWdodDsgfQp0ZFthbGlnbj1sZWZ0XSAsICAgIHRoW2FsaWduPWxlZnRdICAgIHsgdGV4dC1hbGlnbjogbGVmdDsgfQp0ZFthbGlnbj1qdXN0aWZ5XSAsIHRoW2FsaWduPWp1c3RpZnldIHsgdGV4dC1hbGlnbjoganVzdGlmeTsgfQoKLyogUGFzIGRlIG1hcmdlIGF1dG91ciBkZXMgaW1hZ2VzICovCi8qIE5vIGluc2lkZSBtYXJnaW5zIGZvciBpbWFnZXMgKi8KCmltZyB7IGJvcmRlcjogMDsgfQoKLyogTGVzIGxpZW5zIG5lIHNvbnQgcGFzIHNvdWxpZ27pcyAqLwovKiBObyB1bmRlcmxpbmVzIGZvciBsaW5rcyAqLwoKOmxpbmsgLCA6dmlzaXRlZCAsIDphY3RpdmUgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCi8qIFBydWRlbmNloDogY2FkcmUgamF1bmUgZXQgZm9uZCBqYXVuZSBjbGFpciAqLwovKiBDYXV0aW9uOiB5ZWxsb3cgYm9yZGVyIGFuZCBsaWdodCB5ZWxsb3cgYmFja2dyb3VuZCAqLwoKKltjbGFzc349ImNhdXRpb24iXSB7CiAgICBib3JkZXI6IHNvbGlkIDJweCB5ZWxsb3c7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmUwOwogICAgcGFkZGluZzogMWVtIDZweCAxZW0gOwogICAgbWFyZ2luOiA1cHg7Cn0KCipbY2xhc3N+PSJjYXV0aW9uIl0gdGggewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgoqW2NsYXNzfj0iY2F1dGlvbiJdIHRhYmxlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi8qIE5vdGUgaW1wb3J0YW50ZaA6IGNhZHJlIGphdW5lIGV0IGZvbmQgamF1bmUgY2xhaXIgKi8KLyogSW1wb3J0YW50OiB5ZWxsb3cgYm9yZGVyIGFuZCBsaWdodCB5ZWxsb3cgYmFja2dyb3VuZCAqLwoKKltjbGFzc349ImltcG9ydGFudCJdIHsKICAgIGJvcmRlcjogc29saWQgMnB4IHllbGxvdzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CiAgICBwYWRkaW5nOiAxZW0gNnB4IDFlbTsKICAgIG1hcmdpbjogNXB4Owp9CgoqW2NsYXNzfj0iaW1wb3J0YW50Il0gdGggewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgoqW2NsYXNzfj0iaW1wb3J0YW50Il0gdGFibGUgIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi8qIE1pc2UgZW4g6XZpZGVuY2WgOiB0ZXh0ZSBs6WfocmVtZW50IHBsdXMgZ3JhbmQgKi8KLyogSGlnaGxpZ2h0czogc2xpZ2h0bHkgbGFyZ2VyIHRleHRzICovCgoqW2NsYXNzfj0iaGlnaGxpZ2h0cyJdIHsKICAgIGZvbnQtc2l6ZTogIDExMCU7Cn0KCi8qIE5vdGWgOiBjYWRyZSBibGV1IGV0IGZvbmQgYmxldSBjbGFpciAqLwovKiBOb3RlczogYmx1ZSBib3JkZXIgYW5kIGxpZ2h0IGJsdWUgYmFja2dyb3VuZCAqLwoKKltjbGFzc349Im5vdGUiXSAgIHsKICAgIGJvcmRlcjogc29saWQgMnB4ICM3MDk5QzU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGZmOwogICAgcGFkZGluZzogMWVtIDZweCAxZW0gOwogICAgbWFyZ2luOiA1cHg7Cn0KCipbY2xhc3N+PSJub3RlIl0gdGggewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZQp9CgoqW2NsYXNzfj0ibm90ZSJdIHRhYmxlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZmY7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi8qIEFzdHVjZaA6IGNhZHJlIHZlcnQgZXQgZm9uZCB2ZXJ0IGNsYWlyICovCi8qIFRpcDogZ3JlZW4gYm9yZGVyIGFuZCBsaWdodCBncmVlbiBiYWNrZ3JvdW5kICovCgoqW2NsYXNzfj0idGlwIl0gewogICAgYm9yZGVyOiBzb2xpZCAycHggIzAwZmYwMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGZmZmY7CiAgICBwYWRkaW5nOiAxZW0gNnB4IDFlbSA7CiAgICBtYXJnaW46IDVweDsKfQoKKltjbGFzc349InRpcCJdIHRoIHsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCipbY2xhc3N+PSJ0aXAiXSB0YWJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmZmZmOwogICAgYm9yZGVyOiBub25lOwp9CgovKiBBdmVydGlzc2VtZW50oDogY2FkcmUgcm91Z2UgZXQgZm9uZCByb3VnZSBjbGFpciAqLwovKiBXYXJuaW5nOiByZWQgYm9yZGVyIGFuZCBsaWdodCByZWQgYmFja2dyb3VuZCAqLwoKKltjbGFzc349Indhcm5pbmciXSB7CiAgICBib3JkZXI6IHNvbGlkIDJweCAjZmYwMDAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjBmMDsgCiAgICBwYWRkaW5nOiAxZW0gNnB4IDFlbSA7CiAgICBtYXJnaW46IDVweDsKfQoKKltjbGFzc349Indhcm5pbmciXSB0aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CiAgICAgICAgICAgICAgICAgICAgCgoqW2NsYXNzfj0id2FybmluZyJdIHRhYmxlIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYwZjA7CiAgICBib3JkZXI6IG5vbmU7Cn0KCi8qIEZpbiAqLwovKiBUaGUgRW5kICovCgo=